Rust开发神器Cargo:构建与管理一体化
Cargo 是 Rust 官方的项目管理和构建工具
Cargo = Rust 的包管理器 + 构建工具 + 项目脚手架 + 测试工具
对比JAVA里的 Maven,那么 Cargo 在 Rust 里的地位就有点像:
| Java 生态 | Rust 生态 |
|---|---|
| Maven / Gradle | Cargo |
| pom.xml | Cargo.toml |
| Maven dependency | crate dependency |
| mvn compile | cargo build |
| mvn test | cargo test |
| mvn package | cargo build --release |
1. Cargo 主要解决什么问题?
写 Rust 项目时,Cargo 主要帮你做这些事:
1)创建项目
cargo new hello_rust
会生成一个标准 Rust 项目:
hello_rust/
├── Cargo.toml
└── src/
└── main.rs
其中:
[package]
name = "hello_rust"
version = "0.1.0"
edition = "2021"
[dependencies]
Cargo.toml 就是项目配置文件,类似 Maven 的 pom.xml。
2)编译项目
cargo build
Cargo 会自动调用 rustc 编译器,把项目编译出来。
默认生成的是调试版本,路径一般是:
target/debug/项目名
如果要生成正式发布版本:
cargo build --release
生成路径是:
target/release/项目名
--release 会开启优化,速度更快,但是编译更慢。
3)运行项目
cargo run
这个命令相当于:
cargo build
./target/debug/项目名
也就是 先编译,再运行。
4)管理依赖
Rust 生态里的第三方库叫 crate。
比如你想使用随机数库 rand,就在 Cargo.toml 里写:
[dependencies]
rand = "0.8"
然后代码里可以这样用:
use rand::Rng;
fn main() {
let num = rand::thread_rng().gen_range(1..=100);
println!("{}", num);
}
Cargo 会自动下载依赖、解析版本、编译依赖。
5)测试项目
cargo test
Cargo 会自动寻找项目里的测试函数并运行。
例如:
fn add(a: i32, b: i32) -> i32 {
a + b
}
#[test]
fn test_add() {
assert_eq!(add(1, 2), 3);
}
运行:
cargo test
6)检查语法和类型
cargo check
这个命令很常用。
它只检查代码能不能通过编译,但不真正生成可执行文件,所以速度比 cargo build 快很多。
日常开发时经常用:
cargo check
2. Cargo.toml 是什么?
Cargo.toml 是 Cargo 项目的核心配置文件。
一个简单例子:
[package]
name = "kvstore"
version = "0.1.0"
edition = "2021"
[dependencies]
tokio = "1"
serde = "1"
serde_json = "1"
含义是:
[package] 项目自身的信息
[dependencies] 项目依赖的第三方库
如果你做 RustFS、KVStore、网络编程项目,后面经常会看到:
tokio = "1"
tokio 是 Rust 里很重要的异步运行时,类似做高并发网络服务时的基础设施。
3. Cargo.lock 是什么?
你还会看到一个文件:
Cargo.lock
它记录了当前项目实际使用的依赖版本。
比如 Cargo.toml 写:
rand = "0.8"
实际可能下载的是:
rand 0.8.5
这个精确版本会记录在 Cargo.lock 里。
作用是:
保证别人拉你的项目后,使用的依赖版本和你一致,避免“我这里能跑,你那里跑不了”。
4. 常用 Cargo 命令总结
你先记这些就够了:
cargo new 项目名 # 创建新项目
cargo build # 编译项目
cargo build --release # 编译发布版本
cargo run # 编译并运行
cargo check # 快速检查代码
cargo test # 运行测试
cargo clean # 清理编译产物
如果你要看项目文档:
cargo doc --open
5. Cargo 和 rustc 的关系
rustc 是 Rust 编译器。
cargo 是项目管理工具。
可以这样理解:
rustc:负责真正编译单个 Rust 文件
Cargo:负责管理整个 Rust 项目,然后调用 rustc
平时你基本不会直接用:
rustc main.rs
而是使用:
cargo build
cargo run
因为真实项目里有很多源码文件、依赖库、测试、编译配置,手动用 rustc 会非常麻烦。
6. Cargo与C++对比
| C++ 项目 | Rust 项目 |
|---|---|
| Makefile / CMake | Cargo |
| g++ | rustc |
| vcpkg / 手动安装库 | Cargo dependencies |
| CMakeLists.txt | Cargo.toml |
| build/ | target/ |
所以 Cargo 最大的好处是:
它把 C++ 里“建项目、写 Makefile/CMake、找库、配链接参数、管理依赖版本”这些杂活都统一处理了。
这也是 Rust 开发体验比 C/C++ 更现代的一个重要原因。
更多推荐

所有评论(0)