Rust的所有权系统是其最核心的特性,也是区别于其他语言的关键。本文将深入讲解所有权规则、借用机制和生命周期,帮助你理解Rust如何在编译期就消除内存安全问题。 ## 什么是所有权? Rust通过所有权系统管理内存,无需垃圾回收器。三条核心规则: 1. Rust中每个值都有一个所有者(owner) 2. 同一时刻只能有一个所有者 3. 当所有者离开作用域,值被丢弃(drop) ```rust fn main() { let s1 = String::from("hello"); let s2 = s1; // s1的所有权转移给s2 // println!("{}", s1); // 编译错误!s1已失效 println!("{}", s2); // 正常 } ``` ## 借用与引用 借用允许你引用值而不获取所有权: - 不可变引用 &T:允许多个同时存在 - 可变引用 &mut T:同一时刻只能有一个 ```rust fn calculate_length(s: &String) -> usize { s.len() } fn append_string(s: &mut String) { s.push_str(", world"); } ``` ## 生命周期 生命周期标注帮助编译器验证引用的有效性: ```rust fn longest<'a>(x: &'a str, y: &'a str) -> &'a str { if x.len() > y.len() { x } else { y } } ``` 理解所有权系统是掌握Rust的基础,它能让你写出既安全又高效的代码。