Avatar ·

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 =