使用指南
注: 类比Java中的maven或者gradle?
为此,cargo做了四个事情:
- 引入两个metadata文件,带有各种项目信息
- 获取并构建项目的依赖
- 用正确的参数调用或者其他构建工具来构建项目
- 引入约定,简化Rust项目的工作
cargo使用约定的文件位置来简化项目管理。
Cargo.toml
和Cargo.lock
文件存储在项目(或者package)的根目录下- 默认类库文件是
src/lib.rs
- 默认可执行文件是
src/main.rs
- 其他可执行文件存放为
src/bin/*.rs
- 集成测试在
tests
文件夹(单元测试和他们测试的文件在一起) - 示例在
examples
文件夹 - Benchmarks在
benches
文件夹.
更多信息,请见 manifest description
cargo.lock
文件包含项目使用的所有依赖的确切信息。
cargo.toml
: 描述项目的依赖,由开发人员编写cargo.lock
: 包含项目依赖的确切信息。由cargo维护,不应该手工编辑
在版本仓库中保存的策略也不同:
- 如果是类库,给其他项目使用,则将
cargo.lock
加入.gitignore
,不要提交到仓库 - 如果是可执行文件,如命令行工具或者应用,应该将
cargo.lock
提交到仓库中
当依赖描述为git仓库时,默认是”master”分支的最新提交:
name = "hello_world"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
[dependencies]
cargo将会在cargo.lock中展开为
展开就会固定为这个当前时刻的这个具体commit。可以通过cargo update
命令进行更新。
$ cargo update # 更新所有依赖
$ cargo update -p rand # 仅仅更新“rand”依赖
cargo update
命令会更新cargo.lock文件。
这里的-p
参数是package id,”rand”是package id的简短写法,查看的详情。
使用cargo test
命令运行测试。
cargo在两个地方查找测试来运行:
src
目录:单元测试tests
目录:集成测试
可以在cargo test
命令中增加一个filter,通过测试的名字来过滤出要执行的测试:
Cargo在单个工作空间的所有包之间共享构建工件。目前,Cargo不会在不同的工作空间之间共享构建结果,但通过第三方工具可以实现类似的结果,sccache.