← 学习中心

借用与引用

不可变/可变引用规则与常见编译错误

本节你将能

正确使用 &T/&mut T,并说明 借用 的互斥规则。

直觉模型

不可变借用像「多人同时只读说明书」;可变借用像「同一时间只允许一人改稿」——读写不能并行,多个写也不能并行。

核心要点

  • 可同时存在多个 &T,或唯一一个 &mut T,二者不可并存
  • 函数用引用接参可避免 move:fn len(s: &String) -> usize
  • 悬垂引用在编译期被拒绝
fn add_bang(s: &mut String) { s.push('!'); }
fn main() {
    let mut name = String::from("Rust");
    add_bang(&mut name);
    println!("{name}");
}

常见误区

在持有 &mut 时还想再借 & 打印中间状态——先缩短可变借用作用域再读。

动手

写一个同时存在 & 与 &mut 的错误示例,再改到能通过编译。

互动

测验:判断哪些借用组合合法。

本节小结

下一节用生命周期标注解释「引用能活多久」。

借用与引用 - 生命科学与前沿科技学习平台 | 必学必会