构建复杂图结构与树结构必备。掌握堆分配 Box、单线程引用计数 Rc、跨线程 Arc 以及打破借用规则的 RefCell 运行时检查。

1. 智能指针家族概览

智能指针内存位置所有权线程安全检查时机
Box<T>堆唯一所有者取决于 T编译期
Rc<T>堆共享所有权否 (单线程)编译期
Arc<T>堆共享所有权是 (原子操作)编译期
RefCell<T>栈/堆配合包装使用否运行期
use std::rc::Rc;
use std::cell::RefCell;

// 共享且可变的数据节点
let value = Rc::new(RefCell::new(42));
let a = Rc::clone(&value);
*a.borrow_mut() += 10;
println!("当前值: {}", value.borrow());