教程 rust tutorial

借用与引用

借用(Borrowing)是 Rust 管理内存的另一核心机制,通过引用(Reference)实现数据的临时访问,无需获取所有权。

不可变引用(&)

允许对数据只读访问,多个不可变引用可以同时存在:

rust
fn main() {
    let s = String::from("hello");
    let r1 = &s;
    let r2 = &s;
    println!("r1: {}, r2: {}", r1, r2);
}

可变引用(&mut)

允许对数据进行修改,但在同一时间只能有一个可变引用,且不能同时有不可变引用:

rust
fn main() {
    let mut s = String::from("hello");
    let r = &mut s;
    r.push_str(", world");
    println!("{}", r);
}

引用规则

  • 任意时刻要么有多个不可变引用,要么有一个可变引用。
  • 引用必须总是有效,避免悬垂引用。

函数中的引用

通过引用传参,避免所有权转移,提高性能:

rust
fn calculate_length(s: &String) -> usize {
    s.len()
}

fn main() {
    let s1 = String::from("hello");
    let len = calculate_length(&s1);
    println!("长度为: {}", len);
}

Rust Playground
打开运行
fn calculate_length(s: &String) -> usize {
    s.len()
}

fn main() { let mut s = String::from("hello");

let len = calculate_length(&s);
println!("长度为: {}", len);

let r = &mut s;
r.push_str(", world");
println!("{}", r);

}