¿Cómo crear enumeraciones con valores constantes en Rust?
¡Hola, colegas! Empecé a estudiar Rust después de C++ y Python, y me encontré con un problema inesperado: ¿cómo crear correctamente enumeraciones (enums) con valores constantes? En C++ solía escribir algo como `enum Color { RED = 0xFF0000, GREEN = 0x00FF00, BLUE = 0x0000FF };`, y cada variante tenía un valor numérico. En Python usaba `IntEnum` o simplemente clases con constantes. Pero en Rust, cuando intento hacer esto:
```rust
enum HttpStatus {
Ok = 200,
NotFound = 404,
InternalServerError = 500,
}
```
El compilador da un error si intento usar esos valores como enteros. Por ejemplo, quiero convertir el estado a un número para enviarlo por la red o para logging. Intenté escribir `status as u32`, pero esto solo funciona para enumeraciones que heredan explícitamente un tipo entero. ¿Y si quiero almacenar strings u otros datos complejos? Por ejemplo, para una enumeración de "errores" con códigos y descripciones textuales:
```rust
enum Error {
NotFound { code: 42