Rust所有权学习笔记
什么是所有权?
所有权是Rust的一个核心概念,它规定了如何管理内存。在Rust中,每个值都有一个被称为“所有者”的变量,它负责释放这个值的内存。当所有者离开作用域时,它就会释放这个值的内存。
所有权规则
Rust中的每个值都有一个与之对应的所有者,并遵循以下所有权规则:
- 每个值都只能有一个所有者。
- 当所有者离开作用域时,它就会释放它所拥有的值的内存。
- 如果要在代码中使用某个值的话,必须要拥有它或者借用它。
实例
以下是一个简单的例子,演示了所有权的基本概念:
rustCopy Codefn main() {
let s = "hello"; // s 是字符串字面量的所有者
let len = calculate_length(s); // s 的所有权被传递给 calculate_length 函数
println!("The length of '{}' is {}.", s, len);
} // s 离开作用域并被销毁
fn calculate_length(s: &str) -> usize {
s.len()
} // s 离开作用域,但因为它只是一个引用,没有什么特别之处发生
在这个例子中,变量s
拥有字符串字面量的所有权。当s
被传递给calculate_length
函数时,它的所有权被转移到了函数参数s
中。在函数返回后,s
离开了作用域,并且字符串字面量的所有权也就被释放了。