不安全 Rust

Rust 语言包含两个部分:

  • **安全 Rust:**内存安全,没有潜在的未定义行为。
  • **不安全 Rust:**如果违反了前提条件,可能会触发未定义的行为。

本课程中出现的大多为“安全 Rust”,但是了解“不安全 Rust”的定义 非常重要。

不安全的代码通常内容很少而且与其他代码隔离, 其正确性也应得到仔细记录。这类代码通常封装在安全的抽象层中。

不安全 Rust 提供了五种新功能:

  • 解引用原始指针。
  • 访问或修改可变的静态变量。
  • 访问 union 字段。
  • 调用 unsafe 函数,包括 extern 函数。
  • 实现 unsafe trait。

下面,我们将简要介绍这些不安全功能。如需了解完整详情,请参阅 《Rust 手册》第 19.1 章Rustonomicon

不安全 Rust 并不意味着代码不正确,而是这意味着开发者已停用 编译器的安全功能,必须自行编写正确的 代码。也就是说,编译器不再强制执行 Rust 的内存安全规则。