Rust所有权学习笔记

什么是所有权?

所有权是Rust的一个核心概念,它规定了如何管理内存。在Rust中,每个值都有一个被称为“所有者”的变量,它负责释放这个值的内存。当所有者离开作用域时,它就会释放这个值的内存。

所有权规则

Rust中的每个值都有一个与之对应的所有者,并遵循以下所有权规则:

  1. 每个值都只能有一个所有者。
  2. 当所有者离开作用域时,它就会释放它所拥有的值的内存。
  3. 如果要在代码中使用某个值的话,必须要拥有它或者借用它。

实例

以下是一个简单的例子,演示了所有权的基本概念:

rustCopy Code
fn 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离开了作用域,并且字符串字面量的所有权也就被释放了。