Systems Programming

深度解析 Rust
所有权模型

2026年2月28日 阅读时间 12 分钟

Rust 最引人注目的特性莫过于它的所有权 (Ownership) 模型。它是 Rust 内存安全的核心,也是许多开发者入门时的“噩梦”。

三大核心规则

Rust 的所有权系统仅由三条规则组成,但它们带来的影响却极其深远:

  1. Rust 中的每个值都有一个被称为其 所有者 (owner) 的变量。
  2. 值在任一时刻有且只有一个所有者。
  3. 当所有者离开作用域,这个值将被丢弃。

借用检查器 (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) 的风险,并让开发者能够编写高性能且无比稳健的代码。