Rust变量的本质
Rust 变量代表栈空间内存位置。
任何值都需要通过一个变量建立绑定关系,变量可以分值变量和指针变量。
- 值变量代表栈内存位置,存放的是数据值、数据值可以直接使用;
- 指针变量代表的栈内存位置是已使用的内存位置、必须解引用后才可以使用存放的值;
Rust变量属性
Rust变量有四个基本属性:
类型:约定变量所绑定的值类型(实现
Sizedtrait的类型),编译器编译时必须知道变量所绑定的值size;当绑定数据值的时候,数据值必须是size已知的值;
当绑定地址值的时候,地址值同样是size已知的值;
状态:变量所绑定值的状态(可变或不可变);
生命周期:一切皆有寿命;
作用域,变量的存在空间,离开作用域变量失效;
Sized trait:是一个空 trait,仅仅是作为一个标识使用。
Rust 中 marker trait 如下
| Copy | Types whose values can be duplicated simply by copying bits. |
|---|---|
| Send | Types that can be transferred across thread boundaries. |
| Sized | Types with a constant size known at compile time. |
| Sync | Types for which it is safe to share references between threads. |
| Unpin | Types that can be safely moved after being pinned. |
变量与一个具体类型的值绑定场景可以如下:
- 绑定栈内存某处存储的数据值;
- 绑定栈内存某处存储的地址值;
需要注意:内存中的一个值可以同时被多个变量共享绑定。