cd ..
~/articles / rust-ownership
Rust ownership code on a screen

Rust 内存安全模型:所有权系统深度解析

Rust 的所有权系统一开始像一堵墙,熟悉之后会发现它更像一套提前暴露问题的设计工具。

所有权解决什么问题

传统语言常把内存安全问题留到运行时,Rust 则尽量把悬垂引用、重复释放和数据竞争提前到编译期处理。

fn main() {
  let name = String::from("lizao");
  let moved = name;
  println!("{}", moved);
}

借用与生命周期

借用允许函数临时使用值而不取得所有权。生命周期标注并不是延长变量寿命,而是告诉编译器不同引用之间的有效范围关系。

当你开始顺着 borrow checker 的提示调整结构时,通常也在顺手整理数据所有权。

从报错里学习设计

不要急着和编译器对抗。多数借用错误都在提醒你:某个数据结构同时承担了太多角色,或者状态流转还不够清晰。

实践建议

先用拥有所有权的数据结构把功能跑通,再逐步收紧借用边界。等模型稳定之后,再考虑泛型、trait 和零拷贝优化。