Appearance
Day 04 - 所有权系统
什么是所有权?
Rust的核心特性:每个值有唯一所有者,当所有者离开作用域,值被自动回收。
rust
fn main() {
let s1 = String::from("hello");
let s2 = s1; // s1移动到s2
// println!("{}", s1); // 错误!s1已无效
println!("{}", s2); // 正确
}规则
- 每个值有一个所有者
- 同一时间只有一个所有者
- 所有者离开作用域,值被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 | 借用 | ⬜ |
