Rust 程式設計視訊教程(進階)——009 智慧指標

linghuyichong發表於2020-01-26

頭條地址:https://www.ixigua.com/i677586170644791348...
B站地址:https://www.bilibili.com/video/av81202308/

1、指標是一個包含記憶體地址的變數。這個地址指向一些其它的資料。
智慧指標是一類資料結構,它們表現類似於指標,但是也擁有額外的後設資料,最明顯的,它們擁有一個引用計數。引用計數記錄智慧指標總共有多少個所有者,並且當沒有任何所有者時清除資料。
普通引用和智慧指標的一個額外區別是:引用只是只借用資料的指標,而智慧指標則是擁有它們指向的資料。

2、智慧指標通常使用結構體實現。智慧指標區別於常規結構體的顯著特徵在於其實現了Deref和Drop trait。
(1)Deref trait允許智慧指標結構體例項表現的像引用一樣,這樣就可以編寫即用於引用,又用於智慧指標的程式碼。
(2)Drop trait允許我們自定義當智慧指標離開作用域時執行的程式碼。

3、幾個標準庫中的智慧指標:
Box,用於在堆上分配;
Rc,一個引用計數型別,其資料可以有多個所有者;
Ref和RefMut,通過RefCell<T訪問>,一個在執行時而不是在編譯時執行借用規則的型別。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

令狐一衝

相關文章