依赖管理
包可以通过在它的Cargo.toml
文件的[dependencies]
部分列出其他包来依赖它们。指定依赖最常用的方式是提供其名称和版本号:
[dependencies]
thiserror = "1"
这样会将thiserror
作为依赖添加到你的包中,其最低版本为1.0.0
。thiserror
将会从Rust的官方包注册中心crates.io获取。当你运行cargo build
时,cargo
会经历几个阶段:
- 依赖解析
- 下载依赖
- 编译项目(包括你自己的代码和依赖)
如果你的项目有Cargo.lock
文件,并且你的清单文件未发生变化,那么依赖解析步骤将被跳过。锁定文件是cargo
在成功完成一轮依赖解析后自动生成的,它包含了项目中所有依赖的确切版本,用于确保在不同构建环境(例如CI)中始终使用相同版本的依赖。如果你正在与多位开发者共同开发项目,应当将Cargo.lock
文件提交到版本控制系统中。
你可以使用cargo update
命令来更新Cargo.lock
文件,使其包含所有依赖的最新(兼容)版本。
路径依赖
你也可以通过路径来指定依赖,这对于处理多个本地包时非常有用。
[dependencies]
my-library = { path = "../my-library" }
这个路径是相对于声明依赖的包的Cargo.toml
文件而言的。
其他来源
查阅Cargo文档以了解更多关于如何在Cargo.toml
文件中指定依赖以及从何处获取依赖的信息。
开发依赖
你还可以指定仅在开发过程中需要的依赖项,也就是说,只有在运行cargo test
时它们才会被引入。这类依赖应放在Cargo.toml
文件的[dev-dependencies]
部分:
[dev-dependencies]
static_assertions = "1.1.0"
本书中,我们已经使用了几个这样的依赖来简化测试代码。
参考资料
- 本节练习位于
exercises/05_ticket_v2/11_dependencies