为什么包含Box的枚举不可复制?

时间:2015-06-05 12:34:14

标签: rust

框和数组是可复制的,为什么这不能编译?

#[derive(Debug, Copy, Clone)]
enum Octree{
    Branch(Box<[Octree; 8]>),
    Filled,
    Empty,
}

编译错误:

main.rs:3:17: 3:21 error: the trait `Copy` may not be implemented for this type; variant `Branch` does not implement `Copy` [E0205]

编辑:好的,所以我不希望Octree可以复制。但是我如何让它变得可变?我希望能够更改节点的子节点。

1 个答案:

答案 0 :(得分:6)

复制仅适用于可轻松复制的类型。 Box不是复制,因为仅复制指针会违反单一所有权原则。

您想在此处使用克隆及其克隆方法。