智能指针:Box、Rc 与 Arc
何时堆分配、何时共享、何时跨线程
本节你将能
说明 Box、Rc、Arc 各自解决的问题与适用边界。
直觉模型
Box 是「把东西放到堆上的盒子」;Rc 是单线程共享所有权的计数器;Arc 是可跨线程的原子计数版本。
核心要点
Box<T>:固定大小的间接层、递归类型、把大对象移到堆上Rc<T>:单线程多所有者只读共享;写共享常配RefCellArc<T>:多线程共享;与Mutex/RwLock组合做可变共享
use std::rc::Rc;
let a = Rc::new(String::from("shared"));
let b = Rc::clone(&a);
assert_eq!(Rc::strong_count(&a), 2);
常见误区
一上来就用 Arc<Mutex<T>>——先问是否真的需要共享可变与跨线程。
动手
用 Box 定义递归链表节点;再用 Rc 让两个变量共享同一字符串。
互动
完成测验;第三章将进入结构体、枚举与 Option/Result。
本节小结
前两章打通:语法起步 + 所有权/借用/生命周期/智能指针。后续章节在此之上构建抽象与并发。