Rust編程進階:027、智能指針介紹

1、指針是一個包含內存地址的變量。這個地址指向一些其它的數據。
智能指針是一類數據結構,它們表現類似於指針,但是也擁有額外的元數據,最明顯的,它們擁有一個引用計數。引用計數記錄智能指針總共有多少個所有者,並且當沒有任何所有者時清除數據。
普通引用和智能指針的一個額外區別是:引用只是只借用數據的指針,而智能指針則是擁有它們指向的數據。
2、智能指針通常使用結構體實現。智能指針區別於常規結構體的顯著特徵在於其實現了Deref和Drop trait。
(1)Deref trait允許智能指針結構體實例表現的像引用一樣,這樣就可以編寫既用於引用,又用於智能指針的代碼。
(2)Drop trait允許我們自定義當智能指針離開作用域時執行的代碼。
3、幾個標準庫中的智能指針:
Box<T>,用於在堆上分配;
Rc<T>,一個引用計數類型,其數據可以有多個所有者;
Ref<T>和RefMut<T>,通過RefCell<T>訪問,一個在運行時而不是在編譯時執行借用規則的類型。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章