【问题标题】:rust enum with internal tuple and specific values具有内部元组和特定值的 rust 枚举
【发布时间】:2021-08-29 05:54:53
【问题描述】:

有没有办法为不同的枚举变体和内部元组指定特定的值 持有额外的变量? 我想要的是这样的:

#[repr(u8)]
enum Test {
a(String) = 0x01,
b(u32, u32) = 0x32,
c([u8;3]) = 0x44,
...
}

这两个都是有效的:

#[repr(u8)]
enum Test {
a(String),
b(u32, u32),
c([u8;3]),
...
}
#[repr(u8)]
enum Test1 {
a = 0x01,
b = 0x32,
c = 0x44,
...
}

如果不是,那么实现类似目标的最佳方法是什么?

谢谢!

【问题讨论】:

标签: rust enums


【解决方案1】:

你可以使用enum-map,或者你可以这样做:

impl Test {
    #[inline]
    fn get_val(&self) -> u8 {
        match self {
            Self::a(_) => 0x01,
            Self::b(_, _) => 0x32,
            Self::c(_) => 0x44,
        }
    }
}

【讨论】:

    【解决方案2】:

    您正在寻找的功能已经实现,称为arbitrary_enum_discriminant,但not yet 以稳定版本发布。

    你可以等到 Rust 1.56.0 发布,即expected to be October 21st 2021,或者使用不稳定的编译器夜间版本。

    【讨论】:

      猜你喜欢
      • 2022-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多