Rust 入门:所有权(Ownership)三大规则

一、Rust 凭什么”安全又无 GC”

多数语言靠垃圾回收(GC)或手动 malloc/free 管内存。Rust 用编译期所有权检查在不用运行时 GC 的前提下保证内存安全。

二、三条所有权规则

  • 每个值有且仅有一个所有者;
  • 同一时刻只能有一个所有者;
  • 所有者离开作用域,值被自动释放(调用 drop)。

三、move 与 clone

let s1 = String::from("hi");
let s2 = s1;        // 所有权 move 给 s2,s1 失效
// println!("{}", s1);  // 编译报错
let s3 = s2.clone(); // 深拷贝,各自独立

四、栈与堆

固定大小类型(i32、bool)放栈,随作用域自动回收;String、Vec 等大小可变的数据放堆,由所有权在作用域结束自动释放,无需手动 free,也不会泄漏。

核心思想:把”谁负责释放”在编译期定死,运行时零成本。这也是 Rust 适合系统编程/嵌入式的原因。