原文链接: https://doc.rust-lang.org/nomicon/

Rust死灵书

黑魔法 之 Rust高级与非安全程序设计

注意:本文档讨论了诸多Rust尚未稳定的特性,可能包含一些错误或者过时的信息。

我一直期待的程序代码并未出现,取而代之的竟是这令人战栗的黑暗与不可名状的孤独。我看见了!那个让所有人都噤声不语的恐怖事实,那个不可言说的秘密中的秘密——这个精心构建的Rust语言,其实并不像它最初看起来那般坚固不朽。事实上,它竟然是非安全的,它的身躯散发着古怪的气味,滋生着诡异的寄生生物。而我,对这一切束手无策,因为它们都是在编译期发生的。

本书将深入挖掘Rust非安全(unsafe)编程中的一些必要但是又可怕的细节。由于此类问题天然的恐怖,本书散发出的不可描述的恐惧之力,极可能将你的神经彻底撕成千万个绝望的碎片。

如果你仍然期待着拥有一个长期且快乐的Rust编程生涯,那么现在就转身离开,彻底忘掉你曾经见到过这本书——你并不会感到生活有什么缺憾。但是,如果你计划编写非安全代码——或者仅仅是想探究一下这门语言的内在秘密——本书将给你许多有用的信息。

《Rust程序设计》那本书不同,本书假设你具备一定的基础知识。特别是你应该已经熟练掌握了基本的系统编程和Rust语言。要是还没有的话,请考虑先读这本书。我们并不假设你一定去读了,也会在适当的时候复习一下相关的基础知识。你可以跳过上面那本书直接阅读本书,但要了解我们并不会把每一个知识点都从头讲起。

我们将涉及到异常安全(exception-safety),指针别名(pointer aliasing),内存模型(memory model),编译器和硬件实现的细节,甚至还有一些类型理论(type-theory)。还会大费周章地处理一些原本不该有人关注的边界场景,因为当我们敲出unsafe几个字的时候,这些场景一下子就变得特别重要了。

我们还将花费大量时间讨论程序关注的各种不同的安全保证机制。