# 所有权机制

URL: https://caijiao.org/rust/04-ownership/01-ownership
Source: docs/rust/04-ownership/01-ownership.md
Description: Rust 的所有权机制是其核心特性，通过独特的所有权规则保证内存安全和并发安全，避免数据竞争和内存泄漏。

Rust 通过所有权（Ownership）系统管理内存，确保编译时检测资源的使用权，避免了传统语言中的悬垂指针和内存泄漏问题。

## 所有权规则

- 每个值有且只有一个所有者（owner）。
- 值在所有者离开作用域时被释放。
- 所有权可以转移（move）或借用（borrow）。

## 所有权转移（Move）

赋值或函数传参时，所有权默认会转移，原变量不可再用：

```rust
fn main() {
    let s1 = String::from("hello");
    let s2 = s1; // 所有权转移到 s2，s1 不再有效
    // println!("{}", s1); // 编译错误
    println!("{}", s2);
}
```

## 克隆（Clone）

若需要复制数据而非转移，可以调用 `.clone()`：

```rust
let s1 = String::from("hello");
let s2 = s1.clone();
println!("s1 = {}, s2 = {}", s1, s2);
```

## 所有权作用域

变量超出作用域时自动释放资源：

```rust
{
    let s = String::from("hello");
    println!("{}", s);
} // s 在此作用域结束时释放内存
```

---



Rust Playground 示例代码
