rust - 具有内部元组和特定值的 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,
...
}
如果不是,那么实现类似目标的最佳方法是什么?
谢谢!
解决方案
你可以使用enum-map
,或者你可以做这样的事情:
impl Test {
#[inline]
fn get_val(&self) -> u8 {
match self {
Self::a(_) => 0x01,
Self::b(_, _) => 0x32,
Self::c(_) => 0x44,
}
}
}
推荐阅读
- sql - 是否总是可以避免在 SQL 中使用 UNION?
- xamarin.forms - Xamarin 和手持设备
- macos - 有没有办法在 Haskell for Mac 中获取有关内置函数的信息
- javascript - 创建自定义多面体几何的问题
- javascript - 当我的应用程序尝试对 img 标记进行 OCR 时,Tesseract.js 失败并出现一个钝错误
- macos - 使用波前材质文件颜色参数 Kd 在 MetalKit 子网格中设置顶点颜色的最佳方法是什么?
- mapping - Informatica - 在工作流中运行并行映射
- machine-learning - 将时间序列数据集中到单个微服务中以进行跨实体查询
- yocto - 将 DISTRO_FEATURES 添加到图像 bitbake 配方
- java - 无法从 Java Netbeans 连接到 Mariadb