为什么包含 Box 的枚举不可复制?
Why is an enum containing a Box not copyable?
框和数组是可复制的,那么为什么不能编译?
#[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
是可复制的。但是我怎样才能让它可变呢?我希望能够更改节点的子节点。
复制仅适用于可简单复制的类型。 Box 不是 Copy 因为仅仅复制指针会违反单一所有权原则。
您想在此处使用克隆及其克隆方法。
框和数组是可复制的,那么为什么不能编译?
#[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
是可复制的。但是我怎样才能让它可变呢?我希望能够更改节点的子节点。
复制仅适用于可简单复制的类型。 Box 不是 Copy 因为仅仅复制指针会违反单一所有权原则。
您想在此处使用克隆及其克隆方法。