Rust的内存安全依赖于强大的类型系统和编译时检测,不过它并不能适应所有的场景。首先,所有的编程语言都需要跟外部的“不安全”接口打交道,调用外部库等,在“安全”的Rust下是无法实现的; 其次,“安全”的Rust无法高效表示复杂的数据结构,特别是数据结构内部有各种指针互相引用的时候;再次,事实上还存在着一些操作,这些操作是安全的,但不能通过编译器的验证。
Rust 的主要缺点是其对行为的强大的静态担保。但安全检查是保守的:有些程序实际上是安全的,但是编译器无法证实这是真的。为了写这种程序,我们需要告诉编译器放宽限制。为此, Rust 有一个关键词,unsafe。代码使用 unsafe 比正常的代码有更少的限制。 让我们复习语法,然后我们将讨论语义。unsafe 在两种情况下被使用。
本章开始讲解 Rust 中的 Unsafe 部分。
关注时代Java