最佳答案
我在 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个其他枚举,它们采用可复制类型或数组。编译器似乎并不抱怨它们,只是抱怨 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?