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
gives you a weakly reference-counted object to create cycles that will be dropped properly (likely in combination withRefCell
).