cargo

  • 上一章的rustc在实际操作中很麻烦,所以需要使用cargo包管理器。cargo可以妥善处理第三方库的问题,这也造就了cargo在Rust中具有独特的优势。

依赖

  • 相对于上一部分使用rustc,使用cargo创建新的项目会更简单
1
2
cargo new foo
cargo new --lib foo
  • 所有的配置文件在Cargo.toml之中:
1
2
3
4
5
6
7
8
9
10
[package]
name = "foo"
version = "0.1.0"
authors = ["mark"]

[dependencies]
clap = "2.27.1" # 来自 crates.io
rand = { git = "https://github.com/rust-lang-nursery/rand" } # 来自网上的仓库
bar = { path = "../bar" } # 来自本地文件系统的路径

约定规范

  • 可以在bin文件夹中添加更多个二进制可执行文件。
1
2
3
4
5
6
7
foo
├── Cargo.toml
└── src
├── main.rs
└── bin
└── my_other_bin.rs

测试

  • 单个测试放在指定文件夹中,多个测试模块需要放在test目录之下。
1
2
3
4
5
6
7
8
foo
├── Cargo.toml
├── src
│ └── main.rs
└── tests
├── my_test.rs
└── my_other_test.rs

  • 运行测试的方法是:
1
cargo tests
  • 测试单个模块使用:
1
cargo test test1

构建脚本

1
2
3
4
[package]
...
build = "build.rs"

  • 这个时候,cargo会优先在项目目录中查找build.rs文件。