具有内部元组和特定值的 Rust 枚举
rust enum with internal tuple and specific values
有什么方法可以为不同的枚举变体和内部元组指定特定的值
持有额外的变量?
我想要的是这样的:
#[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,
...
}
如果没有,那么实现类似目标的最佳方法是什么?
谢谢!
您可以使用 enum-map
,或者您可以这样做:
impl Test {
#[inline]
fn get_val(&self) -> u8 {
match self {
Self::a(_) => 0x01,
Self::b(_, _) => 0x32,
Self::c(_) => 0x44,
}
}
}
您正在寻找的功能已经实现,并且称为 arbitrary_enum_discriminant
, but not yet 在稳定版本中发布。
你可以等到 Rust 1.56.0 发布,也就是 expected to be October 21st 2021,或者使用不稳定的编译器 nightly build。
有什么方法可以为不同的枚举变体和内部元组指定特定的值 持有额外的变量? 我想要的是这样的:
#[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,
...
}
如果没有,那么实现类似目标的最佳方法是什么?
谢谢!
您可以使用 enum-map
,或者您可以这样做:
impl Test {
#[inline]
fn get_val(&self) -> u8 {
match self {
Self::a(_) => 0x01,
Self::b(_, _) => 0x32,
Self::c(_) => 0x44,
}
}
}
您正在寻找的功能已经实现,并且称为 arbitrary_enum_discriminant
, but not yet 在稳定版本中发布。
你可以等到 Rust 1.56.0 发布,也就是 expected to be October 21st 2021,或者使用不稳定的编译器 nightly build。