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 Python 程序员指南:完整培训教程

这是一本为具有 Python 经验的开发者编写的全面 Rust 指南。本书涵盖从基础语法到高级模式的所有内容,重点关注从动态类型、垃圾回收语言转向静态类型、编译时内存安全的系统编程语言时所需的概念转变。

如何使用本书

自学路径:首先完成第一部分(第 1-6 章)—— 这些章节与你已经熟悉的 Python 概念紧密对应。第二部分(第 7-12 章)介绍 Rust 特有的概念,如所有权和 trait。第三部分(第 13-16 章)涵盖高级主题和迁移策略。

建议学习节奏:

章节主题建议时间检查点
1–4环境搭建、类型、控制流1 天你能用 Rust 编写一个 CLI 温度转换器
5–6数据结构、枚举、模式匹配1–2 天你能定义带数据的枚举并进行穷尽 match 匹配
7所有权和借用1–2 天你能解释为什么 let s2 = s1 会使 s1 失效
8–9模块、错误处理1 天你能创建一个使用 ? 传播错误的多文件项目
10–12Trait、泛型、闭包、迭代器1–2 天你能将列表推导式转换为迭代器链
13并发1 天你能用 Arc<Mutex<T>> 编写线程安全计数器
14Unsafe、PyO3、测试1 天你能通过 PyO3 从 Python 调用 Rust 函数
15–16迁移、最佳实践自行安排参考资料 —— 在编写实际代码时查阅
17综合项目2–3 天构建一个完整的 CLI 应用,综合运用所有知识

如何使用练习题:

  • 各章节包含可折叠 <details> 块中的动手练习和解答
  • 务必在查看解答前先尝试完成练习。 与借用检查器的斗争是学习过程的一部分 —— 编译器的错误信息是你的老师
  • 如果卡壳超过 15 分钟,展开解答,仔细研究,然后关上解答从头再试一次
  • Rust Playground 让你无需本地安装就能运行代码

难度标识:

  • 🟢 初学者 — 直接从 Python 概念转换
  • 🟡 中级 — 需要理解所有权或 trait
  • 🔴 高级 — 生命周期、异步内部、或 unsafe 代码

当你遇到困难时:

  • 仔细阅读编译器错误信息 —— Rust 的错误提示非常友好
  • 重读相关章节;像所有权(第 7 章)这样的概念通常需要读第二遍才能理解
  • Rust 标准库文档 非常优秀 —— 搜索任何类型或方法
  • 更深入的异步模式,请参阅配套的 Rust 异步编程培训

目录

第一部分 — 基础

1. 介绍与动机 🟢

  • [Python 开发者选择 Rust 的理由](ch01-introduction-and-motivation.md#python-开发者选择 rust 的理由)
  • [Rust 解决的 Python 常见痛点](ch01-introduction-and-motivation.md#rust-解决的 python 常见痛点)
  • [何时选择 Rust 而非 Python](ch01-introduction-and-motivation.md#何时选择 rust 而非 python)

2. 入门指南 🟢

3. 内置类型与变量 🟢

4. 控制流 🟢

5. 数据结构与集合 🟢

6. 枚举与模式匹配 🟡

  • [代数数据类型 vs 联合类型](ch06-enums-and-pattern-matching.md#代数数据类型 vs 联合类型)
  • 穷尽模式匹配
  • [Option 实现 None 安全](ch06-enums-and-pattern-matching.md#option-实现 none 安全)

第二部分 — 核心概念

7. 所有权与借用 🟡

8. Crate 与模块 🟢

  • [Rust 模块 vs Python 包](ch08-crates-and-modules.md#rust 模块 vs-python 包)
  • [Crate vs PyPI 包](ch08-crates-and-modules.md#crate-vs-pypi 包)

9. 错误处理 🟡

  • [异常 vs Result](ch09-error-handling.md#异常 vs-result)
  • ? 操作符
  • [使用 thiserror 定义自定义错误类型](ch09-error-handling.md#使用 thiserror 定义自定义错误类型)

10. Trait 与泛型 🟡

  • [Trait vs 鸭子类型](ch10-traits-and-generics.md#特征 vs 鸭子类型)
  • [协议 (PEP 544) vs Trait](ch10-traits-and-generics.md#协议 pep-544-vs-特征)
  • 泛型约束

11. From 和 Into Trait 🟡

12. 闭包与迭代器 🟡

  • 闭包 vs Lambda 表达式
  • [迭代器 vs 生成器](ch12-closures-and-iterators.md#迭代器 vs 生成器)
  • [宏:编写代码的代码](ch12-closures-and-iterators.md#为什么-rust 需要宏)

第三部分 — 高级主题与迁移

13. 并发编程 🔴

14. Unsafe Rust、FFI 与测试 🔴

  • [何时以及为何使用 Unsafe](ch14-unsafe-rust-and-ffi.md#何时以及为何使用 unsafe)
  • [PyO3:为 Python 编写 Rust 扩展](ch14-unsafe-rust-and-ffi.md#pyo3 为 python 编写 rust 扩展)
  • 单元测试 vs pytest

15. 迁移模式 🟡

  • [Rust 中常见的 Python 模式](ch15-migration-patterns.md#rust-中常见的 python 模式)
  • [Python 开发者必备的 Crate](ch08-crates-and-modules.md#python-开发者必备的 crate)
  • 渐进式采用策略

16. 最佳实践 🟡


第四部分 — 实战项目

17. 综合项目:CLI 任务管理器 🔴

  • [项目:rustdo](ch17-capstone-project.md#项目 rustdo)
  • [数据模型、存储、命令、业务逻辑](ch17-capstone-project.md#步骤 1-定义数据模型 - 第 -3-6-10-11-章)
  • [测试与扩展目标](ch17-capstone-project.md#步骤 7-测试 - 第 -14-章)