Avatar ·

Wie man Enum-Werte in Rust einer Ganzzahl (i32, u64) zuordnet?

Hallo Kollegen! Ich habe gerade angefangen, Rust zu lernen, und bin auf ein Problem gestoßen, das einfach erscheint, für das ich aber keine elegante Lösung finde.\n\nIch habe ein Enum `Color`, das Farben beschreibt:\n\n```rust\nenum Color {\n Red,\n Green,\n Blue,\n}\n```\n\nIch möchte jedem Variant einen ganzzahligen Wert zuweisen, sodass z.B. `Red` 0 entspricht, `Green` 1 und `Blue` 2. Und dann brauche ich:\n\n1. Eine Zahl aus einem Enum-Variant zu erhalten (z.B. aus `Color::Green` die `1`).\n2. Die umgekehrte Umwandlung: aus einer Zahl (z.B. `2`) den Variant `Color::Blue` zu erhalten.\n\nIn C++ oder C# würde ich einfach `(int)color` oder `(Color)2` schreiben. In Python würde ich ein Dictionary verwenden. Aber in Rust ist alles typstrikter.\n\nIch habe versucht, `as` zu verwenden:\n\n```rust\nlet c = Color::Red;\nlet n =