首页 > 解决方案 > 具有内部元组和特定值的 rust 枚举

问题描述

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

#[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,
...
}

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

谢谢!

标签: rustenums

解决方案


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

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

推荐阅读