Rust 秘典
警告:本书尚未完成。记录所有内容并重写过时的部分需要一段时间。请参阅 问题跟踪器 以查看缺少/过时的内容,以及是否有任何错误或想法尚未报告,请随时在那里打开一个新问题。
不安全 Rust 的黑暗艺术
本知识按“原样”提供,不提供任何明示或暗示的保证,包括但不限于释放无法形容的恐怖的保证,这些恐怖会粉碎你的心灵,让你的思想在不可知无限的宇宙中漂泊。
Rust 秘典深入探讨了你在编写不安全 Rust 程序时需要了解的所有可怕细节。
如果你希望在编写 Rust 程序方面拥有漫长而快乐的职业生涯,你现在就应该回头,忘记你曾经见过这本书。它不是必需的。但是,如果你打算编写不安全的代码——或者只是想深入了解语言的内部结构——这本书包含了许多有用的信息。
与Rust 程序设计语言不同,我们将假设你已经具备相当多的先验知识。特别是,你应该熟悉基本的系统编程和 Rust。如果你对这些主题不熟悉,你应该考虑先阅读The Book。也就是说,我们不会假设你已经阅读过它,并且我们会注意在适当的时候偶尔对基础知识进行复习。如果你愿意,可以直接跳到这本书;只要知道我们不会从头开始解释所有内容。
这本书的存在主要是作为参考手册的高级配套读物。参考手册的目的是详细说明语言每个部分的语法和语义,而 Rust 秘典的目的是描述如何将这些部分组合在一起使用,以及你在这样做时会遇到的问题。
参考手册会告诉你引用、析构函数和栈展开的语法和语义,但它不会告诉你如何组合它们会导致异常安全问题,或者如何处理这些问题。
需要注意的是,我们还没有很好地同步 Rust 秘典和参考手册,因此它们可能包含重复的内容。一般来说,如果这两个文档不一致,则应以参考手册为准(它尚未被视为规范,只是维护得更好)。
本书涵盖的主题包括:(不)安全性的含义、语言和标准库提供的不安全原语、使用这些不安全原语创建安全抽象的技术、子类型和变型、异常安全(恐慌/展开安全)、使用未初始化内存、类型双关、并发、与其他语言互操作(FFI)、优化技巧、构造如何降低到编译器/操作系统/硬件原语、如何不让内存模型人员生气、你将如何让内存模型人员生气,等等。
Rust 秘典不是详尽描述标准库中每个 API 的语义和保证的地方,也不是详尽描述 Rust 每个特性的地方。
除非另有说明,否则本书中的 Rust 代码使用 Rust 2021 版本。