Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

快速参考卡 🟢

命令速查表

# ─── 构建脚本 ───
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 crateFFI 到小型 C 库
从 schema 生成代码prost-build / tonic-buildProtobuf, gRPC, FlatBuffers
链接系统库build.rs 中的 pkg-configOpenSSL, libpci, systemd
静态 Linux 二进制文件--target x86_64-unknown-linux-musl容器/云部署
定位旧版 glibccargo-zigbuildRHEL 7, CentOS 7 兼容性
ARM 服务器二进制文件cross 或 cargo-zigbuildGraviton/Ampere 部署
统计基准测试Criterion.rs性能回归检测
快速性能检查Divan开发时性能分析
查找热点cargo flamegraph / perf基准测试识别慢代码后
行/分支覆盖率cargo-llvm-covCI 覆盖率门控、差距分析
快速覆盖率检查cargo-tarpaulin本地开发
Rust UB 检测Miri纯 Rust unsafe 代码
C FFI 内存安全Valgrind memcheck混合 Rust/C 代码库
数据竞争检测TSan 或 Miri并发 unsafe 代码
缓冲区溢出检测ASanunsafe 指针运算
泄漏检测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-expandDerive / macro_rules 调试
更快链接mold 链接器开发者内部循环
编译缓存sccacheCI 和本地构建速度
更快测试cargo-nextestCI 和本地测试速度
MSRV 合规cargo-msrv库发布
no_std 库#![no_std] + default-features = false嵌入式,UEFI, WASM
Windows 跨平台编译cargo-xwin / MinGWLinux → Windows 构建
平台抽象#[cfg] + trait 模式多操作系统代码库
Windows API 调用windows-sys / windows crate原生 Windows 功能
端到端计时hyperfine完整二进制基准测试、前后对比
基于属性的测试proptest边界情况发现、解析器鲁棒性
快照测试insta大型结构化输出验证
覆盖率引导模糊测试cargo-fuzz解析器崩溃发现
并发模型检查loom无锁数据结构、原子序
Feature 组合测试cargo-hack具有多个 #[cfg] feature 的 crate
快速 UB 检查(近原生)cargo-carefulCI 安全门控,比 Miri 更轻量
保存时自动重建cargo-watch开发者内部循环、紧密反馈
Workspace 文档cargo doc + rustdocAPI 发现、入职、文档链接 CI
可重现构建--locked + SOURCE_DATE_EPOCH发布完整性验证
CI 缓存调优Swatinem/rust-cache@v2构建时间减少(冷 → 缓存)
Workspace lint 策略[workspace.lints] 在 Cargo.toml 中所有 crate 的一致 Clippy/编译器 lint
自动修复 lint 警告cargo clippy --fix自动化清理琐碎问题

延伸阅读

主题资源
Cargo 构建脚本Cargo Book — Build Scripts
跨平台编译Rust Cross-Compilation
cross 工具cross-rs/cross
cargo-zigbuildcargo-zigbuild docs
Criterion.rsCriterion User Guide
DivanDivan docs
cargo-llvm-covcargo-llvm-cov
cargo-tarpaulintarpaulin docs
MiriMiri GitHub
Rust 中的 Sanitizerrustc Sanitizer docs
cargo-makecargo-make book
cargo-releasecargo-release docs
cargo-distcargo-dist docs
性能引导优化Rust PGO guide
火焰图cargo-flamegraph
cargo-denycargo-deny docs
cargo-vetcargo-vet docs
cargo-auditcargo-audit
cargo-bloatcargo-bloat
cargo-udepscargo-udeps
cargo-geigercargo-geiger
cargo-semver-checkscargo-semver-checks
cargo-nextestnextest docs
sccachesccache
mold 链接器mold
cargo-msrvcargo-msrv
LTOrustc Codegen Options
Cargo ProfilesCargo Book — Profiles
no_stdRust Embedded Book
windows-sys cratewindows-rs
cargo-xwincargo-xwin docs
cargo-hackcargo-hack
cargo-carefulcargo-careful
cargo-watchcargo-watch
Rust CI 缓存Swatinem/rust-cache
Rustdoc 手册Rustdoc Book
条件编译Rust Reference — cfg
嵌入式 RustAwesome Embedded Rust
hyperfinehyperfine
proptestproptest
instainsta snapshot testing
cargo-fuzzcargo-fuzz
loomloom concurrency testing

作为 Rust Patterns 和 Type-Driven Correctness 的配套参考生成

Version 1.3 — 新增 cargo-hack, cargo-careful, cargo-watch, cargo doc, 可重现构建,CI 缓存策略,capstone 练习,以及完整的章节依赖图。