Rc
Rc 是參考計數的共用指標。如要在多個位置參考相同的資料,可以使用這個指標:
use std::rc::Rc; fn main() { let a = Rc::new(10); let b = Rc::clone(&a); println!("a: {a}"); println!("b: {b}"); }
This slide should take about 5 minutes.
Rc的計數可確保只要有參考,內含的值就會保持有效。- Rust 中的
Rc就像 C++ 中的std::shared_ptr一樣。 Rc::clone的成本很低:這個做法會建立指向相同配置的指標,並增加參考計數,而不會產生深克隆,尋找程式碼效能問題時通常可以忽略。make_mut實際上會在必要時克隆內部值 (「clone-on-write」),並回傳可變動的參考。- 使用
Rc::strong_count可查看參考計數。 Rc::downgrade提供的「弱參考計數」物件,建立之後會適當捨棄的循環 (可能會搭配RefCell)。