Rc
Rc 是引用计数的共享指针。如果您需要从多个位置 引用相同的数据,请使用此指针:
use std::rc::Rc; fn main() { let a = Rc::new(10); let b = Rc::clone(&a); println!("a: {a}"); println!("b: {b}"); }
- Rc的计数可确保只要有引用,内含的值就会保持有效。
- Rust 中的“Rc”与 C++ 中的“std::shared_ptr”类似。
- Rc::clone的成本很低:这个做法会创建指向相同分配的指针,并增加引用计数,而不会产生深层的克隆,排查代码性能问题时通常可以忽略。
- make_mut实际上会在必要时克隆内部值(“clone-on-write”),并返回可变的引用。
- 使用 Rc::strong_count可查看引用计数。
- Rc::downgradegives you a weakly reference-counted object to create cycles that will be dropped properly (likely in combination with- RefCell).