以下代码:

#[derive(Copy)]
enum MyEnum {
    Test
}

给了我这个错误:

为什么会这样?我该如何解决?

推荐答案

Copy trait is a subtrait of Clone,所以如果实现Copy,则始终需要实现Clone:

#[derive(Copy, Clone)]
enum MyEnum {
    Test
}

这是有道理的,因为CopyClone都是复制现有对象的方法,但语义不同.Copy可以通过复制组成对象的位来复制对象(比如C中的memcpy).Clone可能更昂贵,可能涉及分配内存或复制系统资源.任何可以用Copy复制的东西也可以用Clone复制.

Rust相关问答推荐

异步FN中的 rust 递归

在不重写/专门化整个函数的情况下添加单个匹配手臂到特征的方法?

如何获取Serde struct 的默认实例

如何go 除铁 rust 中路径组件的第一项和最后一项?

有没有一种惯用的方法来判断VEC中是否存在变体?

`use` 和 `crate` 关键字在 Rust 项目中效果不佳

如何在 Rust 中将函数项变成函数指针

sha256 摘要仅适用于 &*

go 重并堆积MPSC通道消息

Rust 异步循环函数阻塞了其他future 任务的执行

为什么需要同时为值和引用实现`From`?方法不应该自动解引用或borrow 吗?(2023-06-16)

如何在 Rust 的 Hyper 异步闭包中从外部范围正确读取字符串值

如何将 Rust 字符串转换为 i8(c_char) 数组?

通用函数中的生命周期扣除和borrow (通用测试需要)

将文件的第一行分别读取到文件的其余部分的最有效方法是什么?

火箭整流罩、tokio-scheduler 和 cron 的生命周期问题

制作嵌套迭代器的迭代器

您如何使用枚举反序列化字符串,其中任何其他值反序列化为新类型变体同时保留字符串?

如何重写这个通用参数?

类型参数不受 impl 特征、自身类型或谓词的约束