The Rustonomicon
警告:本书尚未完成。文档化所有内容并重写过时部分需要一些时间。请参阅问题追踪器以查看缺失/过时的内容,如果您发现任何尚未报告的错误或想法,请随时在那里开启新的 Issue。
不安全 Rust 的黑暗艺术
本知识“按原样”提供,不作任何明示或暗示的保证,包括但不限于保证释放无法形容的恐怖,这些恐怖会粉碎你的精神,让你的思想在未知无限的宇宙中漂流。
当你编写不安全的 Rust 程序时,《Rustonomicon》会深入探讨你需要理解的所有可怕细节。
如果你希望拥有一份长期且愉快的 Rust 编程生涯,你现在就应该回头并忘记你曾见过这本书。它不是必需的。然而,如果你打算编写不安全代码——或者只是想深入了解语言的内部——这本书包含大量有用信息。
与《Rust 程序设计语言》不同,我们将假定读者已具备相当多的先验知识。特别是,你应该熟悉基本的系统编程和 Rust。如果你对这些主题感到不适,你应该考虑先阅读这本编程指南。尽管如此,我们不会假设你已经读过它,并在适当的时候会仔细地回顾一些基本知识。如果你愿意,可以直接跳到这本书;但请记住,我们不会从头解释一切。
本书主要作为《参考手册》的高层次补充。如果说《参考手册》旨在详细说明语言每个部分的语法和语义,那么《Rustonomicon》则旨在描述如何将这些部分组合使用,以及在使用过程中会遇到的问题。
《参考手册》会告诉你引用、析构函数和 unwinding 的语法和语义,但它不会告诉你如何将它们组合起来可能导致异常安全问题,或者如何处理这些问题。
应该注意的是,《Rustonomicon》和《参考手册》尚未很好地同步,因此它们可能包含重复内容。通常情况下,如果两份文档存在冲突,应假定《参考手册》是正确的(它尚未被视为规范性文档,但维护得更好)。
本书涵盖的主题包括:(不)安全的含义,语言和标准库提供的不安全原语,利用这些不安全原语创建安全抽象的技术,子类型和变异,异常安全(panic/展开安全),处理未初始化内存,类型欺骗,并发,与其他语言互操作(FFI),优化技巧,构造如何降级到编译器/操作系统/硬件原语,如何不让内存模型专家生气,你肯定会让他们生气,以及更多。
《Rustonomicon》并非旨在详尽描述标准库中每个 API 的语义和保证,也不是旨在详尽描述 Rust 的每个特性。
除非另有说明,本书中的 Rust 代码使用 Rust 2024 版本。