如何关闭整数溢出保护?
答
使用Wrapping
类型,或直接使用wrapping functions。这些禁用溢出检查。 Wrapping
类型允许您像平常一样使用普通操作符。
此外,当您以“发布”模式(例如使用cargo build --release
)编译代码时,会忽略溢出检查以提高性能。不要依赖这个,使用上面的类型或函数,以便代码在调试版本中工作。
答
Francis Gagné's answer绝对是您的案例的正确答案。但是,我会说有一个编译器选项来禁用溢出检查。我看不出有任何理由去使用它,但它的存在,可能还有约被称为:
use std::u8;
fn main() {
u8::MAX + u8::MAX;
}
编译和运行:
$ rustc overflow.rs
$ ./overflow
thread '<main>' panicked at 'arithmetic operation overflowed', overflow.rs:4
$ rustc -Z force-overflow-checks=no overflow.rs
$ ./overflow
$
+1
现在甚至可以在货物上使用这个标志:即使货物稳定,货物锈蚀 - -Z强制溢出检查=否。 –
出于兼容性考虑,观察到一些环绕功能AREN不稳定,直到1.2.0,但包装类型已准备就绪,可供使用。 –