Rust 对象特性
作用域
函数不能够访问外部作用域,但是闭包可以捕获后访问.
可变性
当闭包被赋给一个变量后,如果想用那个变量以函数方式调用闭包, 变量必须可变.
所有权
对于变量甲,如果 let mut 甲: 某类型 = 初始化代码
&甲
: 更适合被称作甲的静态共享引用.&mut 甲
: 更适合被称作甲的静态独占引用
在甲本身被读 / 写之后,如果存在一个甲的静态独占引用被解引用 (即被使用), 对甲读 / 写的代码非法.
对于没有 Copy 禀赋的类型,赋值 (还有传参, 传参属于特殊的赋值) 会转移所有权.
对于有 Copy 禀赋的类型,赋值会复制一个新的对象.
其实 Copy 禀赋没有任何需要实现的方法,
只是表示这个类型的对象保存在栈上,能够只用 memcpy
执行
bit 级别的复制和覆写.
因此,一个类型不能同时具有 Copy 禀赋和 Drop 禀赋. 否则无法保证内部资源的有效性.
如果想要自定义复制的细节,使用 Clone 禀赋.
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
GitalkValine