Cargo 包管理器完全指南
TL;DR: Cargo 是 Rust 的构建系统和包管理器,处理代码构建、依赖管理和任务自动化。本指南涵盖从安装到高级使用的完整流程。
目录
- 安装与配置
- 创建第一个项目
- 核心命令
- 依赖管理
- 项目类型
- 测试与检查
- 优化构建
- 高级技巧
安装与配置
自动安装
1 2 3 4 5
| curl https://sh.rustup.rs -sSf | sh
sh ./rustup.rs
|
环境配置
1 2 3 4 5 6 7 8 9
| source $HOME/.cargo/env
export PATH="$HOME/.cargo/bin:$PATH"
rustc --version cargo --version
|
包管理器安装(Linux)
1 2 3 4 5
| sudo apt install rust cargo
sudo dnf install rust cargo
|
创建第一个项目
二进制项目(默认)
1 2
| cargo new hello_opensource cd hello_opensource
|
项目结构:
1 2 3 4
| hello_opensource/ ├── Cargo.toml # 项目配置 └── src/ └── main.rs # 入口文件
|
库项目
1
| cargo new --lib libhello
|
结构差异:
- 生成
src/lib.rs 而非 src/main.rs
- 包含默认测试示例
核心命令
构建与运行
| 命令 |
功能 |
输出目录 |
使用场景 |
cargo build |
编译项目 |
target/debug/ |
开发调试 |
cargo run |
编译并运行 |
target/debug/ |
快速执行 |
cargo check |
仅检查语法 |
无二进制文件 |
快速验证 |
cargo clean |
清理构建产物 |
删除 target/ |
释放空间 |
时间对比示例
1 2 3 4 5
| time cargo build
time cargo check
|
依赖管理
添加依赖
编辑 Cargo.toml:
1 2 3
| [dependencies] rand = "0.3.14" serde = "1.0"
|
更新依赖
1 2 3 4 5 6 7 8
| cargo update
cargo update -p rand
cargo tree
|
依赖解析机制
Cargo.lock:锁定精确版本,确保可重现构建
- 自动处理传递依赖(如
rand 依赖 libc)
项目类型对比
| 类型 |
命令 |
入口文件 |
输出 |
适用场景 |
| 二进制 |
cargo new |
main.rs |
可执行文件 |
应用程序 |
| 库 |
cargo new --lib |
lib.rs |
库文件 |
共享代码 |
测试与检查
运行测试
1 2 3 4 5 6 7 8
| cargo test
cargo test test_name
cargo test --doc
|
默认测试示例
1 2 3 4 5 6 7
| #[cfg(test)] mod tests { #[test] fn it_works() { assert_eq!(2 + 2, 4); } }
|
测试输出示例
1 2 3 4
| running 1 test test tests::it_works ... ok
test result: ok. 1 passed; 0 failed; 0 ignored
|
优化构建
开发构建(默认)
发布构建
1 2 3 4
| cargo build --release
|
性能对比
| 构建类型 |
编译时间 |
运行时性能 |
二进制大小 |
调试信息 |
| Debug |
快 |
较慢 |
较大 |
包含 |
| Release |
慢 |
快 |
小 |
移除 |
高级技巧
详细模式
1 2 3 4 5
| cargo build -v
cargo clean -v
|
构建外部包
1 2 3
| git clone <repo-url> cd <package-folder> cargo build
|
增量编译
- 默认启用,加速重新编译
- 缓存位于
target/debug/incremental/
实用命令集合
1 2 3 4 5 6 7 8 9 10 11
| cargo fmt
cargo clippy
cargo doc --open
cargo publish
|
最佳实践
开发流程
- 编码阶段:使用
cargo check 快速验证
- 调试阶段:使用
cargo build 生成调试信息
- 发布阶段:使用
cargo build --release 优化性能
- 测试阶段:使用
cargo test 确保质量
项目维护
- 定期运行
cargo update 更新依赖
- 使用
cargo outdated 检查过期依赖
- 发布前执行
cargo clean && cargo build --release
磁盘管理
- 使用
cargo clean 清理中间文件
- 定期清理
~/.cargo/registry 缓存
- 使用
cargo sweep 清理旧构建产物
常见问题
如何处理版本冲突?
Cargo 自动解决依赖版本冲突,遵循语义化版本规则。使用 cargo tree 查看依赖关系图。
为什么编译这么慢?
- 首次构建需下载和编译依赖
- Release 模式优化级别高
- 解决方案:使用
cargo check 快速验证
如何加速 CI/CD 构建?
- 缓存
~/.cargo 和 target/ 目录
- 使用
cargo check 代替 cargo build 进行快速验证
Tags: #rust #cargo #package-manager #build-system #development #tutorial #dependency-management