Como mapear valores de enum para inteiros (i32, u64) em Rust?
Olá, colegas! Acabei de começar a aprender Rust e me deparei com um problema que parece simples, mas não consigo encontrar uma solução elegante.
Tenho um enum `Color` que descreve cores:
```rust
enum Color {
Red,
Green,
Blue,
}
```
Quero atribuir a cada variante um valor inteiro, de modo que, por exemplo, `Red` corresponda a 0, `Green` a 1, `Blue` a 2. E depois preciso:
1. Obter o número a partir da variante do enum (por exemplo, de `Color::Green` obter `1`).
2. Fazer a conversão inversa: a partir de um número (por exemplo, `2`) obter a variante `Color::Blue`.
Em C++ ou C#, eu simplesmente escreveria `(int)color` ou `(Color)2`. Em Python, usaria um dicionário. Mas em Rust, a tipagem é mais rigorosa.
Tentei usar `as`:
```rust
let c = Color::Red;
let n =