
Comprehensive Rust 课程全览从 Google Android 团队的 4 天 Rust 基础到六大专题深潜的学习路线【免费下载链接】comprehensive-rustThis is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust.项目地址: https://gitcode.com/GitHub_Trending/co/comprehensive-rustComprehensive Rust 是 Google Android 团队面向有编程经验工程师典型背景为 C/Java设计的免费多日 Rust 课程本仓库即其全部源码Markdown 章节、mdBook 配置、预处理器与测试。本文以仓库中的课程目录文件 src/SUMMARY.md 为骨架逐段拆解这份目录先梳理Running the Course 与 Cargo 工具链两大开篇模块再完整呈现 Rust 基础四天Day 1-4的章节体系随后逐一展开 Android、Chromium、Bare-Metal、Concurrency、Idiomatic Rust、Unsafe 六大深度专题的内容地图最后结合 mdbook-course 预处理器源码说明这些章节如何被解析为真实的课程结构与时间表。读完本文你将掌握整套课程的知识布局、章节定位方法以及将其用于团队培训或自学进阶的完整路径。目录文件的角色课程骨架与机器可读的元数据src/SUMMARY.md是 mdBook 的标准目录文件Table of Contents它不仅是人类读者的导航索引还是仓库工具链的机器输入。目录中每个条目对应src/下的一个 Markdown 章节文件顺序即章节顺序顶级标题如# Day 1: Morning、# Android定义了章节的分组边界。从源码看这份目录的层级被 mdbook-course/src/course.rs 中的注释明确建模为四层结构Course学生报名参加的课程层级fundamentals、android 等Session一段教学时间典型为上午/下午Segment主题相关的一组幻灯片Slide单个主题可能对应多个 mdBook 章节。关键点在于course 与 session 的归属不是靠目录文件的标题推断的而是由每个章节 frontmatter 中的course、session、minutes、target_minutes属性决定的。例如 src/welcome-day-1.md 的 frontmatter 声明了course: Fundamentals、session: Day 1 Morning、minutes: 5、target_minutes: 180src/concurrency/welcome.md 则声明了course: Concurrency、session: Morning、target_minutes: 180。mdbook-course/src/course.rs 中的extract_structure函数按SUMMARY.md的章节顺序遍历BookItem读取这些 frontmatter 并逐步累积出 Courses → Sessions → Segments → Slides 的层级同时把各章节标注的分钟数汇总成每个 Session 的target_minutes。因此可以说SUMMARY.md定义了课程的广度而 frontmatter 定义了课程的深度每个幻灯片的建议讲授时长两者共同驱动课程大纲与时间表的自动生成。开篇模块一Running the Course面向讲师课程目录在首页之后安排了一组面向讲师的运行指南共三个小节全部集中在src/running-the-course/下running-the-course.md讲师准备与授课节奏的总纲running-the-course/course-structure.md课程结构总览与各深潜专题的预备要求running-the-course/keyboard-shortcuts.mdmdBook 演示环境快捷键running-the-course/translations.md多语言翻译现状与参与方式。授课节奏与讲师准备running-the-course.md 给出了 Google 内部的实际排课方式典型授课时间为 9:00-16:00中间含 1 小时午餐上午、下午各 3 小时两个时段内都穿插休息与练习时间。开课前讲师应完成以下准备熟悉全部材料课程内置了speaker notes讲师备注演示时应通过 Speaker Notes 旁的箭头链接在弹窗中打开备注保持投影屏干净确定日期课程共四天建议分散在两周内完成——学员反馈中间留出间隔有助于消化信息安排教室建议班级规模 15-25 人保证讲师能逐一回答提问并为讲师与学员都准备课桌课程包含大量现场 live coding讲台台架并不实用现场准备直接用笔记本上的mdbook serve演示避免翻页延迟并可随时修正学员发现的笔误练习组织让学员独立或分小组解题典型安排是上午、下午各留 30-45 分钟做练习含回顾解答发现多人遇到同一问题时向全班公开讲解。该文档还以details折叠块提供了讲师进阶指引完整过一遍全部幻灯片与练习、预先演练 live coding 代码、熟悉 mdBook 的导航与搜索、利用CtrlAltB切换切片尺寸辅助线红色方框指示演示时可见区域等。各深潜专题的环境预备running-the-course/course-structure.md 罗列了每个深潜专题的硬性环境要求可作为带队老师排课前置检查单Rust in Android半天需要 AOSP checkout并把本仓库的src/android/目录移入 AOSP 根目录确保 Android 构建系统能看到其中的Android.bp文件预先用 src/android/build_all.sh 构建全部示例并确保adb sync在模拟器或真机上可用Rust in Chromium半天需要能构建 Chromium为提速建议使用 debug、component 构建详见 src/chromium/setup.md且必须能运行自己构建出的浏览器Bare-Metal Rust全天微控制器部分需提前采购 BBC micro:bit v2 开发板并安装 src/bare-metal.md 欢迎页列出的若干工具包Concurrency in Rust全天需提前建好空 crate 并下载依赖课上可直接把示例复制进src/main.rs实验cargo init concurrency cd concurrency cargo add tokio --features full cargo runIdiomatic Rust两天要求先完成 Rust Fundamentals 的内容再开始UnsafeWork in Progress两天覆盖 Rust 安全保证基础、unsafe动机与评审流程、FFI 基础以及构建借用检查器通常拒绝的数据结构。从结构上可以看到 src/running-the-course/course-structure.md 中还插入了{{%course outline Fundamentals}}、{{%course outline Concurrency}}等模板占位符——它们会在构建时由 mdbook-course 预处理器替换为自动生成的分段大纲见下文从目录到课程大纲一节。开篇模块二Using CargoRust 工具链入门课程正式内容前安排了独立的 Cargo 模块src/cargo.md下设三个小节src/cargo/rust-ecosystem.mdRust 生态概览src/cargo/code-samples.md课程内嵌代码样本的组织方式src/cargo/running-locally.md本地运行练习项目。这一模块主要解决学员的动手前提通过 https://rustup.rs/ 安装cargo构建工具、rustc编译器与rustup版本管理器随后配置编辑器/IDE 接入 [rust-analyzer]提供自动补全与跳转定义支持 VS Code、Emacs、Vim/Neovim 等另有 JetBrains 的 RustRover 可作为 IDE 选择。文档还提示了平台差异Debian/Ubuntu 可sudo apt install rustupmacOS 的 Homebrew 安装可能版本过旧建议从官网安装。Rust FundamentalsDay 1-4 完整章节地图目录将前四天定义为 Rust Fundamentals见 src/running-the-course/course-structure.md每天拆为上午/下午两个 Session进度快、覆盖面广。下面按目录顺序完整列出章节体系并标注每节的练习与解答位置。Day 1Hello World → 引用与自定义类型Day 1: Morning以 src/welcome-day-1.md 开场随后Hello, Worldsrc/hello-world.md含 What is Rust、Benefits、PlaygroundTypes and Valuessrc/types-and-values.md子节覆盖 Hello World、Variables、Values、Arithmetic、Type Inference练习为Fibonacciexercise/solutionControl Flow Basicssrc/control-flow-basics.md含 Blocks and Scopes、if表达式、match表达式、Loopsfor/loop、break/continue及标签、Functions、Macros练习为Collatz Sequence。Day 1: Afternoonsrc/welcome-day-1-afternoon.mdTuples and Arrayssrc/tuples-and-arrays.md含 Arrays、Tuples、Array Iteration、Patterns and Destructuring练习为Nested ArraysReferencessrc/references.md含 Shared References、Exclusive References、Slices、Strings、Reference Validity悬垂引用练习为GeometryUser-Defined Typessrc/user-defined-types.md含 Named Structs、Tuple Structs、Enums、Type Aliases、Const、Static练习为Elevator Events。Day 2模式匹配 → 泛型Day 2: MorningPattern Matchingsrc/pattern-matching.md含 Irrefutable Patterns、Matching Values、解构 Structs/Enums、Let Control Flowif let/while let/let else练习为Expression EvaluationMethods and Traitssrc/methods-and-traits.md含 Methods、Traits实现、Supertraits、Associated Types、Deriving练习为Generic LoggerGenericssrc/generics.md含 Generic Functions、Trait Bounds、Generic Data Types、Generic Traits、impl Trait、dyn Trait练习为Genericmin。Day 2: AfternoonClosuressrc/closures.md含语法、捕获、Closure Traits练习为Log FilterStandard Library Typessrc/std-types.md含标准库总览、文档、Option、Result、String、Vec、HashMap练习为CounterStandard Library Traitssrc/std-traits.md含 Comparisons、Operators、From/Into、Casting、Read/Write、Default与 struct update syntax练习为ROT13。Day 3内存管理 → 生命周期Day 3: MorningMemory Managementsrc/memory-management.md含程序内存回顾、内存管理方案、Ownership、Move Semantics、Clone、Copy Types、Drop练习为Builder TypeSmart Pointerssrc/smart-pointers.md含BoxT、Rc、Owned Trait Objects练习为Binary Tree。Day 3: AfternoonBorrowingsrc/borrowing.md含共享借用、Borrow Checking、借用错误示例、Interior MutabilityCell/RefCell练习为Wizards InventoryLifetimessrc/lifetimes.md含借用与函数、返回借用、多借用、Lifetime Elision、数据结构中的生命周期练习为Protobuf Parsing。Day 4迭代器 → Unsafe RustDay 4: MorningIteratorssrc/iterators.md含动机、Iteratortrait、辅助方法、collect、IntoIterator练习为Iterator Method ChainingModulessrc/modules.md含模块、文件系统层级、可见性、封装、use/super/self练习为GUI 库模块化Testingsrc/testing.md含单元测试、其他测试类型、Compiler Lints 与 Clippy练习为Luhn Algorithm。Day 4: AfternoonError Handlingsrc/error-handling.md含 Panics、Result、Try 运算符、Try Conversions、Errortrait、thiserror、anyhow练习为用Result重写Unsafe Rustsrc/unsafe-rust.md含 Unsafe 概述、裸指针解引用、可变静态变量、Unions、Unsafe FunctionsRust 侧/extern C侧/调用侧、Unsafe Traits练习为FFI Wrapper。四天基础结束后目录以分隔线---衔接各深度专题并以 src/thanks.md、src/glossary.md、src/other-resources.md、src/credits.md 收尾Final Words。六大深度专题内容地图在四天基础之上目录列出了六个可由讲师按需挑选的深潜专题。除表格化概览外下文对各专题给出重点章节速览。专题时长入口章节核心内容Rust in Android半天src/android.mdAIDL、测试GoogleTest/Mockall、日志、与 C/C/Java 互操作Rust in Chromium半天src/chromium.mdgn 构建规则、测试、与 C 互操作CXX、引入第三方 crateBare-Metal Rust全天src/bare-metal.mdno_std、微控制器MMIO/PAC/HAL/type-state、应用处理器UART 驱动、MMIO、异常、实用 crateConcurrency in Rust全天src/concurrency/welcome.md线程、通道、Send/Sync、共享状态async/await、异步控制流、陷阱Idiomatic Rust两天src/idiomatic/welcome.mdAPI 设计基础、类型系统利用newtype/RAII/typestate/PhantomData/Token、多态Unsafe两天WIPsrc/unsafe-deep-dive/welcome.mdunsafe 定义与动机、安全前置条件、内存生命周期、初始化、Pin、FFIRust in Android半天入口 src/android.md下设 Setup 与 Build RulesBinary/Library 的Android.bp写法。AIDL 部分以完整的Birthday Service 教程为主线src/android/aidl/birthday-service.md从 interface 定义 → service-bindings → service 实现 → server → deploy → client → 修改 API 与更新实现一步步搭建可运行的绑定服务AIDL Types 小节src/android/aidl/types.md逐一讲解 Primitive、Array、对象传递、Parcelables、文件描述符。仓库中对应真实实现位于 src/android/aidl/birthday_service/含Android.bp与 Rust 源码。Testing 小节覆盖 googletest 与 mocking并配有真实测试工程 src/android/testing/Loggingsrc/android/logging.md与 Interoperabilitysrc/android/interoperability.md分别展开与 Cbindgen、手写绑定、Cbridge 模块、共享类型/枚举、错误处理映射、Android genrules、Java 的互通。Rust in Chromium半天入口 src/chromium.md。Setup 与Cargo 生态对比之后是Build Rulessrc/chromium/build-rules.md讲解 unsafe 代码策略、Chromium C 依赖 Rust 的方式、VS Code 配置Testingsrc/chromium/testing.md介绍rust_gtest_interop库、GN 测试规则与chromium::import!宏Interoperability with Csrc/chromium/interoperability-with-cpp.md给出示例绑定、CXX 的局限、错误处理QR 与 PNG 两个实战示例、在 Chromium 中使用 CXXAdding Third Party Cratessrc/chromium/adding-third-party-crates.md是完整的第三方 crate 引入流程配置Cargo.toml→ 配置gnrt_config.toml→ 下载 crate → 生成 gn 构建规则 → 解决构建脚本类问题 → 依赖声明 → 评审与审计 → 合入源码 → 保持更新。专题以综合练习与解答收尾src/exercises/chromium/。Bare-Metal Rust全天入口 src/bare-metal.md分为上午与下午两个 SessionMorningno_std含 minimal 最小示例与 allocMicrocontrollerssrc/bare-metal/microcontrollers.md讲解原始 MMIO、PAC、HAL crates、板级支持 crate、Type State 模式、embedded-hal、probe-rs/cargo-embed与调试配套练习为Compasssrc/exercises/bare-metal/compass.md。仓库中 src/bare-metal/microcontrollers/examples/ 提供了可构建的练习工程AfternoonApplication Processorssrc/bare-metal/aps.md从入口点、内联汇编、MMIO 一路讲到自写 UART 驱动含 trait 设计与使用、更完善的 UART 驱动bitflags、多寄存器、driver、safe-mmio 封装、日志、异常、aarch64-rt运行时Useful Cratessrc/bare-metal/useful-crates.md介绍zerocopy、aarch64-paging、buddy_system_allocator、tinyvec、spin均有配套最小示例工程src/bare-metal/useful-crates/另有 Android 上的裸机专题vmbase与RTC Driver练习src/exercises/bare-metal/rtc.md。Concurrency in Rust全天入口 src/concurrency/welcome.md同样分上午/下午Morning同步并发Threads普通线程与 scoped threads、Channels发送者/接收者、无界与有界、Send/Sync标记 trait 与示例、Shared StateArc、Mutex与综合示例。练习为Dining Philosophers与多线程 Link Checkersrc/concurrency/sync-exercises.md仓库 src/concurrency/sync-exercises/ 中带有可运行的练习与解答代码Afternoonasync/awaitAsync Basicsasync/await、Futures、状态机、Runtimes 与 Tokio、Tasks、Channels and Control Flow异步通道、join、select、Pitfalls阻塞 executor、Pin、async traits、取消。练习为Dining Philosophers异步版与Broadcast Chat 应用src/concurrency/async-exercises.md。Idiomatic Rust两天入口 src/idiomatic/welcome.md要求先完成 Rust Fundamentals。三大板块Foundations of API Designsrc/idiomatic/foundations-api-design.mdMeaningful Doc Comments受众、库文档 vs 应用文档、文档注释解剖、命名提示与路标、避免冗余、What/Why 而非 How/Where与 Predictable API命名约定new/is/mut/with/try/from/into/to/as/ref/by常见 trait 实现Debug/Display/PartialEq/Eq/PartialOrd/Ord/Hash/Clone/Copy/From/Into/TryFrom/TryInto/serdeLeveraging the Type Systemsrc/idiomatic/leveraging-the-type-system.mdNewtype 模式语义混淆、Parse Dont Validate、封装性、RAIIDrop、Mutex、Drop Guards、Drop Bomb、forget/drop、Scope Guard、Extension Traits扩展外部类型、方法解析冲突、trait 方法冲突、何时该定义扩展 trait、Typestate 模式示例、进阶、与泛型结合的序列化器实现、借用检查不变量Lifetimes/Borrows 抽象规则、单次使用值、Aliasing XOR Mutability、PhantomData系列、OwnedFd/BorrowedFd、Token Types权限令牌、带数据的令牌如 Mutex Guards、带品牌标记的令牌实现Polymorphismsrc/idiomatic/polymorphism.mdRefreshertrait、trait bounds、derive、默认实现、supertraits、blanket impls、条件方法、orphan rule、Sized/DST、单态化与二进制体积与 From OOP to Rust继承为何在 Rust 中缺席、组合优于继承、trait 对象与动态分发、dyn兼容性、泛型 vs trait 对象、异构集合、Anytrait、sealed traits、问题分解。Unsafe两天Work in Progress入口 src/unsafe-deep-dive/welcome.md是相对较新的深潜专题。章节体系包括Introduction定义 unsafe Rust、unsafe关键字的用途与双重角色、暖身示例、unsafe Rust 的特征、责任转移、更严格的工作流、may_overflow示例Safety Preconditions常见前置条件、语义前置条件、如何判定前置条件、自定义前置条件含 getter、u8→bool、references、ASCII 类型示例Rules of the gameRust 是 sound 的、内存拷贝、sound Rust 的三种形态、Soundness 证明及其推论与 UnsoundnessMemory Lifecycle、InitializationMaybeUninitT、数组初始化、zeroed()、ptr::writevs 赋值、部分初始化Pinning什么是 pin、什么是 move、PinPtr定义、Unpin、PhantomPinned、自引用缓冲区示例的 C 与 Rust 建模、Pin与DropFFI语言互操作、策略、类型安全考量、语言差异、abs(3)/rand(3)示例、C 库与 C 库练习。从目录到课程大纲mdbook-course 预处理器的源码级解读SUMMARY.md的深层价值在于它与构建工具链的耦合。仓库通过 book.toml 注册了preprocessor.coursebook.tomlmdbook-course以及gettext、svgbob等预处理器。mdbook-course 的职责是把章节结构连同 frontmatter 元数据转成可展示的课程信息其核心数据模型与解析逻辑集中在 mdbook-course/src/course.rs。从 mdbook-course/src/frontmatter.rs 看每个章节可携带四个可选属性minutes本节建议讲授分钟数target_minutes整个 session 的目标时长可覆盖自动汇总值course所属课程名取none表示不属于任何课程如导语材料session所属 session 名同 course 内唯一。解析规则mdbook-course/src/course.rs遇到带course的章节会重置当前 sessioncourse与session必须成对出现缺失会直接bail!报错顶级章节对应一个 Segment 及其首张 Slide其子章节递归归入同一 Slidecourse.rs。Session::minutes()还会自动加入段间休息时间——休息固定为 10 分钟course.rs公式为教学内容总时长 (有内容的段数 - 1) × 10 分钟course.rs。由此生成的Session::outline()与Course::schedule()course.rs会渲染成 Markdown 大纲表格替换掉章节里的{{%course outline ...}}、{{%session outline}}占位符——这就是 src/running-the-course/course-structure.md 与 src/welcome-day-1.md 中那些模板标记在构建后的去向。对讲师而言这意味着课时分配不是人工维护的而是由SUMMARY.md的章节顺序 各章 frontmatter 的minutes数值自动计算并随时保持一致。本地运行与构建复现目录中每一章的实操方法要亲自翻阅/演示上述所有章节可完整复现构建链。仓库 README.md 说明所需工具包括 mdbook、mdbook-svgbob、mdbook-i18n-helpers、mdbook-exerciser、mdbook-course、mdbook-linkcheck2 与 Bazel。推荐流程# 1. 安装 Rustrustup.rs与 Bazelisk然后克隆仓库 git clone https://github.com/google/comprehensive-rust/ cd comprehensive-rust # 2. 安装固定版本的全部工具安装至 ~/.cargo/bin cargo xtask install-tools # 3. 启动本地服务器浏览器访问 http://localhost:3000 cargo xtask serve常用命令汇总来自 README.md 的命令表任务自动化实现见 xtask/src/main.rs命令作用cargo xtask install-tools安装项目依赖的全部工具cargo xtask serve启动本地 Web 服务器-l xx可指定 ISO 639 语言代码如-l da服务丹麦语版cargo xtask rust-tests测试内嵌的 Rust 代码片段cargo xtask web-tests运行 tests 目录下的 WebDriver 测试cargo xtask build在book/生成静态站点-l xx构建对应翻译版呈现层面由 book.toml 配置启用代码可编辑 Playground 与行号、布尔 AND 搜索、折叠目录并加载 speaker-notes、redbox 等前端脚本preprocessor.gettext负责多语言output.xgettext负责提取翻译模板messages.pot。多语言现状见 src/running-the-course/translations.md简体中文、繁体中文、日语、韩语、西班牙语、乌克兰语、巴西葡语、波斯语等已完成阿拉伯语、孟加拉语、法语、德语、意大利语等仍在进行中翻译产物po/*.po直接位于仓库po/目录。给学习者与培训者的选课建议综合目录结构与 src/index.md 的说明课程目标全面理解 Rust 语法与语言、能修改既有程序并编写新程序、掌握常见 Rust 惯用法假设学员已会编程可与 C/C 对比讲解可给出如下路径建议零基础但有编程经验按顺序完成 Day 1-4Rust Fundamentals即可覆盖从语法到借用、生命周期、错误处理的完整主干每天上午/下午各配套一道带解答的练习适合边学边练Android 平台开发者四天基础后接 Android 半天专题重点走通 AIDL Birthday Service 完整教程浏览器/大厂基建开发者选择 Chromium 半天专题学习 gn 构建与第三方 crate 治理流程嵌入式开发者选择 Bare-Metal 全天专题需 micro:bit v2 与若干工具服务端/异步开发者选择 Concurrency 全天专题同步并发与 async/await 两翼并进追求 API 设计与工程化在完成基础后选择 Idiomatic Rust两天系统编程/FFI 方向关注 Unsafe 深潜当前标记为 Work in Progress部分章节仍在完善中。每条路径所需的章节入口、前置条件与配套练习/解答均可依据本文第二、三、四部分的目录对照直接定位到src/下的具体 Markdown 文件。【免费下载链接】comprehensive-rustThis is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust.项目地址: https://gitcode.com/GitHub_Trending/co/comprehensive-rust创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考