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

English Original

速查卡

备忘录:命令一览

# ─── 构建脚本 (Build Scripts) ───
cargo build                          # 先编译 build.rs,再编译 crate
cargo build -vv                      # 详细模式 —— 显示 build.rs 的输出

# ─── 交叉编译 (Cross-Compilation) ───
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

# ─── 基准测试 (Benchmarking) ───
cargo bench                          # 运行所有基准测试
cargo bench -- parse                 # 运行名称匹配 "parse" 的基准测试
cargo flamegraph -- --args           # 根据二进制程序生成火焰图
perf record -g ./target/release/bin  # 记录性能数据
perf report                          # 交互式查看性能数据

# ─── 代码覆盖率 (Coverage) ───
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           # 备选工具

# ─── 安全验证 (Safety Verification) ───
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

# ─── 审计与供应链 (Audit & Supply Chain) ───
cargo audit                          # 已知漏洞扫描
cargo audit --deny warnings          # 若存在漏洞通告则使 CI 失败
cargo deny check                     # 许可证 + 漏洞通告 + 禁止项 + 源码检查
cargo deny list                      # 列出依赖树中的所有许可证
cargo vet                            # 供应链信任验证
cargo outdated --workspace           # 查找过期的依赖项
cargo semver-checks                  # 检测破坏性的 API 变更
cargo geiger                         # 统计依赖树中的 unsafe 代码行数

# ─── 二进制优化 (Binary Optimization) ───
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  # 自动修复静态检查出的警告

# ─── 编译期优化 (Compile-Time Optimization) ───
export RUSTC_WRAPPER=sccache         # 开启共享编译缓存
sccache --show-stats                 # 查看缓存命中率统计
cargo nextest run                    # 更快的测试运行器
cargo nextest run --retries 2        # 自动重试不稳定的测试

# ─── 平台工程 (Platform Engineering) ───
cargo check --target thumbv7em-none-eabihf   # 验证 no_std 构建情况
cargo build --target x86_64-pc-windows-gnu   # 交叉编译至 Windows (MinGW)
cargo xwin build --target x86_64-pc-windows-msvc  # 交叉编译至 Windows (MSVC ABI)
cfg!(target_os = "linux")                    # 编译期配置 (求值为 bool 值)

# ─── 发布 (Release) ───
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检测性能退化 (Regression)
快速性能检查Divan开发期间的性能分析
找出性能热点cargo flamegraph / perf基准测试发现慢代码后的深度剖析
行/分支覆盖率cargo-llvm-covCI 覆盖率门禁、覆盖缺口分析
快速检查覆盖率cargo-tarpaulin本地开发期间使用
Rust UB (未定义行为) 检测Miri纯 Rust 的 unsafe 代码
C FFI 内存安全检查Valgrind memcheckRust/C 混合的代码库
数据竞态检测TSan 或 Miri并发环境下的 unsafe 代码
缓冲区溢出检测ASanunsafe 指针算术运算
泄漏检测Valgrind 或 LSan需要长时间运行的服务
本地模拟 CIcargo-make开发者工作流自动化
提交前检查 (Pre-commit)cargo-husky 或 Git 钩子推送代码前拦截问题
自动化发布cargo-release + cargo-dist版本管理与分发自动化
依赖项审计cargo-audit / cargo-deny供应链安全保障
许可证合规性cargo-deny (licenses)商业或企业级项目
供应链信任验证cargo-vet高安全性要求的环境
查找过期依赖cargo-outdated定期的维护工作
检测破坏性 API 变更cargo-semver-checks二进制库发布前校验
依赖树分析cargo tree --duplicates优化并清理依赖图中的冗余
二进制体积分析cargo-bloat针对体积敏感的部署场景
查找冗余依赖cargo-udeps / cargo-machete缩减编译时间和二进制体积
LTO 微调lto = true 或 "thin"优化发布版二进制程序
体积优化的二进制程序opt-level = "z" + strip = true嵌入式 / WASM / 容器环境
Unsafe 使用情况审计cargo-geiger安全政策强制执行
宏调试cargo-expand调试 derive 或 macro_rules 输出
链接加速mold 链接器提升开发人员的本地迭代速度
编译缓存sccacheCI 与本地构建加速
测试加速cargo-nextestCI 与本地测试提速
MSRV 兼容性检查cargo-msrv发布库文件时使用
no_std 库开发#![no_std] + default-features = false嵌入式、UEFI、WASM 环境
Windows 交叉编译cargo-xwin / MinGW在 Linux 上构建 Windows 程序
平台抽象模式#[cfg] + Trait 模式支持多操作系统的代码库
调用 Windows APIwindows-sys / windows crate使用 Windows 原生功能
端到端耗时测量hyperfine整体二进制基准测试及前后对比
基于属性的测试proptest发现边缘情况、增强解析器健壮性
快照测试insta验证大型结构化输出
覆盖率导向型模糊测试cargo-fuzz发现解析器中的崩溃 Bug
并发模型检查loom验证无锁数据结构、原子序
特性组合测试cargo-hack针对拥有多个 #[cfg] 特性的 crate
快速 UB 检查 (近乎原生)cargo-carefulCI 安全门禁,比 Miri 更轻量
保存自动重构cargo-watch提升开发迭代反馈速度
工作区文档cargo doc + rustdocAPI 发现、上手文档、文档链接 CI 检查
可复现构建--locked + SOURCE_DATE_EPOCH验证发布版本的完整性
CI 缓存微调Swatinem/rust-cache@v2缩短构建耗时 (冷构建 → 缓存构建)
工作区 Lint 政策Cargo.toml 中的 [workspace.lints]跨 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 用户手册
DivanDivan docs
cargo-llvm-covcargo-llvm-cov
cargo-tarpaulintarpaulin docs
MiriMiri GitHub
Rust 中的 Sanitizerrustc Sanitizer 文档
cargo-makecargo-make book
cargo-releasecargo-release docs
cargo-distcargo-dist docs
Profile-guided optimizationRust PGO 指南
火焰图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 代码生成选项
Cargo ProfilesCargo Book — Profiles
no_stdRust 嵌入式手册
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 参考手册 — cfg
嵌入式 RustAwesome Embedded Rust
hyperfinehyperfine
proptestproptest
instainsta 快照测试
cargo-fuzzcargo-fuzz
loomloom 并发测试

生成参考资料 —— 作为《Rust 设计模式》与《类型驱动的正确性》的配套指南。

版本 1.3 —— 为了保证内容的完备性,增加了 cargo-hack, cargo-careful, cargo-watch, cargo doc, 可复现构建, CI 缓存策略, 总结性练习以及章节依赖图。