Wie erstelle ich Enums mit konstanten Werten in Rust?
Hallo Kollegen! Ich habe angefangen, Rust nach C++ und Python zu lernen, und bin auf ein unerwartetes Problem gestoßen: Wie erstellt man korrekt Enums mit konstanten Werten? In C++ war ich es gewohnt, so etwas wie `enum Color { RED = 0xFF0000, GREEN = 0x00FF00, BLUE = 0x0000FF };` zu schreiben, und jede Variante hatte einen numerischen Wert. In Python habe ich `IntEnum` oder einfach Klassen mit Konstanten verwendet. Aber in Rust, wenn ich versuche, Folgendes zu tun:
```rust
enum HttpStatus {
Ok = 200,
NotFound = 404,
InternalServerError = 500,
}
```
Gibt der Compiler einen Fehler aus, wenn ich versuche, diese Werte als Ganzzahlen zu verwenden. Zum Beispiel möchte ich den Status in eine Zahl umwandeln, um ihn über das Netzwerk zu senden oder für das Logging. Ich habe versucht, `status as u32` zu schreiben, aber das funktioniert nur für Enums, die explizit einen Ganzzahltyp erben. Was ist, wenn ich Strings oder andere komplexe Daten speichern möchte? Zum Beispiel für ein Enum "Fehler" mit Codes und Textbeschreibungen:
```rust
enum Error {
NotFound { code: 42