Explain
返回文章目录

从一次移动理解 Rust 所有权

所有权不是需要死记的限制集合,而是一套让资源生命周期可以被编译器证明的规则。

值为什么会移动

一个 String 不只是栈上的三个数字,它还拥有堆上的字符缓冲区。赋值时如果复制这组所有权信息,两个变量就可能释放同一块内存。

rust
let first = String::from("hello");
let second = first;

println!("{second}");

Rust 选择让 first 在赋值后失效。这个过程叫移动,它不复制堆上的字符,也不需要垃圾回收器。

登录后阅读完整文章

登录后可继续阅读全部内容,并访问文章对应的课后习题。

登录继续阅读