執行時期保證

在執行階段不會產生未定義的行為,好處如下:

  • 陣列存取行為會經過邊界檢查。
  • 整數溢位的行為是明確的 (恐慌或迴繞)。

重要須知:

  • 整數溢位的處理是透過 overflow-checks 編譯時間標記定義的。如果啟用的話,程式就會恐慌 (程式受控地異常終止),如未啟用,則會發生語意迴繞現象。根據預設,在偵錯模式 (cargo build) 中會發生恐慌,在發布模式 (cargo build --release) 中會發生迴繞。

  • 您無法使用編譯器參數停用邊界檢查,也無法直接透過 unsafe 關鍵字停用。不過,您可以使用 unsafe 呼叫 slice::get_unchecked 這類不執行邊界檢查的函式。