Rc

Rc 是引用计数的共享指针。如果您需要从多个位置 引用相同的数据,请使用此指针:

use std::rc::Rc;

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

    println!("a: {a}");
    println!("b: {b}");
}
  • See Arc and Mutex if you are in a multi-threaded context.
  • 您可以将共享指针_降级_为 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 gives you a weakly reference-counted object to create cycles that will be dropped properly (likely in combination with RefCell).