在 Rust 中,所有权(ownership)、借用(borrowing)和生命周期(lifetime)是其内存安全和并发模型的核心概念。它们一起确保了在编译时捕获大部分内存错误,如空指针或悬挂指针。
我们可以通过代码示例和内存模型图来说明这些概念。
1. 所有权(Ownership)
所有权规则主要有三条:
- 每个值有一个所有者(owner)。
- 每个值同时只能有一个所有者。
- 当所有者离开作用域时,值会被丢弃。
示例代码:
1 | fn main() { |
2. 借用(Borrowing)
借用分为可变借用和不可变借用:
- 不可变借用:允许多个借用,但不能修改借用的值。
- 可变借用:一次只能有一个可变借用,且不能同时存在不可变借用。
示例代码:
1 | fn main() { |
3. 生命周期(Lifetime)
生命周期用于描述引用的作用域,以防止悬挂引用。编译器通过生命周期注解(如 ‘a)来跟踪引用的生命周期,并确保所有引用在其生命周期内都是有效的。
示例代码:
1 | fn longest<'a>(s1: &'a str, s2: &'a str) -> &'a str { |

