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

Rust 工程实践:超越 cargo build 🟢

讲师简介

  • Microsoft SCHIE(Silicon and Cloud Hardware Infrastructure Engineering)团队首席固件架构师
  • 在安全、系统编程(固件、操作系统、虚拟机监控器)、CPU 与平台架构以及 C++ 系统方面经验丰富
  • 2017 年在 AWS EC2 开始使用 Rust,此后长期深度投入

这是一本聚焦 Rust 工具链实践的实用指南,覆盖许多团队往往接触得太晚的关键能力:构建脚本、交叉编译、基准测试、代码覆盖率,以及借助 Miri 和 Valgrind 做安全验证。每章都基于真实硬件诊断代码库中的具体示例展开,该代码库是一个大型多 crate 工作区,因此书中的每项技巧都能直接映射到生产代码。

如何使用本书

本书适合 自定节奏学习或团队工作坊。各章大体独立,你既可以按顺序阅读,也可以直接跳到当前最需要的主题。

难度说明

标记等级含义
🟢入门规则清晰、上手直接,第一天就能用到
🟡中级需要理解工具链内部机制或平台概念
🔴进阶涉及更深的工具链知识、nightly 特性或多工具协同

学习节奏建议

部分章节预计时间关键收获
I — 构建与交付第 01–02 章3–4 小时构建元数据、交叉编译、静态二进制
II — 度量与验证第 03–05 章4–5 小时统计型基准测试、覆盖率门禁、Miri 与 Sanitizer
III — 加固与优化第 06–10 章6–8 小时供应链安全、发布配置、编译期工具、no_std 与 Windows
IV — 集成第 11–13 章3–4 小时生产级 CI/CD 流水线、一线实践技巧与综合练习
16–21 小时完整生产工程流水线视角

练习建议

每章都包含带难度标记的 🏋️ 练习。答案放在可展开的 <details> 区块中,建议先做题,再核对答案。

  • 🟢 练习通常可在 10–15 分钟内完成
  • 🟡 练习通常需要 20–30 分钟,并可能需要本地运行工具
  • 🔴 练习通常需要较多环境准备与实验时间(1 小时以上)

前置知识要求

概念建议学习位置
Cargo 工作区结构Rust Book ch14.3
Feature 标志Cargo Reference — Features
#[cfg(test)] 与基础测试Rust Patterns 第 12 章
unsafe 代码块与 FFI 基础Rust Patterns 第 10 章

章节依赖图

                 ┌─────────────────┐
                 │ 第 00 章         │
                 │ 简介 (Intro)    │
                 └────┬─────┬───┬──┘
        ┌─────┬───┬──┴──┬───┴───┴──┬──────┬──────┐
        ▼     ▼   ▼     ▼          ▼      ▼      ▼
      ch01  ch03 ch04  ch05       ch06   ch09   ch10
      构建  基准 覆盖率 Miri       依赖  no_std Windows
        │     │    │    │          │      │      │
        │     └────┴────┘          │      ▼      │
        │          │               │    ch10     │
        ▼          ▼               ▼   Windows   │
       ch02      ch07            ch07    │       │
       交叉编译 发布配置         发布配置  │       │
        │          │               │     │       │
        │          ▼               │     │       │
        │        ch08              │     │       │
        │      编译工具            │     │       │
        └──────────┴───────────────┴─────┴───────┘
                           │
                           ▼
                         ch11
                    生产级 CI/CD 流水线
                           │
                           ▼
                        ch12 ──── ch13
                       实践技巧   速查卡

可任意顺序阅读:第 01、03、04、05、06、09 章相互独立。
建议在具备前置知识后阅读:第 02 章(依赖第 01 章),第 07–08 章(先学第 03–06 章效果更好),第 10 章(最好先看第 09 章)。
建议最后阅读:第 11 章(综合收束全书)、第 12 章(技巧汇总)、第 13 章(参考速查)。

带说明的内容目录

第一部分 — 构建与交付

#章节难度说明
1第 01 章:构建脚本 — 深入理解 build.rs🟢编译期常量、编译 C 代码、protobuf 生成、系统库链接与反模式
2第 02 章:交叉编译 — 一份源码,多种目标🟡目标三元组、musl 静态二进制、ARM 交叉编译、cross、cargo-zigbuild 与 GitHub Actions

第二部分 — 度量与验证

#章节难度说明
3第 03 章:基准测试 — 衡量真正重要的指标🟡Criterion.rs、Divan、perf 火焰图、PGO 与 CI 中的持续基准测试
4第 04 章:代码覆盖率 — 发现测试遗漏🟢cargo-llvm-cov、cargo-tarpaulin、grcov 与 Codecov/Coveralls 集成
5第 05 章:Miri、Valgrind 与 Sanitizer🔴MIR 解释器、Valgrind memcheck/Helgrind、ASan/MSan/TSan、cargo-fuzz 与 loom

第三部分 — 加固与优化

#章节难度说明
6第 06 章:依赖管理与供应链安全🟢cargo-audit、cargo-deny、cargo-vet、cargo-outdated 与 cargo-semver-checks
7第 07 章:发布配置与二进制体积🟡发布配置结构、LTO 权衡、cargo-bloat 与 cargo-udeps
8第 08 章:编译期与开发者工具🟡sccache、mold、cargo-nextest、cargo-expand、cargo-geiger、工作区 lint 与 MSRV
9第 09 章:no_std 与特性验证🔴cargo-hack、core/alloc/std 分层、自定义 panic handler 与 no_std 代码测试
10第 10 章:Windows 与条件编译🟡#[cfg] 模式、windows-sys/windows crate、cargo-xwin 与平台抽象

第四部分 — 集成

#章节难度说明
11第 11 章:综合实战 — 生产级 CI/CD 流水线🟡GitHub Actions 工作流、cargo-make、pre-commit hook、cargo-dist 与综合实战
12第 12 章:一线实践技巧🟡10 个经验证的实战模式:deny(warnings) 陷阱、缓存调优、依赖去重、RUSTFLAGS 等
13第 13 章:速查卡-命令速览、60+ 条决策表条目以及延伸阅读链接