Rust 编译位字段的联合时获取E0658

Rust 编译位字段的联合时获取E0658,rust,unions,bit-fields,low-level,Rust,Unions,Bit Fields,Low Level,尝试在Rust中使用联合和位字段,对于位字段,我使用的是位字段板条箱,但我一直在查找联合使用的示例,但找不到任何示例,现在我遇到了一个错误 解决此错误的正确方法是为Image2D/`3D类型创建副本构造函数吗?如果是,怎么做 error[E0658]: unions with non-`Copy` fields are unstable --> src\main.rs:48:1 | 48 | / union Image { 49 | | image3D: Image3D,

尝试在Rust中使用联合和位字段,对于位字段,我使用的是
位字段
板条箱,但我一直在查找联合使用的示例,但找不到任何示例,现在我遇到了一个错误

解决此错误的正确方法是为
Image2D
/`3D类型创建副本构造函数吗?如果是,怎么做

error[E0658]: unions with non-`Copy` fields are unstable
  --> src\main.rs:48:1
   |
48 | / union Image {
49 | |     image3D: Image3D,
50 | |     image2D: Image2D,
51 | | }
   | |_^
   |
   = note: see issue #55149 <https://github.com/rust-lang/rust/issues/55149> for more information

error: aborting due to previous error
根据Michael的回答: 只需将副本和克隆导出到结构的成员中,即可解决此问题:

#[derive(Copy,Clone)]
struct Image2D(u32);
bitfield_bitrange!{struct Image2D(u32)}
impl Image2D{
    bitfield_fields!{
       u32;
       valid, _: 0;
       width, _: 15, 1;
       heigth, _: 29, 16;
       image_type, _:31,30;
    }
}

您没有给我们提供足够的代码来确定,但我怀疑将
#[派生(复制,克隆)]
添加到您的
Image2D
Image3D
结构中就足够了。您不清楚错误消息的哪一部分?问题是,当我添加副本时,我试图将其添加到Image类中,因此它仍然会抱怨,如果我将其添加到2d或3d,仍然需要克隆,但正如Michael指出的,应该是2d和3d图像结构的复制和克隆!这解决了问题!谢谢
#[derive(Copy,Clone)]
struct Image2D(u32);
bitfield_bitrange!{struct Image2D(u32)}
impl Image2D{
    bitfield_fields!{
       u32;
       valid, _: 0;
       width, _: 15, 1;
       heigth, _: 29, 16;
       image_type, _:31,30;
    }
}