FRUITICECAKE
REC · 00:00:00:00

[AI 对话] 2026-07-30

关于 Rust 所有权模型的一次讨论

我

Rust 的所有权和借用规则我总是搞混,能不能用几句话讲清楚核心思路?

Claude

核心就三条规则:每个值只有一个所有者;所有权可以转移(move);同一时间要么一个可变借用,要么多个不可变借用。编译器在编译期就检查这些规则,所以运行时不需要垃圾回收。

我

那 Box<T>、Rc<T>、Arc<T> 分别用在什么场景?

Claude
  • Box<T>:单一所有权,把数据放到堆上,常用于递归结构或大小编译期未知的类型。
  • Rc<T>:单线程下的共享所有权(引用计数),多个地方需要只读访问同一份数据时用。
  • Arc<T>:Rc 的线程安全版本,多线程共享时用,通常配合 Mutex/RwLock 实现可变共享。