2015-07-03 42 views

回答

4

使用Wrapping類型,或直接使用wrapping functions。這些禁用溢出檢查。 Wrapping類型允許您像平常一樣使用普通操作符。

此外,當您以「發佈」模式(例如使用cargo build --release)編譯代碼時,會忽略溢出檢查以提高性能。不要依賴這個,使用上面的類型或函數,以便代碼在調試版本中工作。

+3

出於兼容性考慮,觀察到一些環繞功能AREN不穩定,直到1.2.0,但包裝類型已準備就緒,可供使用。 –

1

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強制溢出檢查=否。 –