Rust的安全性和穩健型

非凸科技發表於2023-03-14

Rust是圍繞安全性和穩健性而設計的。也就是,安全程式碼是不使用unsafe關鍵字的程式碼,

聲音程式碼是不會導致記憶體損壞或其他未定義行為的程式碼。“未定義行為”(UB) 在 C、C++ 和 Rust 等語言中具有特定含義,不同於“未指定”或“實現定義”行為。

Rust 最重要的特性之一是承諾所有安全程式碼都是可靠的。但是當 unsafe涉及到程式碼時,這個承諾可能會被打破,而且unsafe程式碼幾乎總是在某個地方涉及到。

資料結構喜歡Vec並且在其實現中HashMap有unsafe程式碼,就像任何與File::open作業系統對話的函式一樣。這就引出了一個常見的問題:“如果 Rust 不能保證所有安全程式碼都是可靠的,它怎麼能成為記憶體安全的語言呢?”

Rust有一個被認為是未定義的行為列表。聲音函式是保持以下不變性的函式:任何只呼叫聲音函式且不包含任何其他unsafe程式碼的程式都不能提交UB。

不直接或間接使用程式碼的函式unsafe保證是可靠的,一個不unsafe直接使用任何程式碼而至呼叫其他聲音函式的函式沒根據定義也是聲音,但是unsafe直接使用程式碼的函式和模組可能不健全,不健全函式的呼叫者也可能是不健全。模組的安全、公共API中的任何不健全都是錯誤的。

參考來源:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008913/viewspace-2939663/,如需轉載,請註明出處,否則將追究法律責任。

相關文章