我要代表在類似下面的存儲器中的數據表:有沒有辦法通過枚舉在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在堆上工作。 –