Rust 所有权系统入门

理解 Rust 的核心概念:所有权、借用和生命周期。

Rust 的所有权系统是它最独特的特性,也是初学者最大的挑战。

所有权规则

  1. 每个值有一个所有者
  2. 同一时间只有一个所有者
  3. 当所有者离开作用域,值被丢弃

移动语义

let s1 = String::from("hello");
let s2 = s1;  // s1 被移动到 s2
// println!("{}", s1);  // 编译错误!

克隆

let s1 = String::from("hello");
let s2 = s1.clone();  // 深拷贝
println!("{} {}", s1, s2);  // 都可以用

借用

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

let s1 = String::from("hello");
let len = calculate(&s1);
println!("{}", len);

借用检查器确保内存安全,无需垃圾回收。