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