Enums ";未实施特征克隆”;导出枚举的特征副本时
以下代码:Enums ";未实施特征克隆”;导出枚举的特征副本时,enums,copy,rust,Enums,Copy,Rust,以下代码: #[derive(Copy)] enum MyEnum { Test } 给我这个错误: 错误:MyEnum类型未实现traitcore::clone::clone[E0277] 为什么会出现这种情况,我如何修复它?的,因此如果您实现了复制,则始终需要实现克隆: #[derive(Copy, Clone)] enum MyEnum { Test } 这很有意义,因为Copy和Clone都是复制现有对象的方法,但语义不同Copy只需复制构成对象的位即可复制对象(如C
#[derive(Copy)]
enum MyEnum {
Test
}
给我这个错误:
错误:MyEnum类型未实现traitcore::clone::clone
[E0277]
为什么会出现这种情况,我如何修复它?的,因此如果您实现了复制,则始终需要实现克隆
:
#[derive(Copy, Clone)]
enum MyEnum {
Test
}
这很有意义,因为Copy
和Clone
都是复制现有对象的方法,但语义不同Copy
只需复制构成对象的位即可复制对象(如C中的memcpy
)<代码>克隆
的成本可能更高,可能涉及分配内存或复制系统资源。任何可以用Copy
复制的东西也可以用Clone
复制。这是因为traitCopy
取决于traitClone
。
编译器不会尝试为您推断和实现该特性。
因此,您还必须显式地实现克隆特性
就像这样:
#[derive(Copy,Clone)]
enum MyEnum {
Test
}
我记得在
derivate
实现中有一次关于自动派生先决条件特征的讨论;你知道它是否仍在计划中,或者是否存在导致其被拒绝的方法问题?