Rust 語言之旅 目錄

智慧的不安全程式碼

智慧指標常常會使用不安全的程式碼。如同前面提過的,它們是用來與 Rust 裡最底層的記憶體互動的常見工具。

什麼是不安全的程式碼呢?不安全的程式碼跟一般的 Rust 程式碼運作方式完全相同,只是多了一些 Rust 編譯器無法保證的能力。

不安全程式碼的一個主要能力,就是解參考一個原始指標。這代表拿一個原始指標指向記憶體裡的某個位置,並宣告「這裡存在一個資料結構!」, 然後把它轉換成你可以使用的資料表示方式 (例如:把 *const u8 轉成 u8)。

Rust 沒有辦法追蹤寫入記憶體的每一個位元組代表的意義。因為 Rust 無法保證某個被當作原始指標使用的任意數字所指向的位置究竟存在什麼, 所以它把解參考這個動作放進一個 unsafe { ... } 區塊裡。

智慧指標會大量地解參考原始指標,但它們在這方面的作法已經被證實是可靠的。