執行時期保證
在執行階段不會產生未定義的行為,好處如下:
- 陣列存取行為會經過邊界檢查。
- 整數溢位的行為是明確的 (恐慌或迴繞)。
重要須知:
-
整數溢位的處理是透過
overflow-checks
編譯時間標記定義的。如果啟用的話,程式就會恐慌 (程式受控地異常終止),如未啟用,則會發生語意迴繞現象。根據預設,在偵錯模式 (cargo build
) 中會發生恐慌,在發布模式 (cargo build --release
) 中會發生迴繞。 -
您無法使用編譯器參數停用邊界檢查,也無法直接透過
unsafe
關鍵字停用。不過,您可以使用unsafe
呼叫slice::get_unchecked
這類不執行邊界檢查的函式。