Rust笔记(三)
所有权和借用
所有权
所有权是用来进行内存管理,使得编译器可以在编译时根据一系列规则来确保内存安全。
所有权原则
- Rust 中每一个值都被一个变量所拥有。
- 一个值同时只能被一个变量所拥有。
- 当变量离开作用范围时,这个值也会被销毁。
拷贝与移动(move)
深拷贝
Rust 不会自动创建数据的深拷贝,需要使用 clone 方法来创建一个值的深拷贝。
例如
1 | let s1 = String::from("hello"); |
浅拷贝
浅拷贝只发生在栈上,实现了 Copy 特征的类型在赋值的时候都会执行浅拷贝。一个基本的规则是:任何基本类型的组合都可以 Copy,不需要分配内存或者某种形式资源的类型也是可以 Copy 的。
包括,
- 所有整数类型
- 布尔类型
- 所有浮点数类型
- 字符类型
- 元组类型(如果元组中的所有元素都是
Copy类型) - 不可变引用类型
&T,但是可变引用类型不可以Copy。
Tips
as_系列方法可以将一个类型转换为另一个类型,但是不会改变值的所有权。
例如
1 | let s = String::from("hello"); |
into_系列方法可以将一个类型转换为另一个类型,但是会改变值的所有权。
例如
1 | let s = String::from("hello"); |
借用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zone of Lix!
评论




