运行期保证
没有运行时未定义行为:
- 数组访问是经过边界检查的。
- 数字溢出是明确的。
要点:
-
数字溢出通过一个编译期标识是可以明确的。可选项是要么 panic(一个可控的程序奔溃),要么是环绕。默认情况下,你会在 debug 模式(
cargo build
)获得 panic 并在 release 模式(cargo build --release
)获得环绕。 -
边界检查不能通过编译期标识取消。它也不能直接通过
unsafe
关键字取消。不过,unsafe
允许你调用如slice::get_unchecked
这样的不做边界检查的函数。