面试题答案
一键面试- 浅拷贝:
let p3 = p1;
这是浅拷贝,在Rust中这叫移动(move)。p1
的所有权被转移给p3
,p1
在这之后不再可用。这种转移可以看作是一种特殊的“浅拷贝”,因为它没有复制数据,只是转移了对数据的所有权。
- 深拷贝:
let p2 = p1.clone();
这是深拷贝。因为我们为Point
结构体实现了Clone
trait,clone
方法会创建一个新的Point
实例,新实例中的x
和y
字段的值是从p1
对应的字段复制过来的,这意味着数据被真正地复制了一份,所以是深拷贝。