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
)。