为什么要为rand软件包下载libc的货物?

法拉米

我正在学习生锈。作为猜谜游戏教程的一部分,我下载了兰特板条箱。我担心依赖的混乱,并且不希望下载比绝对必要更多的软件包。

因此,我将设置Cargo.toml为:

[dependencies]
rand = "=0.5.5"

但是,我注意到下载了3个不同版本的rand_core以及libc。

    Updating crates.io index
  Downloaded rand_core v0.3.1
  Downloaded rand_core v0.4.2
  Downloaded rand v0.5.5
  Downloaded rand_core v0.2.2
  Downloaded libc v0.2.87
  Downloaded 5 crates (702.2 KB) in 1.17s
   Compiling libc v0.2.87
   Compiling rand_core v0.4.2
   Compiling rand_core v0.3.1
   Compiling rand_core v0.2.2
   Compiling rand v0.5.5
   Compiling guessing_game v0.1.0 (/home/user/projects/learn-rust/guessing_game)
    Finished dev [unoptimized + debuginfo] target(s) in 26.19s
     Running `target/debug/guessing_game`

在crates.io上转到rand页面0.5.5依赖项页面,发现:

  1. 兰特0.5.5取决于
  2. rand_core ^ 0.2(我下载了0.2.2)取决于
  3. rand_core ^ 0.3(我下载了0.3.1)取决于
  4. rand_core ^ 0.4(我下载了0.4.2)。

但是,任何地方都不需要依赖libc。

为什么要下载libc?

姆德雷科

您可以cargo tree -i <CRATE>用来查看什么取决于特定的板条箱:

$ cargo tree -i libc
libc v0.2.87
└── rand v0.5.5
    └── guessing_game v0.1.0 (...)

因此,它 randrand 0.5.5依赖项页面确实说这rand_core是唯一需要的板条箱,但libc被列为optional这意味着它是由功能控制的。

您可以查看的输出cargo tree -i libc -e features以查看已启用的功能,但是它并不是很简单,因为它显示包装箱中启用的所有功能rand,而不仅仅是启用了的功能libc

唯一可以肯定的方法是查看板条箱Cargo.toml

[features]
default = ["std"]
nightly = ["i128_support"]
std = ["rand_core/std", "alloc", "libc", "winapi", "cloudabi", "fuchsia-zircon"]
alloc = ["rand_core/alloc"]
i128_support = []
serde1 = ["serde", "serde_derive", "rand_core/serde1"]

[dependencies]
rand_core = { path = "rand_core", version = "0.2", default-features = false }
log = { version = "0.4", optional = true }
serde = { version = "1", optional = true }
serde_derive = { version = "1", optional = true }

[target.'cfg(unix)'.dependencies]
libc = { version = "0.2", optional = true }

特征libc门和目标门也是如此。它仅依赖于unix平台,并且仅在"std"启用功能(由by启用)时使用"default"您可以default-features = false选择不使用它,但是要警告它最终将禁用大多数板条箱。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

软件包下载失败,“未设置GOPATH”。为什么?

解决损坏的apt-get软件包下载

使用C#的Nuget软件包下载计数

如何从PPA找出软件包下载计数?

为什么下载时不自动安装软件包?

为什么“ apt”不再存储已下载的软件包?

为什么在本地安装deb软件包时重新下载deb软件包

为什么Eclipse 4.7.2没有增量包下载

将Excel软件包下载为文件而不创建物理文件?

使用pip3软件包下载另一个Python版本

软件包下载之前计算所需磁盘空间的方法

在哪里可以找到有关软件包下载和依赖关系的统计信息?

为什么我不能通过packagist下载我的软件包?

为什么针对amd64和i386的突触下载软件包?

使用pip下载Python软件包时,为什么会得到很多wheel文件

为什么Ubuntu不需要下载您以前在系统上安装的软件包

为什么在16.04中更新时易于重新下载软件包列表?

NuGet可以在同一解决方案中使用每个项目的软件包下载路径吗?

将具有所有依赖项的Nuget软件包下载到文件夹的命令

为什么每次运行程序时math / rand软件包中的rand.Intn()函数都会生成相同的随机数序列?

为什么软件包缺少“AudioEncoding”?

为什么我不能从Windows上的pip下载我的软件包的最新版本?

为什么软件包的总安装大小通常是下载的二进制文件的大小?

究竟是什么导致 Debian 想要为“自动删除”放置软件包?

如何将require.txt中提到的所有python软件包下载到Linux中的文件夹中?

无法下载软件包

为什么16.04.4软件包早于16.04.1软件包?

点子冻结的软件包为什么不显示点子安装的软件包?

为什么即使升级了软件包,软件包也能正常运行?