📝 借用与引用

借用与引用 #

  • 创建一个引用的行为称为 借用
  • 允许使用值但不获取其所有权

引用规则 #

  • 在任意给定时间,要么 只能有一个可变引用,要么 只能有多个不可变引用。
  • 引用必须总是有效的。

可变引用 #

允许修改一个借用的值,这就是可变引用(&mut)。

fn main() {
    let mut s = String::from("hello");
    change(&mut s);
}
fn change(some_string: &mut String) {
    some_string.push_str(", world");
}

悬垂引用(Dangling References) #

fn main() {
    let reference_to_nothing = dangle();
}

fn dangle() -> &String {
    // dangle 返回一个字符串的引用
    let s = String::from("hello"); // s 是一个新字符串
    &s // 返回字符串 s 的引用
} // 这里 s 离开作用域并被丢弃。其内存被释放。
  // 危险!