Cargo 项目管理
学习目标
- 理解 Cargo.toml 的结构
- 掌握
cargo build、cargo run、cargo check 的区别
- 学会添加和管理依赖
- 理解 debug 和 release 构建模式
核心概念
Cargo.toml 配置文件
[package]
name = "my_project"
version = "0.1.0"
edition = "2021"
authors = ["You <you@example.com>"]
description = "我的项目"
[dependencies]
serde = "1.0"
serde_json = "1.0"
tokio = { version = "1", features = ["full"] }
核心命令
cargo new my_app
cargo new my_lib --lib
cargo build
cargo build --release
cargo run
cargo check
cargo test
cargo doc --open
Debug vs Release
cargo build
cargo build --release
依赖管理
添加依赖
cargo add serde --features derive
cargo add tokio --features full
Cargo.lock
Cargo.lock 锁定依赖的精确版本
- 二进制项目:提交到 git(保证团队一致)
- 库项目:不提交(让使用者决定版本)
常用依赖
[dependencies]
serde = { version = "1", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
reqwest = { version = "0.12", features = ["json"] }
clap = { version = "4", features = ["derive"] }
anyhow = "1"
实践练习
练习 1:创建并运行项目
cargo new cargo_practice
cd cargo_practice
cargo run
练习 2:添加依赖并使用
[dependencies]
chrono = "0.4"
use chrono::Local;
fn main() {
let now = Local::now();
println!("当前时间: {}", now.format("%Y-%m-%d %H:%M:%S"));
}
练习 3:对比构建速度
time cargo build
time cargo build --release
time cargo check
常见错误
1. 依赖版本冲突
[dependencies]
lib_a = "1.0"
lib_b = "2.0"
2. 忘记 --features
3. 项目名用连字符
name = "my-project"
name = "my_project"
小结
| 命令 | 用途 |
|---|
cargo new | 创建新项目 |
cargo build | 编译 |
cargo run | 编译并运行 |
cargo check | 快速语法检查 |
cargo add | 添加依赖 |
cargo test | 运行测试 |
| 文件 | 说明 |
|---|
Cargo.toml | 项目配置和依赖声明 |
Cargo.lock | 依赖版本锁定(二进制项目提交) |
src/main.rs | 入口文件 |
src/lib.rs | 库入口(库项目) |