作用域

函数不能够访问外部作用域,但是闭包可以捕获后访问.

可变性

当闭包被赋给一个变量后,如果想用那个变量以函数方式调用闭包, 变量必须可变.

所有权

对于变量甲,如果 let mut 甲: 某类型 = 初始化代码

  • &甲: 更适合被称作甲的静态共享引用.
  • &mut 甲: 更适合被称作甲的静态独占引用

在甲本身被读 / 写之后,如果存在一个甲的静态独占引用被解引用 (即被使用), 对甲读 / 写的代码非法.

对于没有 Copy 禀赋的类型,赋值 (还有传参, 传参属于特殊的赋值) 会转移所有权.

对于有 Copy 禀赋的类型,赋值会复制一个新的对象.

其实 Copy 禀赋没有任何需要实现的方法, 只是表示这个类型的对象保存在栈上,能够只用 memcpy 执行 bit 级别的复制和覆写.

因此,一个类型不能同时具有 Copy 禀赋和 Drop 禀赋. 否则无法保证内部资源的有效性.

如果想要自定义复制的细节,使用 Clone 禀赋.