Skip to content

第 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