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 - 构建与交付ch01-ch023-4 小时构建元数据、交叉编译、静态二进制
II - 度量与验证ch03-ch054-5 小时统计型基准测试、覆盖率门禁、Miri 与 sanitizer
III - 加固与优化ch06-ch106-8 小时供应链安全、发布配置、编译期工具、no_std 与 Windows
IV - 集成ch11-ch133-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 章

章节依赖图

                 +-----------------+
                 | ch00            |
                 | Intro           |
                 +----+-----+------+
        +--------+----+---+--+---+---------+------+
        |        |        |      |         |      |
      ch01     ch03     ch04   ch05      ch06   ch09
      Build    Bench    Cov    Miri      Deps   no_std
        |        |       |      |         |      |
        |        +-------+------+         |      |
        |                |                |    ch10
       ch02             ch07             ch07  Windows
       Cross            RelProf          RelProf
        |                |                |      |
        |               ch08              |      |
        |             CompTime            |      |
        +----------------+----------------+------+
                         |
                        ch11
                      CI/CD Pipeline
                         |
                        ch12 ---- ch13
                       Tricks   Quick Ref

可任意顺序阅读:ch01、ch03、ch04、ch05、ch06、ch09 相互独立。
建议在具备前置知识后阅读:ch02(依赖 ch01),ch07-ch08(先学 ch03-ch06 效果更好),ch10(最好先看 ch09)。
建议最后阅读:ch11(综合收束全书)、ch12(技巧汇总)、ch13(参考速查)。

带说明的目录

第一部分:构建与交付

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

第二部分:度量与验证

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

第三部分:加固与优化

#章节难度说明
6依赖管理与供应链安全🟢cargo-auditcargo-denycargo-vetcargo-outdatedcargo-semver-checks
7发布配置与二进制体积🟡发布配置结构、LTO 权衡、cargo-bloatcargo-udeps
8编译期与开发者工具🟡sccachemoldcargo-nextestcargo-expandcargo-geiger、工作区 lint 与 MSRV
9no_std 与特性验证🔶cargo-hackcore/alloc/std 分层、自定义 panic handler 与 no_std 代码测试
10Windows 与条件编译🟡#[cfg] 模式、windows-sys/windows crate、cargo-xwin 与平台抽象

第四部分:集成

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