我要代表在类似下面的存储器中的数据表:有没有办法通过枚举在Rust中索引数组?
| USD | EUR |
-----+-----+-----+
John | 100 | 50 |
-----+-----+-----+
Tom | 300 | 200 |
-----+-----+-----+
Nick | 200 | 0 |
-----+-----+-----+
有一组已知的人,他们每个人拥有一些货币。
而且我有以下枚举:
enum Person {
John,
Tom,
Nick
}
enum Currency {
USD,
EUR
}
我想这个编码数据作为二维数组,这将是很酷,以便能够索引的数组元素不被usize
但enum
。例如:
data[Person::John][Currency::USD] = 100;
是否可以在Rust中使用数组和枚举?或者是否有任何其他数据结构可用于此?
我知道HashMap
,但它不正是我想要的,因为:在堆上
HashMap
作品(什么使得它远远超过普通堆栈中分配阵列慢)HashMap
给我不保证该项目存在。例如。每次我想得到一些东西,我不得不解开它,并处理None
的情况下,与正常的数组的使用相比,不太方便。
这是How do I match enum values with an integer?不同,因为我不感兴趣,转换枚举usize
;我只是想通过枚举访问数组/地图项目。
你为什么不使用人与货币的特质并在John,Tom,Nick和USD,EUR?上实施这些特征? – Boiethios
听起来好像你想要一个从名称 - 货币对的关联数组到一个值。你尝试过什么吗?一个'HashMap'? –
>为什么你不使用Person和Currency作为特质,并在John,Tom,Nick和USD,EUR上实现这些特征? 我不确定我是否有这个想法,但无论如何,我希望美元和欧元枚举,在我的应用程序的其他地方导致我需要他们作为枚举。 >这听起来像是你想要一个从名称 - 货币对的关联数组到一个值。你尝试过什么吗? 感谢您的回复。我知道HashMap,但它不完全是我需要的。 HashMap在堆上工作。 –