Rc

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

  1. use std::rc::Rc;
  2. fn main() {
  3. let a = Rc::new(10);
  4. let b = Rc::clone(&a);
  5. println!("a: {a}");
  6. println!("b: {b}");
  7. }
  • 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).