The Rustonomicon

Unsafe Rust的黑魔法

Rustonomicon深入研究了编写Unsafe Rust程序时需要了解的所有可怕细节.

知识是”按原样(AS IS)”提供的,没有任何形式的明示或暗示的保证,包括但不限于释放不可描述的恐惧保证,这些恐惧粉碎你的心灵,让你的思想漂浮在未知的无限宇宙中.

由于这个问题的性质,它可能导致释放出无数的恐怖,将你的心灵粉碎成十亿个无限小的绝望碎片.

如果你希望在编写Rust程序方面有一个漫长而愉快的职业生涯,你现在应该回过头来,忘记你曾经看过这本书.没有必要.然而,如果你打算编写不安全的代码—或者只是想深入研究这种语言的内容—那么这本书包含许多有用的信息.

The Rust Programming Language 不同,我们将假设相当多的先验知识.特别是,你应该熟悉基本的系统编程和Rust.如果你对这些主题感到不舒服,则应首先考虑阅读The Book.也就是说,我们不会假设你已经阅读过,我们会在适当的情况下偶尔回顾一下基础知识.如果你愿意,你可以直接跳到这本书;只要知道我们不会从头开始解释所有的东西.

本书主要作为The Reference的高级伙伴而存在. Reference详细描述语言每个部分的语法和语义,而Rustonomicon则描述如何将这些部分结合使用,以及在这样做时会遇到的问题.

Reference将告诉你引用,析构函数和展开的语法和语义,但不会告诉你组合它们如何会导致异常安全问题,或者如何处理这些问题.

应该注意的是,在最初编写Rustonomicon时,Reference处于完全失修的状态,Reference本应涵盖的许多内容最初只在这里记录. 从那时起,尽管还远未完成,但Reference已恢复并得到适当的维护.一般来说,如果两个文档不一致,那么应该假定Reference是正确的(它尚未被认为是规范性的,只是维护得更好).

本书范围之内的主题包括:(不)安全性的含义,语言和标准库提供的不安全原语,使用这些不安全原语创建安全抽象的技术,子类型和变性,异常安全(panic/unwind-safety),使用未初始化的内存,类型双关,并发,与其他语言(FFI)互操作,优化技巧,如何构造低到编译器/OS/硬件的原语,如何使内存模型让人生气, 您如何去做使内存模型让人生气,等等.

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