2
D-Bus経由でNetworkManagerとやりとりするコードを書いています。enum
をキー値のようなスキームとして使用したいと考えています。Rustのenumを双方向ルックアップテーブルとして使用する
例えば、私はこのenum
の文字列Unknown
を使用するように数字のゼロとして値0
を使用し、異なるコンテキストにするために一度たい:
pub enum NetworkManagerState {
Unknown = 0,
Asleep = 10,
Disconnected = 20,
Disconnecting = 30,
Connecting = 40,
ConnectedLocal = 50,
ConnectedSite = 60,
ConnectedGlobal = 70,
}
そうするのきれいな、最も慣用的な方法は何ですか?それぞれのエントリが(ConnectedSite, 60u32, "Connected")
のように見えるタプルベースの列挙型を定義し、各タプル属性をコンテキストに使用する方法はありますか?
マクロが必要です。 – Shepmaster
私は錆のユーザーではありませんが、慣用的な錆は文字列の値を避けることを好んでいます(パフォーマンス上の理由から)最初に遭遇したときに文字列値を解析し、その後のすべての処理に対応する列挙値を使用する方法はありませんか? – Dai