相关疑难解决方法(0)

如何为包含String的类型实现复制和克隆?

我在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();
}
Run Code Online (Sandbox Code Playgroud)

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`
Run Code Online (Sandbox Code Playgroud)

出于某种原因,String不可复制.我不懂.Clone对于其他类型的枚举,如何使用默认impl进行其余操作时,如何实现枚举?

rust

18
推荐指数
2
解决办法
8607
查看次数

标签 统计

rust ×1