面试题答案
一键面试#[derive(Clone)]
struct Point {
x: i32,
y: i32
}
clone
方法的操作
当调用clone
方法时,它会创建结构体Point
的一个全新副本,将原实例的所有字段值(即x
和y
的值)复制到新的实例中。
为什么需要实现Clone
trait
在Rust中,默认情况下,结构体并不会自动拥有复制语义。实现Clone
trait,就是明确地告诉Rust编译器这个结构体是可以被复制的,并且提供了具体的复制行为(这里由derive
宏自动生成了复制行为)。只有实现了Clone
trait,才能在结构体实例上调用clone
方法来进行复制操作,否则调用clone
方法会导致编译错误。