我有一个Rust中的枚举,它有一个值取String
:
#[derive(Clone, Copy)]
enum Simple {
Error(String),
Okay,
Foo([u32; 5]),
}
fn main() {
let x = Simple::Error(String::from("blah"));
let y = x.clone();
}
上面的枚举值Foo
表示我使用的大约10个其他枚举,它们采用可复制的类型或array.编译器似乎没有抱怨它们,只有Error(String)
导致了这种情况:
error[E0204]: the trait `Copy` may not be implemented for this type
--> src/main.rs:1:17
|
1 | #[derive(Clone, Copy)]
| ^^^^
2 | enum Simple {
3 | Error(String),
| ------ this field does not implement `Copy`
|
出于某种原因,String
是不可复制的.我不明白.我如何为一个枚举实现Clone
,只针对一个有问题的类型,而对其余类型使用默认impl?