Rust for C# Programmers: Complete Training Guide / 面向 C# 程序员的 Rust 完整培训指南
A comprehensive guide to learning Rust for developers with C# experience. This guide covers everything from basic syntax to advanced patterns, focusing on the conceptual shifts and practical differences between the two languages.
这是一本面向具有 C# 背景开发者的 Rust 学习指南,覆盖从基础语法到高级模式的完整内容,重点讲解两门语言在思维方式和实际用法上的差异。
Course Overview / 课程概览
- The case for Rust - Why Rust matters for C# developers: performance, safety, and correctness / 为什么选择 Rust:Rust 为什么值得 C# 开发者学习,重点在性能、安全与正确性
- Getting started - Installation, tooling, and your first program / 快速开始:安装、工具链与第一个程序
- Basic building blocks - Types, variables, control flow / 基础构件:类型、变量、控制流
- Data structures - Arrays, tuples, structs, collections / 数据结构:数组、元组、结构体、集合
- Pattern matching and enums - Algebraic data types and exhaustive matching / 模式匹配与枚举:代数数据类型与穷尽匹配
- Ownership and borrowing - Rust’s memory management model / 所有权与借用:Rust 的内存管理模型
- Modules and crates - Code organization and dependencies / 模块与 crate:代码组织与依赖管理
- Error handling - Result-based error propagation / 错误处理:基于
Result的错误传播 - Traits and generics - Rust’s type system / Trait 与泛型:Rust 类型系统
- Closures and iterators - Functional programming patterns / 闭包与迭代器:函数式编程模式
- Concurrency - Fearless concurrency with type-system guarantees, async/await deep dive / 并发:由类型系统保证的无畏并发,以及 async/await 深入解析
- Unsafe Rust and FFI - When and how to go beyond safe Rust / Unsafe Rust 与 FFI:何时以及如何超越安全 Rust
- Migration patterns - Real-world C# to Rust patterns and incremental adoption / 迁移模式:真实世界中的 C# 到 Rust 模式与渐进迁移
- Best practices - Idiomatic Rust for C# developers / 最佳实践:适合 C# 开发者的 Rust 惯用法
Self-Study Guide / 自学指南
This material works both as an instructor-led course and for self-study. If you’re working through it on your own, here’s how to get the most out of it.
本材料既适合讲师授课,也适合自学。如果你打算自行学习,下面的建议能帮助你更高效地使用这套内容。
Pacing recommendations / 学习节奏建议:
| Chapters / 章节 | Topic / 主题 | Suggested Time / 建议时间 | Checkpoint / 检查点 |
|---|---|---|---|
| 1-4 | Setup, types, control flow / 环境、类型、控制流 | 1 day / 1 天 | You can write a CLI temperature converter in Rust / 你可以用 Rust 写一个命令行温度转换器 |
| 5-6 | Data structures, enums, pattern matching / 数据结构、枚举、模式匹配 | 1-2 days / 1-2 天 | You can define an enum with data and match exhaustively on it / 你可以定义携带数据的枚举并用 match 进行穷尽匹配 |
| 7 | Ownership and borrowing / 所有权与借用 | 1-2 days / 1-2 天 | You can explain why let s2 = s1 invalidates s1 / 你可以解释为什么 let s2 = s1 会使 s1 失效 |
| 8-9 | Modules, error handling / 模块、错误处理 | 1 day / 1 天 | You can create a multi-file project that propagates errors with ? / 你可以创建一个多文件项目并用 ? 传播错误 |
| 10-12 | Traits, generics, closures, iterators / Trait、泛型、闭包、迭代器 | 1-2 days / 1-2 天 | You can translate a LINQ chain to Rust iterators / 你可以把一段 LINQ 链改写成 Rust 迭代器 |
| 13 | Concurrency and async / 并发与异步 | 1 day / 1 天 | You can write a thread-safe counter with Arc<Mutex<T>> / 你可以用 Arc<Mutex<T>> 写出线程安全计数器 |
| 14 | Unsafe Rust, FFI, testing / Unsafe Rust、FFI、测试 | 1 day / 1 天 | You can call a Rust function from C# via P/Invoke / 你可以通过 P/Invoke 从 C# 调用 Rust 函数 |
| 15-16 | Migration, best practices, tooling / 迁移、最佳实践、工具链 | At your own pace / 自定节奏 | Reference material - consult as you write real code / 作为参考材料,在实际写代码时查阅 |
| 17 | Capstone project / 综合项目 | 1-2 days / 1-2 天 | You have a working CLI tool that fetches weather data / 你拥有一个可用的命令行天气工具 |
How to use the exercises / 如何使用练习:
- Chapters include hands-on exercises in collapsible
<details>blocks with solutions / 各章包含可折叠<details>区块中的动手练习与答案 - Always try the exercise before expanding the solution. Struggling with the borrow checker is part of learning - the compiler’s error messages are your teacher / 总是先做题,再展开答案。 与借用检查器“较劲”本身就是学习过程,编译器报错就是你的老师
- If you’re stuck for more than 15 minutes, expand the solution, study it, then close it and try again from scratch / 如果卡住超过 15 分钟,就先看答案,理解后再关掉并从头重做
- The Rust Playground lets you run code without a local install / Rust Playground 允许你在不本地安装的情况下运行代码
Difficulty indicators / 难度标记:
- 🟢 Beginner - Direct translation from C# concepts / 初级:可以直接从 C# 概念迁移过来
- 🟡 Intermediate - Requires understanding ownership or traits / 中级:需要理解所有权或 trait
- 🔶 Advanced - Lifetimes, async internals, or unsafe code / 高级:生命周期、async 内部机制或 unsafe 代码
When you hit a wall / 遇到难点时:
- Read the compiler error message carefully - Rust’s errors are exceptionally helpful / 仔细阅读编译器错误信息,Rust 的报错通常非常有帮助
- Re-read the relevant section; concepts like ownership (ch7) often click on the second pass / 重读相关章节,像所有权这类概念通常第二遍会更容易理解
- The Rust standard library docs are excellent - search for any type or method / Rust 标准库文档 非常优秀,遇到任何类型或方法都值得查
- For deeper async patterns, see the companion Async Rust Training / 如果想深入学习异步模式,请参考配套的 Async Rust Training
Table of Contents / 目录
Part I - Foundations / 第一部分:基础
1. Introduction and Motivation / 1. 引言与动机 🟢
- The Case for Rust for C# Developers / Rust 对 C# 开发者的价值
- Common C# Pain Points That Rust Addresses / Rust 能解决的 C# 常见痛点
- When to Choose Rust Over C# / 何时选择 Rust 而不是 C#
- Language Philosophy Comparison / 语言设计理念对比
- Quick Reference: Rust vs C# / 速查:Rust 与 C# 对比
2. Getting Started / 2. 快速开始 🟢
- Installation and Setup / 安装与环境配置
- Your First Rust Program / 你的第一个 Rust 程序
- Cargo vs NuGet/MSBuild / Cargo 与 NuGet/MSBuild 对比
- Reading Input and CLI Arguments / 读取输入与命令行参数
- Essential Rust Keywords (optional reference - consult as needed) / Rust 核心关键字(可选参考,按需查阅)
3. Built-in Types and Variables / 3. 内建类型与变量 🟢
- Variables and Mutability / 变量与可变性
- Primitive Types Comparison / 基本类型对比
- String Types: String vs &str / 字符串类型:String 与 &str
- Printing and String Formatting / 输出与字符串格式化
- Type Casting and Conversions / 类型转换
- True Immutability vs Record Illusions / 真正的不可变性与 Record 的“不可变幻觉”
4. Control Flow / 4. 控制流 🟢
- Functions vs Methods / 函数与方法
- Expression vs Statement (Important!) / 表达式与语句(非常重要)
- Conditional Statements / 条件语句
- Loops and Iteration / 循环与迭代
5. Data Structures and Collections / 5. 数据结构与集合 🟢
- Tuples and Destructuring / 元组与解构
- Arrays and Slices / 数组与切片
- Structs vs Classes / 结构体与类
- Constructor Patterns / 构造器模式
Vec<T>vsList<T>/Vec<T>与List<T>- HashMap vs Dictionary / HashMap 与 Dictionary
6. Enums and Pattern Matching / 6. 枚举与模式匹配 🟡
- Algebraic Data Types vs C# Unions / 代数数据类型与 C# Union 对比
- Exhaustive Pattern Matching / 穷尽模式匹配
Option<T>for Null Safety / 使用Option<T>实现空安全- Guards and Advanced Patterns / 守卫与高级模式
7. Ownership and Borrowing / 7. 所有权与借用 🟡
- Understanding Ownership / 理解所有权
- Move Semantics vs Reference Semantics / 移动语义与引用语义
- Borrowing and References / 借用与引用
- Memory Safety Deep Dive / 内存安全深入解析
- Lifetimes Deep Dive / 生命周期深入解析 🔶
- Smart Pointers, Drop, and Deref / 智能指针、Drop 与 Deref 🔶
8. Crates and Modules / 8. Crate 与模块 🟢
- Rust Modules vs C# Namespaces / Rust 模块与 C# 命名空间
- Crates vs .NET Assemblies / Crate 与 .NET 程序集
- Package Management: Cargo vs NuGet / 包管理:Cargo 与 NuGet
9. Error Handling / 9. 错误处理 🟡
- Exceptions vs
Result<T, E>/ 异常与Result<T, E> - The ? Operator /
?操作符 - Custom Error Types / 自定义错误类型
- Crate-Level Error Types and Result Aliases / Crate 级错误类型与
Result别名 - Error Recovery Patterns / 错误恢复模式
10. Traits and Generics / 10. Trait 与泛型 🟡
- Traits vs Interfaces / Trait 与接口
- Inheritance vs Composition / 继承与组合
- Generic Constraints: where vs trait bounds / 泛型约束:where 与 trait bound
- Common Standard Library Traits / 常见标准库 Trait
11. From and Into Traits / 11. From 与 Into Trait 🟡
12. Closures and Iterators / 12. 闭包与迭代器 🟡
Part II - Concurrency & Systems / 第二部分:并发与系统
13. Concurrency / 13. 并发 🔶
- Thread Safety: Convention vs Type System Guarantees / 线程安全:约定式保障与类型系统保障
- async/await: C# Task vs Rust Future / async/await:C# Task 与 Rust Future
- Cancellation Patterns / 取消模式
- Pin and tokio::spawn / Pin 与
tokio::spawn
14. Unsafe Rust, FFI, and Testing / 14. Unsafe Rust、FFI 与测试 🟡
- When and Why to Use Unsafe / 何时以及为何使用 Unsafe
- Interop with C# via FFI / 通过 FFI 与 C# 互操作
- Testing in Rust vs C# / Rust 测试与 C# 测试
- Property Testing and Mocking / 属性测试与 Mock
Part III - Migration & Best Practices / 第三部分:迁移与最佳实践
15. Migration Patterns and Case Studies / 15. 迁移模式与案例研究 🟡
- Common C# Patterns in Rust / Rust 中的常见 C# 模式
- Essential Crates for C# Developers / C# 开发者必备 Crate
- Incremental Adoption Strategy / 渐进式采用策略
16. Best Practices and Reference / 16. 最佳实践与参考 🟡
- Idiomatic Rust for C# Developers / 面向 C# 开发者的 Rust 惯用法
- Performance Comparison: Managed vs Native / 性能对比:托管与原生
- Common Pitfalls and Solutions / 常见陷阱与解决方案
- Learning Path and Resources / 学习路径与资源
- Rust Tooling Ecosystem / Rust 工具体系生态
Capstone / 综合项目
17. Capstone Project / 17. 综合项目 🟡
- Build a CLI Weather Tool / 构建命令行天气工具 - combines structs, traits, error handling, async, modules, serde, and testing into a working application / 将结构体、trait、错误处理、async、模块、serde 和测试整合为一个可运行应用