面向 C# 程序员的 Rust:完整训练指南
这是一份为具有 C# 开发经验的程序员量身定制的 Rust 学习指南。本书涵盖了从基础语法到高级模式的所有内容,重点关注两种语言之间的概念转变以及实践差异。
课程概览
- 为什么要学习 Rust —— Rust 对 C# 开发者的意义:性能、安全性和正确性。
- 快速上手 —— 安装、工具链以及你的第一个 Rust 程序。
- 基础构建模块 —— 类型、变量、控制流。
- 数据结构 —— 数组、元组、结构体、集合。
- 模式匹配与枚举 —— 代数数据类型与穷尽式匹配。
- 所有权与借用 —— Rust 的内存管理模型。
- 模块与 Crates —— 代码组织与依赖管理。
- 错误处理 —— 基于 Result 的错误传播。
- 特性 (Traits) 与泛型 —— Rust 的类型系统。
- 闭包与迭代器 —— 函数式编程模式。
- 并发编程 —— 拥有类型系统保证的“无畏并发”,以及异步/等待 (Async/Await) 深度解析。
- Unsafe Rust 与 FFI —— 何时以及如何超越“安全 Rust”的边界。
- 迁移模式 —— 现实世界中 C# 到 Rust 的模式转换与渐进式引入。
- 最佳实践 —— 专为 C# 开发者准备的惯用 Rust 写法。
自学指南
本教材既可以作为讲师引导的课程,也适用于自学。如果你是独自学习,以下是如何获得最佳学习效果的建议。
进度建议:
| 章节 | 主题 | 建议时间 | 阶段目标 (Checkpoint) |
|---|---|---|---|
| 1–4 | 环境搭建、类型、控制流 | 1 天 | 你能用 Rust 编写一个命令行温度转换器 |
| 5–6 | 数据结构、枚举、模式匹配 | 1–2 天 | 你能定义带数据的枚举并对其进行穷尽式 match |
| 7 | 所有权与借用 | 1–2 天 | 你能解释为什么 let s2 = s1 会导致 s1 失效 |
| 8–9 | 模块、错误处理 | 1 天 | 你能创建一个多文件项目并使用 ? 传播错误 |
| 10–12 | 特性、泛型、闭包、迭代器 | 1–2 天 | 你能将 LINQ 链翻译为 Rust 迭代器 |
| 13 | 并发与异步 | 1 天 | 你能使用 Arc<Mutex<T>> 编写线程安全的计数器 |
| 14 | Unsafe Rust, FFI, 测试 | 1 天 | 你能通过 P/Invoke 从 C# 调用 Rust 函数 |
| 15–16 | 迁移、最佳实践、工具链 | 自主节奏 | 参考材料 —— 在编写实际代码时查阅 |
| 17 | 终极项目实战 | 1–2 天 | 你完成了一个能获取天气数据的命令行工具 |
如何使用练习:
- 各个章节在可折叠的
<details>块中包含了动手练习及其参考答案。 - 在展开答案之前,务必先尝试自己动手完成练习。 与借用检查器“搏斗”是学习过程的一部分 —— 编译器的错误提示就是你最好的老师。
- 如果你卡住超过 15 分钟,可以展开答案进行研究,然后关闭它,尝试再次从零开始编写。
- Rust Playground 让你无需本地安装即可运行代码。
难度分级:
- 🟢 入门 —— 直接从 C# 概念对应转化。
- 🟡 中级 —— 需要理解所有权或特性 (Traits)。
- 🔴 进阶 —— 涉及生命周期、异步原理或不安全代码。
当你遇到困难时:
- 仔细阅读编译器的错误信息 —— Rust 的报错信息具有极高的指导意义。
- 重新阅读相关章节;像所有权(第 7 章)这样的概念通常在第二次阅读时才会豁然开朗。
- Rust 标准库文档 非常出色 —— 可以搜索任何类型或方法。
- 若需深入学习异步模式,请参阅配套的 异步 Rust 训练 指南。
目录
第一部分 — 基础篇
1. 简介与动机 🟢
2. 快速上手 🟢
3. 内置类型与变量 🟢
4. 控制流 🟢
5. 数据结构与集合 🟢
6. 枚举与模式匹配 🟡
7. 所有权与借用 🟡
8. Crates 与 模块 🟢
9. 错误处理 🟡
10. 特性 (Traits) 与 泛型 🟡
11. From 与 Into 特性 🟡
12. 闭包与迭代器 🟡
第二部分 — 并发与系统编程
13. 并发编程 🔴
14. Unsafe Rust, FFI 与 测试 🟡
第三部分 — 迁移与最佳实践
15. 迁移模式与案例研究 🟡
16. 最佳实践与参考 🟡
终极项目实战
17. 终极项目 🟡
- 构建命令行天气工具 —— 综合运用结构体、特性、错误处理、异步、模块、serde 以及测试,构建一个真实可用的应用程序。