Rust 秘典

警告。 这本书是不完整的。 记录所有内容和重写过时的部分需要一段时间。 请参见issue tracker以检查哪些内容缺失/过时,如果有任何错误或想法仍未被报告,欢迎随时提一个新 Issue。

不安全 Rust 的黑魔法

这些知识是“按原样”提供的,没有任何形式的明示或暗示的保证,包括但不限于释放难以描述的恐怖,粉碎你的心灵,让你的思想漂流在不可知的无限宇宙中。

Rust 秘典挖掘了你在编写不安全 Rust 程序时需要了解的所有可怕的细节。

如果你希望在编写 Rust 程序的过程中获得长久而快乐的职业生涯,你应该现在回头,忘记你曾经看过这本书。 它没有必要。 然而,如果你打算编写不安全代码——或者只是想深入了解语言的内涵——这本书包含了很多有用的信息。

The Rust Programming Language 不同的是,我们将假设你有相当多的前期知识。 特别是,你应该对基本的系统编程和 Rust 非常熟悉。 如果你对这些主题感到困惑,你应该考虑先阅读The Book。 也就是说,我们不会假定你已经读过了,而且我们会注意偶尔在适当的时候对基础知识进行复习。 如果你想的话,你可以直接跳过The Book来看这本书:但你需要知道我们不会从头到尾地详细解释一切。

本书主要是作为The Reference的高级配套读物而存在。 《The Reference》的存在是为了详细说明语言的每一部分的语法和语义,而《Rust 秘典》的存在是为了描述如何将这些部分结合起来使用,以及你在这样做时将会遇到的问题。

《The Reference》会告诉你引用、析构器和 unwind 的语法和语义,但它不会告诉你如何将它们结合起来导致异常安全问题,或如何处理这些问题。

需要注意的是,我们没有很好地同步 The Rustnomicon 和 The Reference,所以它们可能有重复的内容。 一般来说,如果这两个文档有分歧,应该认为《The Reference》是正确的(它还没有被认为是规范性的,只是维护得更好)。

本书范围内的主题包括:(不)安全的含义、语言和标准库提供的不安全基础、用这些不安全基础创建安全抽象的技术、子类型和可变性(variance)、异常安全(恐慌/unwind 安全性)、与未初始化的内存相关的工作、类型转换、并发、与其他语言的互操作(FFI)、优化技巧、如何构建低级到编译器/操作系统/硬件的基元(primitives)、如何不使内存模型程序员生气、如何使内存模型程序员生气、以及更多。

Rust 秘典不是一个详尽描述标准库中每一个 API 的语义和保证的地方,也不是一个详尽描述 Rust 的每一个特性的地方。

除非另有说明,本书中的 Rust 代码使用 Rust 2018 版。