Rc

Rc 是參考計數的共用指標。如要在多個位置參考相同的資料,可以使用這個指標:

use std::rc::Rc;

fn main() {
    let a = Rc::new(10);
    let b = Rc::clone(&a);

    println!("a: {a}");
    println!("b: {b}");
}
  • 如果您處於多執行緒的環境,請參閱 ArcMutex
  • 您可以將共用指標「降級」為 Weak 指標,以便建立之後會捨棄的循環。
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)。