Rust 学习笔记 05:所有权 (Ownership) 上
Rust 学习笔记 05:所有权 (Ownership) 上 “I thought I knew what ownership meant until I met the borrow checker.” – Anonymous Rustacean 终于来到了 Rust 的核心 —— 所有权 (Ownership)。 作为 Go 开发者,我们习惯了 GC(垃圾回收)帮我们打理一切。我们随手创建一个指针,传给函数,传给 Channel,从来不需要关心它什么时候被释放。因为有 GC 在兜底。 但在 Rust 里,没有 GC。但它也没有让我们像 C++ 那样手动 malloc/free。 那它是怎么管理内存的? 答案就是:所有权系统 + 编译器静态检查。 1. 核心原则 所有权规则非常霸道,但只有三条: Rust 中的每一个值都有一个被称为其 所有者 (owner) 的变量。 值在任一时刻有且只有一个所有者。 当所有者(变量)离开作用域,这个值将被丢弃 (Drop),内存被释放。 这听起来很像作用域管理,但最关键的是第二条:有且只有一个所有者。 2. 移动 (Move) 语义 在 Go 中,变量赋值默认是值拷贝(对于指针是拷贝地址)。 1// Go 代码 2s1 := "hello" 3s2 := s1 4// 现在 s1 和 s2 都指向同一个字符串,随便用 但在 Rust 中,对于复杂类型(如 String,在堆上分配),情况完全不同: ...