依赖 (Dependencies)

一个包可以通过在 Cargo.toml 文件的 [dependencies] 段列出其他包来依赖它们。
最常见的依赖声明方式是提供名称和版本:

[dependencies]
thiserror = "1"

这会把 thiserror 作为依赖加入你的包,最低版本为 1.0.0thiserror 会从 crates.io 拉取——这是 Rust 官方包注册中心。 当你运行 cargo build 时,cargo 会经过几个阶段:

  • 依赖解析 (Dependency resolution)
  • 下载依赖 (Downloading the dependencies)
  • 编译你的项目(你的代码与所有依赖)

如果你的项目有 Cargo.lock 文件且 manifest 文件没有变化,依赖解析会被跳过。 锁文件 (lockfile) 在一次成功的依赖解析后由 cargo 自动生成:它包含项目所用所有依赖的精确版本,确保不同构建(例如 CI)之间使用一致的版本。如果你和多个开发者协作,应当把 Cargo.lock 文件提交到版本控制系统。

你可以用 cargo updateCargo.lock 更新为所有依赖的最新(兼容)版本。

路径依赖 (Path dependencies)

你也可以用路径 (path) 指定依赖。这在你同时开发多个本地包时很有用。

[dependencies]
my-library = { path = "../my-library" }

路径相对于声明依赖的那个包的 Cargo.toml 文件。

其他来源 (Other sources)

更多关于依赖来源以及如何在 Cargo.toml 中指定它们的细节,请查看 Cargo 文档

开发依赖 (Dev dependencies)

你也可以声明仅在开发时需要的依赖——它们只会在你执行 cargo test 时被拉入。
这些依赖放在 Cargo.toml[dev-dependencies] 段:

[dev-dependencies]
static_assertions = "1.1.0"

我们在本书中已经用了几个这类依赖来缩短测试代码。

原文链接:英文原文