Rust 中的 ptr Shared 使用問題?

時間 2021-05-30 00:01:35

1樓:

根據文件 core::ptr::Shared - Rust 和原始碼 ptr.rs.html -- source

Shared 就是保證非 null 的 raw pointer,對比 raw pointer 的好處是不用檢查 null,然後有型別資訊。沒有任何開銷。

鍊錶前驅和後繼不會被別的鍊錶共享,否則就是 Graph 了,所以不可能用 Rc。(Rc 也不能用於 Graph,因為迴圈引用……)

從資料型別來說,和別的 collection 一樣,乙個鍊錶作為整體管理可變性。利用編譯器的特性就可以保證可變性了,也不需要用 RefCell,RefCell 內部有鎖,以檢測重複的引用,雖然開銷不大,但是在這種場合用也是完全沒有必要的。

缺點是因為是 raw pointer ,Rust 自身的安全系統完全沒有用,這類資料結構程式設計起來小心翼翼的程度回到了 C(實際上就當成是C……)。

不過因為是 std,所以沒問題。

實際上編寫複雜資料結構很難避免 raw pointer,而大多數資料結構作為乙個整體設計,會暴露出安全的介面,只要編碼正確,不安全性也只會被侷限在資料結構內部。

另外,如果對 Rust 實現 Graph 感興趣 Modeling graphs in Rust using vector indices

rust中的lifetime到底是什麼?

匿蟒 首先,lifetime合適的翻譯是生存期,不是生命週期 lifecycle 它是一條命,沒有週期性。其次,乙個記憶體資源,從它出現,到被丟棄 drop 這就是從生到死,這之間即其生存期。a 屬於lifetime標記。lifetime標記通常以 開頭,後面以abcd來區分。fnf a,b v1 ...

(翻譯)Rust中的設計模式 4 The Default Trait

滴滴答答 在我看來,恐婚的人應該分為四種,一種對婚後生活過於幻想期待,覺得應該去戀愛時期美好,有特別多期待,但是在身邊人或者網路中一些例子告訴你婚後生活那種繁雜瑣碎,生活的壓力,打破了你美好的幻想,因此恐婚。一種就是活的自我,始終堅信婚姻就是墳墓,覺得婚姻限制了自己的人身自由,不喜歡束縛的感覺,認為...

如何在Rust中寫Y組合子?

Nugine 這裡給出兩種實現。符合理論要求的 fny f implFn dynFn A O,A O implFn A O impl a,A,O Copy forX a,A,O impl a,A,O X a,A,O move a x X a x.call x a X x,a f a x.call x...