Cargo 与包管理
Cargo 是 Rust 的构建、依赖与工具链编排入口:crate 是编译单元(库或可执行文件);package 包含 Cargo.toml 与一个或多个 crate。模块 mod 组织源码树,与本书其它章节中的类型、泛型与Trait、错误处理 等在同一工程内协作。
常用命令
| 命令 | 作用 |
|---|---|
cargo new name / --lib | 新建包 |
cargo build | 编译(默认 dev) |
cargo build --release | 优化发布构建 |
cargo run | 构建并运行默认 binary |
cargo test | 运行测试与 doctest |
cargo doc --open | 生成并打开文档 |
cargo clippy | 更多 lint(需安装 clippy) |
cargo fmt | 格式化(rustfmt) |
Cargo.toml 要点
[package]
name = "my-app"
version = "0.1.0"
edition = "2021"
[dependencies]
serde = { version = "1", features = ["derive"] }
[dev-dependencies]- edition:语言行为规范(
2015/2018/2021/ …)。 - 语义化版本:
^、~、精确版本号等修饰符见 Cargo 手册对应章节。 features:条件编译与可选依赖。workspace:多包 monorepo 共用锁定与构建缓存。
模块与文件约定
- crate 根:
src/main.rs(binary)或src/lib.rs(library)。 mod foo;:可对应src/foo.rs或src/foo/mod.rs。pub use:重导出,塑造对外 API 表面。
use 路径
- 绝对路径(
crate::、super::、self::)与 2018+ 外部 crate 名 直接作根。 pub(crate)等限制可见性域。
与语言特性协作
- 集成测试:
tests/*.rs,独立 crate 仅能通过公有 API 测 library。 - 基准:
criterion等常作 dev-dependency 或独立 bench target。