不安全 Rust

Rust 语言包含两个部分:

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

We saw mostly safe Rust in this course, but it’s important to know what Unsafe Rust is.

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

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

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

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

This slide should take about 5 minutes.

Unsafe Rust does not mean the code is incorrect. It means that developers have turned off some compiler safety features and have to write correct code by themselves. It means the compiler no longer enforces Rust’s memory-safety rules.