【发布时间】:2015-04-08 00:35:57
【问题描述】:
有没有办法提取枚举的标签,例如,将其用作索引?
我想要一个按枚举类型分类的向量的向量,即,如果我有:
enum Test {
Point {
x: i32,
y: i32,
},
Point2 {
a: i32,
b: i32,
},
Number(i32),
}
我可能想要这样的向量:
[[Test::Point{1, 2}, Test::Point{3, 4}], [Test::Number(1), Test::Number(2)]]
在给定新值的情况下,我想动态地添加到这个向量中。因此,如果一个函数在 Test::Number 中传递,它将进入第二个数组。
当然,在最坏的情况下,我可以显式地匹配每个可能的联合值,但是对于大型枚举,这会变得相当冗长和重复,因为所有的情况都会结束
match e {
Test::Point { _, _ } => v[0].push(e),
Test::Point2 { _, _ } => v[1].push(e),
Test::Number(_) => v[2].push(e),
// imagine a lot of these
}
我已经尝试了很多语法排列,但我没有得到任何可以编译的东西。有没有办法将枚举结构标签视为枚举?看起来有一个 FromPrimitive 派生,但它不稳定并且不适用于结构枚举。
(如果你不能,我想另一个问题是你是否可以编写一个宏来自动写入该匹配项)。
【问题讨论】:
标签: rust