快速参考卡 🟢
命令速查表
# ─── 构建脚本 ───
cargo build # 先编译 build.rs,然后编译 crate
cargo build -vv # 详细模式——显示 build.rs 输出
# ─── 跨平台编译 ───
rustup target add x86_64-unknown-linux-musl
cargo build --release --target x86_64-unknown-linux-musl
cargo zigbuild --release --target x86_64-unknown-linux-gnu.2.17
cross build --release --target aarch64-unknown-linux-gnu
# ─── 基准测试 ───
cargo bench # 运行所有基准测试
cargo bench -- parse # 运行匹配 "parse" 的基准测试
cargo flamegraph -- --args # 从二进制文件生成火焰图
perf record -g ./target/release/bin # 记录性能数据
perf report # 交互式查看性能数据
# ─── 覆盖率 ───
cargo llvm-cov --html # HTML 报告
cargo llvm-cov --lcov --output-path lcov.info
cargo llvm-cov --workspace --fail-under-lines 80
cargo tarpaulin --out Html # 替代工具
# ─── 安全验证 ───
cargo +nightly miri test # 在 Miri 下运行测试
MIRIFLAGS="-Zmiri-disable-isolation" cargo +nightly miri test
valgrind --leak-check=full ./target/debug/binary
RUSTFLAGS="-Zsanitizer=address" cargo +nightly test -Zbuild-std --target x86_64-unknown-linux-gnu
# ─── 审计与供应链 ───
cargo audit # 已知漏洞扫描
cargo audit --deny warnings # 有任何建议时失败
cargo deny check # 许可证 + 建议 + 禁止 + 来源检查
cargo deny list # 列出依赖树中的所有许可证
cargo vet # 供应链信任验证
cargo outdated --workspace # 查找过时的依赖
cargo semver-checks # 检测破坏性 API 变更
cargo geiger # 统计依赖树中的 unsafe 使用
# ─── 二进制优化 ───
cargo bloat --release --crates # 每个 crate 的大小贡献
cargo bloat --release -n 20 # 20 个最大的函数
cargo +nightly udeps --workspace # 查找未使用的依赖
cargo machete # 快速未使用依赖检测
cargo expand --lib module::name # 查看宏展开
cargo msrv find # 发现最低 Rust 版本
cargo clippy --fix --workspace --allow-dirty # 自动修复 lint 警告
# ─── 编译时优化 ───
export RUSTC_WRAPPER=sccache # 共享编译缓存
sccache --show-stats # 缓存命中率统计
cargo nextest run # 更快的测试运行器
cargo nextest run --retries 2 # 重试不稳定的测试
# ─── 平台工程 ───
cargo check --target thumbv7em-none-eabihf # 验证 no_std 构建
cargo build --target x86_64-pc-windows-gnu # 跨平台编译到 Windows
cargo xwin build --target x86_64-pc-windows-msvc # MSVC ABI 跨平台编译
cfg!(target_os = "linux") # 编译时 cfg(计算为 bool)
# ─── 发布 ───
cargo release patch --dry-run # 预览发布
cargo release patch --execute # 升级版本、提交、打标签、发布
cargo dist plan # 预览分发产物
决策表:何时使用哪个工具
| 目标 | 工具 | 何时使用 |
|---|---|---|
| 嵌入 git 哈希 / 构建信息 | build.rs | 二进制文件需要可追溯性 |
| 用 Rust 编译 C 代码 | build.rs 中的 cc crate | FFI 到小型 C 库 |
| 从 schema 生成代码 | prost-build / tonic-build | Protobuf, gRPC, FlatBuffers |
| 链接系统库 | build.rs 中的 pkg-config | OpenSSL, libpci, systemd |
| 静态 Linux 二进制文件 | --target x86_64-unknown-linux-musl | 容器/云部署 |
| 定位旧版 glibc | cargo-zigbuild | RHEL 7, CentOS 7 兼容性 |
| ARM 服务器二进制文件 | cross 或 cargo-zigbuild | Graviton/Ampere 部署 |
| 统计基准测试 | Criterion.rs | 性能回归检测 |
| 快速性能检查 | Divan | 开发时性能分析 |
| 查找热点 | cargo flamegraph / perf | 基准测试识别慢代码后 |
| 行/分支覆盖率 | cargo-llvm-cov | CI 覆盖率门控、差距分析 |
| 快速覆盖率检查 | cargo-tarpaulin | 本地开发 |
| Rust UB 检测 | Miri | 纯 Rust unsafe 代码 |
| C FFI 内存安全 | Valgrind memcheck | 混合 Rust/C 代码库 |
| 数据竞争检测 | TSan 或 Miri | 并发 unsafe 代码 |
| 缓冲区溢出检测 | ASan | unsafe 指针运算 |
| 泄漏检测 | Valgrind 或 LSan | 长时间运行的服务 |
| 本地 CI 等价物 | cargo-make | 开发者工作流自动化 |
| 提交前检查 | cargo-husky 或 git hooks | 推送前捕获问题 |
| 自动化发布 | cargo-release + cargo-dist | 版本管理 + 分发 |
| 依赖审计 | cargo-audit / cargo-deny | 供应链安全 |
| 许可证合规 | cargo-deny (licenses) | 商业/企业项目 |
| 供应链信任 | cargo-vet | 高安全环境 |
| 查找过时依赖 | cargo-outdated | 定期维护 |
| 检测破坏性变更 | cargo-semver-checks | 库 crate 发布 |
| 依赖树分析 | cargo tree --duplicates | 去重和精简依赖图 |
| 二进制大小分析 | cargo-bloat | 大小受限的部署 |
| 查找未使用依赖 | cargo-udeps / cargo-machete | 精简编译时间和大小 |
| LTO 调优 | lto = true 或 "thin" | Release 二进制优化 |
| 大小优化二进制 | opt-level = "z" + strip = true | 嵌入式 / WASM / 容器 |
| Unsafe 使用审计 | cargo-geiger | 安全策略执行 |
| 宏调试 | cargo-expand | Derive / macro_rules 调试 |
| 更快链接 | mold 链接器 | 开发者内部循环 |
| 编译缓存 | sccache | CI 和本地构建速度 |
| 更快测试 | cargo-nextest | CI 和本地测试速度 |
| MSRV 合规 | cargo-msrv | 库发布 |
no_std 库 | #![no_std] + default-features = false | 嵌入式,UEFI, WASM |
| Windows 跨平台编译 | cargo-xwin / MinGW | Linux → Windows 构建 |
| 平台抽象 | #[cfg] + trait 模式 | 多操作系统代码库 |
| Windows API 调用 | windows-sys / windows crate | 原生 Windows 功能 |
| 端到端计时 | hyperfine | 完整二进制基准测试、前后对比 |
| 基于属性的测试 | proptest | 边界情况发现、解析器鲁棒性 |
| 快照测试 | insta | 大型结构化输出验证 |
| 覆盖率引导模糊测试 | cargo-fuzz | 解析器崩溃发现 |
| 并发模型检查 | loom | 无锁数据结构、原子序 |
| Feature 组合测试 | cargo-hack | 具有多个 #[cfg] feature 的 crate |
| 快速 UB 检查(近原生) | cargo-careful | CI 安全门控,比 Miri 更轻量 |
| 保存时自动重建 | cargo-watch | 开发者内部循环、紧密反馈 |
| Workspace 文档 | cargo doc + rustdoc | API 发现、入职、文档链接 CI |
| 可重现构建 | --locked + SOURCE_DATE_EPOCH | 发布完整性验证 |
| CI 缓存调优 | Swatinem/rust-cache@v2 | 构建时间减少(冷 → 缓存) |
| Workspace lint 策略 | [workspace.lints] 在 Cargo.toml 中 | 所有 crate 的一致 Clippy/编译器 lint |
| 自动修复 lint 警告 | cargo clippy --fix | 自动化清理琐碎问题 |
延伸阅读
作为 Rust Patterns 和 Type-Driven Correctness 的配套参考生成
Version 1.3 — 新增 cargo-hack, cargo-careful, cargo-watch, cargo doc, 可重现构建,CI 缓存策略,capstone 练习,以及完整的章节依赖图。