所有权机制
Rust 通过所有权(Ownership)系统管理内存,确保编译时检测资源的使用权,避免了传统语言中的悬垂指针和内存泄漏问题。
所有权规则
- 每个值有且只有一个所有者(owner)。
- 值在所有者离开作用域时被释放。
- 所有权可以转移(move)或借用(borrow)。
所有权转移(Move)
赋值或函数传参时,所有权默认会转移,原变量不可再用:
fn main() {
let s1 = String::from("hello");
let s2 = s1; // 所有权转移到 s2,s1 不再有效
// println!("{}", s1); // 编译错误
println!("{}", s2);
}
克隆(Clone)
若需要复制数据而非转移,可以调用 .clone():
let s1 = String::from("hello");
let s2 = s1.clone();
println!("s1 = {}, s2 = {}", s1, s2);
所有权作用域
变量超出作用域时自动释放资源:
{
let s = String::from("hello");
println!("{}", s);
} // s 在此作用域结束时释放内存
fn main() {
let s1 = String::from("hello");
let s2 = s1; // 所有权转移,s1 不可再用
// println!("{}", s1); // 编译错误
println!("{}", s2);
let s3 = String::from("world");
let s4 = s3.clone(); // 显式克隆
println!("s3 = {}, s4 = {}", s3, s4);
}
相关内容
- 什么是 Rust? Rust 是一门注重性能与安全的系统级编程语言,采用独特的所有权机制保障内存安全,避免数据竞争和悬垂指针,适用于系统开发、嵌入式和高并发场景。
- Rust 的历史和发展背景 Rust 起源于 Mozilla,最初由 Graydon Hoare 创建,旨在解决传统系统编程语言如 C/C++ 所面临的内存安全问题,经过多年社区发展,已成...
- Rust 的优点和适用场景 Rust 以内存安全、高性能和零成本抽象著称,适合系统编程、高并发服务、嵌入式开发和 WebAssembly 应用,是 C/C++ 的现代替代方案。
- 在不同操作系统上安装 Rust Rust 提供跨平台的安装方式,可在 Windows、macOS 和各类 Linux 系统上快速安装,推荐使用官方安装工具 rustup 进行统一管理和更新。
- 配置 Rust 开发环境 配置 Rust 开发环境主要包括设置环境变量、选择合适的编辑器和插件、管理工具链版本,以获得高效流畅的开发体验。
- 使用 Rust 的基本工具链 Rust 提供丰富的基本工具链,包括编译器 rustc、包管理器 cargo、文档生成器 rustdoc 和测试工具,构建现代软件项目高效可靠。