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