私は、次のようなメモリ内のデータのテーブルを表現したい:Rustのenumで配列をインデックスする方法はありますか?
| USD | EUR |
-----+-----+-----+
John | 100 | 50 |
-----+-----+-----+
Tom | 300 | 200 |
-----+-----+-----+
Nick | 200 | 0 |
-----+-----+-----+
人の既知のセットがあり、それらのそれぞれは、いくつかの通貨を所有しています。
そして、私は、次の列挙型を持っている:
enum Person {
John,
Tom,
Nick
}
enum Currency {
USD,
EUR
}
私は2次元配列として、このデータをエンコードしたいのですが、ないusize
ではなくenum
によってインデックス配列要素にできることはクールになります。例:
data[Person::John][Currency::USD] = 100;
Rustで配列や列挙型を使用することはできますか?または、これに役立つ他のデータ構造がありますか?
私はHashMap
の承知していますが、それは私が欲しいものを正確ではないので:
HashMap
ができます(通常のスタックに割り当てられた配列よりも、それははるかに遅い作るもの)ヒープ上
HashMap
作品私はその商品が存在することを保証しません。例えば。私が何かを取得したいときはいつも、それをアンラップしてNone
のケースを処理しなければならないが、通常の配列の使用法と比べてそれほど便利ではない。
私はusize
に列挙型を変換するのに興味がないので、これはHow do I match enum values with an integer?は異なっています。私は列挙型で配列/マップ項目にアクセスする便利な方法がほしいです。
John、Tom、Nick、USD、EURでこれらの特性を実装しますか? – Boiethios
名前 - 通貨ペアから値への連想配列が必要なようです。何か試しましたか? 'HashMap'ですか? –
> PersonとCurrencyをTraitとして使用して、John、Tom、Nick、USD、EURのこれらの特性を実装しないのはなぜですか? 私はこの考えを持っているかどうかはわかりませんが、とにかく私はUSDとEURの列挙型を必要とし、アプリケーションの別の場所で列挙型を必要とします。 >名前と通貨のペアから値への連想配列が必要なようです。何か試しましたか? 返信いただきありがとうございます。私はHashMapを認識していますが、それは私が必要とするものではありません。 HashMapはヒープで動作します。 –