Systems Programming
深度解析 Rust
的所有权模型
2026年2月28日
•
阅读时间 12 分钟
Rust 最引人注目的特性莫过于它的所有权 (Ownership) 模型。它是 Rust 内存安全的核心,也是许多开发者入门时的“噩梦”。
三大核心规则
Rust 的所有权系统仅由三条规则组成,但它们带来的影响却极其深远:
- Rust 中的每个值都有一个被称为其 所有者 (owner) 的变量。
- 值在任一时刻有且只有一个所有者。
- 当所有者离开作用域,这个值将被丢弃。
借用检查器 (Borrow Checker)
借用检查器是 Rust 编译器的灵魂。它在编译阶段确保你的程序没有数据竞争,没有空指针引用,也没有 UAF (Use After Free) 错误。
移动 (Move) vs 复制 (Copy)
当你将一个变量赋值给另一个变量时,Rust 会发生什么?对于存储在堆上的复杂类型 (如 String),所有权会发生 移动。原来的变量将不再有效。
let s1 = String::from("hello");
let s2 = s1; // s1 的所有权移动到了 s2
// println!("{}", s1); // 编译错误!s1 已失效
这种设计看似严苛,但它彻底解决了双重释放 (double free) 的风险,并让开发者能够编写高性能且无比稳健的代码。