為什麼Rust寫個鍊錶都那麼難?

時間 2021-11-06 19:17:01

1樓:傳統的幻想書屋

Rust寫個使用unsafe的鍊錶還是蠻簡單的,跟C++難度差不多。

鍊錶這個東西天生就跟Rust的借用規則衝突,乙個鍊錶節點在操作的時候同時被多個指標擁有和修改是很常見的事,更別說雙向鍊錶這種自帶迴圈引用的資料結構了。如果不使用unsafe和指標,會有很多不必要的開銷,而且也很難寫。

所以目前標準庫自己都是unsafe實現的,鍊錶確實是Rust借用規則的痛點,不過使用unsafe也不是什麼丟人的事,況且鍊錶作為乙個容器還蠻好保證安全性的,使用unsafe不是什麼大問題。

所以不要被乙個鍊錶就勸退了,因為在Rust寫乙個safe鍊錶確實難,屬於高階知識了,不要覺得寫乙個safe鍊錶是一件簡單的事,入門就直接踢硬石頭沒有必要。

2樓:Ad Infinitum

寫鍊錶有專門的教程,名叫Learning Rust with Too Many Linked Lists。你現在的水平還不到能寫出鍊錶的。其實Rust寫出不安全的鍊錶很簡單,但是寫出安全的就要難了。

為什麼堅持運動都那麼難瘦??

最美不過佳人一笑 七分吃三分練。減脂飲食計畫。對於老手 健身和飲食經驗豐富 來說,我們一起加油,督促。對於小白來說,可以參考以下簡單的減脂飲食方案計畫開始後,早中晚餐規劃。量可以依自己需求調整,沒有最完美的方案,以下僅供參考。僅供參考。僅供參考。早餐方案可選 7 8點方案可選擇 早上不運動或者早上空...

為什麼鍊錶讀取慢刪除卻很快?

Jerry銀銀 我想說的是 你的理解沒有錯!在學習資料結構時,我也有過這個疑惑,我相信很多同學也都有。希望我能用言簡意賅的語言消除你的這個疑惑!我想,如果能想到以上兩層意思,那問題所描述的疑惑就不難消除了! 首先,對於鍊錶來說,我們只存其 head 節點的位址。在查詢時,一般函式引數會給定要查詢的節...

為什麼C鍊錶節點要用malloc函式動態分配大小?

程佳 用靜態陣列一樣可以做鍊錶,鍊錶的指標不一定就非要放記憶體位址,陣列下標一樣可以當指標。intnode 4 int next 4 int head 0 這也是鍊錶。 邱昊宇 並不一定要動態分配鴨 include struct node int main struct node node b st...