Rust 所有权系统入门
理解 Rust 的核心概念:所有权、借用和生命周期。
Rust 的所有权系统是它最独特的特性,也是初学者最大的挑战。
所有权规则
- 每个值有一个所有者
- 同一时间只有一个所有者
- 当所有者离开作用域,值被丢弃
移动语义
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);
借用检查器确保内存安全,无需垃圾回收。