我想表示内存中的数据表,如下所示:
| USD | EUR |
-----+-----+-----+
John | 100 | 50 |
-----+-----+-----+
Tom | 300 | 200 |
-----+-----+-----+
Nick | 200 | 0 |
-----+-----+-----+
有一组已知的人,每个人都拥有一些货币.
我有以下列举:
enum Person {
John,
Tom,
Nick
}
enum Currency {
USD,
EUR
}
我想将这些数据编码为2D数组,如果能够将数组元素的索引不是按usize
而是按enum
,那就太酷了.例如.:
data[Person::John][Currency::USD] = 100;
是否可以使用Rust中的数组和枚举?或者是否有其他数据 struct 可用于此目的?
我知道HashMap
,但这不是我想要的,因为:
HashMap
在堆上工作(这使得它比常规堆栈分配数组慢得多)HashMap
不能保证物品的存在.例如,每次我想得到一些东西,我必须打开它并处理None
箱,这与使用普通数组相比不是很方便.
这与How do I match enum values with an integer?不同,因为我对将enum转换为usize
不感兴趣;我只想要一种通过枚举访问数组/映射项的简便方法.