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

面向 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>> 编写线程安全的计数器
14Unsafe 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 以及测试,构建一个真实可用的应用程序。