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

Rust 工程实践——超越 cargo build

讲师介绍

  • 微软 SCHIE(硅与云硬件基础设施工程)团队首席固件架构师
  • 行业资深专家,专长于安全、系统编程(固件、操作系统、管理程序)、CPU 和平台架构,以及 C++ 系统
  • 2017 年开始使用 Rust 编程(@AWS EC2),从此爱上这门语言

本指南介绍大多数团队发现太晚的 Rust 工具链特性: 构建脚本、交叉编译、基准测试、代码覆盖率,以及使用 Miri 和 Valgrind 进行安全验证。 每一章都使用来自真实硬件诊断代码库(一个大型多 crate workspace)的具体示例, 因此每项技术都能直接映射到生产代码。

如何使用本书

本书专为自学或团队研讨会设计。每章大部分内容相互独立——可以按顺序阅读,也可以跳转到需要的主题。

难度说明

符号级别含义
🟢入门直接了当的工具,模式清晰——第一天就能用上
🟡中级需要理解工具链内部原理或平台概念
🔴高级深入的工具链知识、nightly 特性或多工具协作

进度指南

部分章节估计时间关键成果
I — 构建与发布ch01–023–4 小时构建元数据、交叉编译、静态二进制
II — 度量与验证ch03–054–5 小时统计基准测试、覆盖率门禁、Miri/清理器
III — 加固与优化ch06–106–8 小时供应链安全、发布 profile、编译时工具、no_std、Windows
IV — 集成ch11–133–4 小时生产级 CI/CD 流水线、技巧、综合练习
16–21 小时完整的生产工程流水线

完成练习

每章都包含带难度指示的**🏋️ 练习**。解决方案放在可展开的 <details> 块中——先尝试练习,然后检查你的工作。

  • 🟢 练习通常可在 10–15 分钟内完成
  • 🟡 练习需要 20–40 分钟,可能涉及本地运行工具
  • 🔴 练习需要大量设置和实验(1 小时以上)

前置知识

概念学习地点
Cargo workspace 布局Rust Book ch14.3
Feature 标志Cargo Reference — Features
#[cfg(test)] 和基础测试Rust Patterns ch12
unsafe 块和 FFI 基础Rust Patterns ch10

章节依赖图

                 ┌──────────┐
                 │ ch00     │
                 │  简介    │
                 └────┬─────┘
        ┌─────┬───┬──┴──┬──────┬──────┐
        ▼     ▼   ▼     ▼      ▼      ▼
      ch01  ch03 ch04  ch05   ch06   ch09
      构建  基准 覆盖率 Miri   依赖   no_std
        │     │    │    │      │      │
        │     └────┴────┘      │      ▼
        │          │           │    ch10
        │          ▼           │   Windows
        ▼        ch07        ch07    │
       交叉      RelProf     RelProf  │
        │          │           │     │
        │          ▼           │     │
        │        ch08          │     │
        │      编译时          │     │
        └──────────┴───────────┴─────┘
                   │
                   ▼
                 ch11
               CI/CD 流水线
                   │
                   ▼
                ch12 ─── ch13
               技巧     快速参考

任意顺序阅读:ch01、ch03、ch04、ch05、ch06、ch09 是独立的。 在前置条件后阅读:ch02(需要 ch01)、ch07–ch08(受益于 ch03–ch06)、ch10(受益于 ch09)。 最后阅读:ch11(整合一切)、ch12(技巧)、ch13(参考)。

annotated 目录

第一部分 — 构建与发布

#章节难度描述
1构建脚本——build.rs 深入🟢编译时常量、编译 C 代码、protobuf 生成、系统库链接、反模式
2交叉编译——一份源码,多个目标🟡目标三元组、musl 静态二进制、ARM 交叉编译、cross 工具、cargo-zigbuild、GitHub Actions

第二部分 — 度量与验证

#章节难度描述
3基准测试——度量关键指标🟡Criterion.rs、Divan、perf 火焰图、PGO、CI 中的持续基准测试
4代码覆盖率——发现测试遗漏🟢cargo-llvm-cov、cargo-tarpaulin、grcov、Codecov/Coveralls CI 集成
5Miri、Valgrind 和清理器🔴MIR 解释器、Valgrind memcheck/Helgrind、ASan/MSan/TSan、cargo-fuzz、loom

第三部分 — 加固与优化

#章节难度描述
6依赖管理与供应链安全🟢cargo-audit、cargo-deny、cargo-vet、cargo-outdated、cargo-semver-checks
7发布 Profile 与二进制文件大小🟡Release profile 解剖、LTO 权衡、cargo-bloat、cargo-udeps
8编译时与开发者工具🟡sccache、mold、cargo-nextest、cargo-expand、cargo-geiger、workspace lints、MSRV
9no_std 与 Feature 验证🔴cargo-hack、core/alloc/std 层、自定义 panic 处理程序、测试 no_std 代码
10Windows 与条件编译🟡#[cfg] 模式、windows-sys/windows crates、cargo-xwin、平台抽象

第四部分 — 集成

#章节难度描述
11整合一切——生产级 CI/CD 流水线🟡GitHub Actions 工作流、cargo-make、pre-commit hooks、cargo-dist、综合项目
12实战技巧🟡10 个经过实战验证的模式:deny(warnings) 陷阱、缓存调优、依赖去重、RUSTFLAGS 等
13快速参考卡—一目了然的命令、60+ 决策表条目、延伸阅读链接