不安全 Rust
Rust 语言包含两个部分:
- **安全 Rust:**内存安全,没有潜在的未定义行为。
- **不安全 Rust:**如果违反了前提条件,可能会触发未定义的行为。
本课程中出现的大多为“安全 Rust”,但是了解“不安全 Rust”的定义 非常重要。
不安全的代码通常内容很少而且与其他代码隔离, 其正确性也应得到仔细记录。这类代码通常封装在安全的抽象层中。
不安全 Rust 提供了五种新功能:
- 解引用原始指针。
- 访问或修改可变的静态变量。
- 访问
union
字段。 - 调用
unsafe
函数,包括extern
函数。 - 实现
unsafe
trait。
下面,我们将简要介绍这些不安全功能。如需了解完整详情,请参阅 《Rust 手册》第 19.1 章 和 Rustonomicon。
不安全 Rust 并不意味着代码不正确,而是这意味着开发者已停用 编译器的安全功能,必须自行编写正确的 代码。也就是说,编译器不再强制执行 Rust 的内存安全规则。