以下代码:
#[derive(Copy)]
enum MyEnum {
Test
}
给我报错:
error:类型未实现特性core::clone::Clone
[E0277]
为什么会这样,我该如何解决?
Copy
特性是Clone
的子特性,因此如果实现了Copy
,就必须同时实现Clone
:
#[derive(Copy, Clone)]
enum MyEnum {
Test
}
这是有道理的,因为Copy
和Clone
都是复制现有对象的方法,但具有不同的语义。 Copy
可以通过仅复制构成对象的比特位(如C中的memcpy
)来复制对象。 Clone
可能更加昂贵,并且可能涉及分配内存或复制系统资源。任何可以使用Copy
复制的内容也可以使用Clone
复制。
Copy
依赖于特质Clone
。编译器不会尝试推断和实现这个特质。因此,您必须明确地实现Clone
特质。#[derive(Copy,Clone)]
enum MyEnum {
Test
}
derive
实现中自动推导先决条件特征的问题;你知道这个计划是否仍在进行中,或者是否存在被拒绝的方法? - Matthieu M.