第 07 章:所有权与借用
本章代码基于 Rust 2024 Edition (Rust 1.85+) 编写
深入理解 Rust 的核心概念:所有权系统。
本章目标
完成本章学习后,你将掌握:
- 理解所有权、借用、生命周期的概念
- 掌握值移动(Move)语义
- 理解 Copy trait 的作用
- 掌握所有权在函数中的传递
章节内容
| 文件 | 内容 | 说明 |
|---|---|---|
| 所有权基础 | 核心规则 | 栈堆内存、三大规则、作用域 |
| String与移动 | 移动语义 | String布局、移动vs克隆 |
| 函数与Copy | 函数传递 | 参数传递、Copy trait详解 |
| 实战总结 | 最佳实践 | 常见错误、性能优化 |
| 错误诊断实战 | 编译器错误解读 | 学会读懂错误信息,建立心智模型 |
所有权三大规则
┌─────────────────────────────────────────────────────────────┐
│ 所有权核心规则 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 每个值都有一个所有者 │
│ 2. 任一时刻只能有一个所有者 │
│ 3. 所有者离开作用域,值被丢弃 │
│ │
│ 内存管理: │
│ ┌──────────────┬────────────────────┐ │
│ │ 栈内存 │ 堆内存 │ │
│ │ • 自动管理 │ • 所有权系统管理 │ │
│ │ • Copy类型 │ • 编译时检查 │ │
│ └──────────────┴────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘| 概念 | 说明 | 示例 |
|---|---|---|
| 所有者 | 拥有值的变量 | let s = String::from("hello"); |
| 移动 | 所有权转移 | let s2 = s1; (s1失效) |
| Copy | 自动复制 | let x2 = x1; (x1仍有效) |
| Clone | 显式深拷贝 | let s2 = s1.clone(); |
| 借用 | 临时使用权 | let r = &s; |
本地实验
本章示例代码位于 examples/ 目录。
bash
cargo run --example 01-ownership-basics
cargo run --example 02-string-move
cargo run --example 03-function-copy
cargo run --example 04-ownership-review
cargo run --example 05-error-diagnosis
cargo check --examples
cargo clippy --examples