Open sxy15 opened 8 months ago
所有权型变量的作用域是从它定义时开始到所属那层花括号结束。
引用型变量的作用域是从它定义起到它最后一次使用时结束。
引用(不可变引用和可变引用)型变量的作用域不会长于所有权变量的作用域。不然就会出现悬锤引用。
一个所有权型变量的不可变引用可以同时存在多个,可以复制多份。
一个所有权型变量的可变引用与不可变引用的作用域不能交叠,也可以说不能同时存在。
对同一个所有权型变量的可变借用之间的作用域不能交叠。
在有借用存在的情况下,不能通过原所有权型变量对值进行更新。
对于多级可变引用,要利用可变引用去修改目标资源的值的时候,需要做正确的多级解引用操作。 只有全是多级可变引用的情况下,才能修改到目标资源的值。
总结
在同一时刻,同一个所有权变量的不可变引用和可变引用两者不能同时存在,不可变引用可以同时存在多个。 可变引用具有排它性,只能同时存在一个。 不可变引用可以被任意复制多份,但是可变引用不能被复制,只能转移,这也体现了可变引用具有一定的所有权特征。
所有权:
Move语义:赋值或者传参会导致值 Move,所有权被转移,一旦所有权转移,之前的 变量就不能访问 Copy语义:如果值实现了 Copy trait,那么赋值或传参会使用 Copy 语义,相应的值会被按位拷贝(浅拷贝),产生新的值
其他类型默认都是做移动所有权的操作。