第 08 章:引用与借用
本章代码基于 Rust 2024 Edition (Rust 1.85+) 编写
掌握 Rust 的引用机制和借用规则。
本章目标
完成本章学习后,你将掌握:
- 理解引用与借用的概念
- 掌握可变引用与不可变引用的区别
- 理解借用规则和借用检查器
- 学会处理引用相关的编译错误
章节内容
| 文件 | 内容 | 说明 |
|---|---|---|
| 引用基础 | 核心概念 | 引用语法、解引用、作用域 |
| 可变引用与借用规则 | 借用规则 | mut引用、规则详解、悬垂引用 |
| 引用进阶 | 高级用法 | 引用与所有权、解引用强制 |
| 实战总结 | 最佳实践 | 借用规则实战技巧 |
| 借用检查器 | 工作原理 | NLL、常见错误解析 |
借用规则速查
┌─────────────────────────────────────────────────────────────┐
│ 借用规则 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. 可以有多个不可变引用 │
│ let r1 = &s; │
│ let r2 = &s; ✅ 同时存在 │
│ │
│ 2. 可以有一个可变引用 │
│ let r1 = &mut s; │
│ let r2 = &mut s; ❌ 不能同时存在 │
│ │
│ 3. 可变引用与不可变引用不能同时存在 │
│ let r1 = &s; │
│ let r2 = &mut s; ❌ 不能同时存在 │
│ │
│ 核心原则:引用的有效范围不能超过所有者 │
│ │
└─────────────────────────────────────────────────────────────┘| 类型 | 说明 | 示例 |
|---|---|---|
&T | 不可变引用 | let r = &x; |
&mut T | 可变引用 | let r = &mut x; |
* | 解引用 | *r |
| 借用 | 临时使用权 | 不转移所有权 |
本地实验
本章示例代码位于 examples/ 目录。
bash
cargo run --example 01-reference-basics
cargo run --example 02-mutable-references
cargo run --example 03-reference-advanced
cargo run --example 04-reference-review
cargo run --example 05-borrow-checker
cargo check --examples
cargo clippy --examples