Skip to content

Day 04 - 所有权系统

什么是所有权?

Rust的核心特性:每个值有唯一所有者,当所有者离开作用域,值被自动回收。

rust
fn main() {
    let s1 = String::from("hello");
    let s2 = s1;  // s1移动到s2
    
    // println!("{}", s1); // 错误!s1已无效
    println!("{}", s2);   // 正确
}

规则

  1. 每个值有一个所有者
  2. 同一时间只有一个所有者
  3. 所有者离开作用域,值被drop

Clone vs Copy

rust
// 堆数据:需要clone
let s1 = String::from("hello");
let s2 = s1.clone();  // 深度复制

// 栈数据:自动Copy
let x = 5;
let y = x;  // 复制,不是移动
println!("{} {}", x, y);  // 两者都可用

面试考点

问题:Rust为什么没有GC?

答案: 依靠所有权系统 + 生命周期检查,编译期确定何时释放内存,无需运行时GC。零开销实现内存安全。


📅 学习进度

Day主题状态
01-03基础
04所有权系统
05借用

本文为Rust 30天学习计划第4天内容

📚 导航

| ← Day 03 - 上一章 | Day 05 - 下一章 →

最后更新: