· 开发

理解 Rust 类型系统

系列预告:Rust 语言的类型系统能为编程提供哪些帮助。

近年来 RIIR1 论调甚嚣尘上,大有把世界推倒重来的架势。但是打出 RIIR 口号的理由基本就那么几条,无非「内存安全」「没有 GC」,甚至夸张到了「只要我们用 Rust 重写一遍那就可以避免一切问题了口牙!」的程度。

在我个人看来这些都只是在喊口号,完全没有触及 Rust 和 C 语言的核心差异。空泛、夸大如同「传教」一般的论调对这门语言的推广已经产生了很大的负面影响2,或许有不少人甚至还没真正尝试过用 Rust 编写过任何代码,就已经受不了赛博传教、先入为主地给 Rust 打上了各种负面标签。

希望这个对 Rust 类型系统的系列分析文章能消除一些对 Rust 的误解,同时也希望能通过这些文章稍微降低一点这门语言的理解门槛。

整个系列的内容安排计划如下:

  1. Rust 类型系统简介
  2. 类型、集合与关系
  3. 代数数据类型
  4. 绑定与模式匹配
  5. 副作用与可变性
  6. 特征与泛型
  7. 协变、逆变与不变
  8. 引用、借用与生命周期
  9. 闭包
  10. 高阶函数
  11. Unsafe Rust

行文会尽可能控制理解难度,尽量保持在高中数学就可以看懂的水平;但是某些内容如果不引入一些集合论或抽象代数的概念会很难讲清楚,因此涉及到这些知识点时也会加入必要的介绍。

虽然是以 Rust 语言的类型系统为基础,但是也会涉及许多其他语言(例如 C 和 TypeScript)的对比分析。

  1. Rewrite It In Rust,「用 Rust 重写」。甚至存在这么一个 GitHub 仓库

  2. Rust 为什么被称作编程界原神? - 知乎

理解 Rust 类型系统