Rust 基础:变量、引用、生命周期与可变性深度解析
变量的丢弃规则
Rust 会在变量超出作用域时自动丢弃它们,比如在特定代码块内的变量 x1 和 y1 。变量丢弃的顺序规则如下:
- 变量(包括函数参数)按逆序丢弃。
- 嵌套值按源代码顺序丢弃。
为什么变量按逆序丢弃呢?假如有一个函数,声明了一个字符串并将其引用插入到新的哈希表中。当函数返回时,哈希表必须先被丢弃,因为如果先丢弃字符串,哈希表就会持有无效引用。通常,后声明的变量可能包含对先声明变量的引用,而 Rust 的生命周期规则决定了相反的情况不会发生,所以变量按逆序丢弃。
对于嵌套值,如元组、数组或结构体中的值,如果按逆序丢弃可能会让用户感到意外。例如,创建一个包含两个值的数组,若先丢弃最后一个元素会显得很奇怪。因此,对于嵌套值,Rust 采用按源代码顺序丢弃,因为 Rust 目前不允许单个值中有自引用,所以不需要反转丢弃顺序。
引用与生命周期
Rust 允许值的所有者通过引用将值借给其他代码,而不放弃所有权。引用是带有使用规则的指针,规定了如何使用被引用的值,如是否提供对引用值的独占访问,或者引用值是否可以有其他引用指向它。
共享引用
共享引用 &T 是可以共享的指针。可以有任意数量的引用指向同一个值,并且每个共享引用都是可复制的。共享引用指向的值是不可变的,不能修改或重新赋值,也不能将共享引用转换为可变引用。
Rust 编译器可以假设共享引用指向的值在引用存在期间不会改变。例如:
超级会员免费看
订阅专栏 解锁全文
518

被折叠的 条评论
为什么被折叠?



