Copy
1 |
|
按位复制他们的内存布局是完全相同的,成员复制则不一定相同。
1 |
|
输出:
1 | // let b = B { a: 1, b: 1, c: 1 }; |
可以发现 Some 本身带有一个检查的效果
1 |
|
1 | // Copy 不一定只在栈上进行 |
Move
1 |
|
上述可以看出 Move 的本质是 Rust 编译期把这个 a 变量重新进行了一个未初始化的标记,并不是立刻进行 drop,它会将 drop 延后到函数末尾释放
Drop
析构函数时,按照栈先进后出的顺序进行析构,变量按照内存布局进行析构;