Rust में enum मानों को पूर्णांक (i32, u64) से कैसे मैप करें?
नमस्ते सहकर्मियों! मैंने अभी Rust सीखना शुरू किया है और एक समस्या का सामना किया है जो सरल लगती है, लेकिन मुझे कोई सुंदर समाधान नहीं मिल रहा।
मेरे पास एक `Color` एनम है जो रंगों का वर्णन करता है:
```rust
enum Color {
Red,
Green,
Blue,
}
```
मैं प्रत्येक वेरिएंट को एक पूर्णांक मान देना चाहता हूं, ताकि, उदाहरण के लिए, `Red` 0 से, `Green` 1 से, और `Blue` 2 से मेल खाए। और फिर मुझे चाहिए:
1. एनम वेरिएंट से संख्या प्राप्त करना (जैसे, `Color::Green` से `1` प्राप्त करना)।
2. उल्टा रूपांतरण करना: संख्या (जैसे, `2`) से `Color::Blue` वेरिएंट प्राप्त करना।
C++ या C# में, मैं बस `(int)color` या `(Color)2` लिखता। Python में, मैं dictionary का उपयोग करता। लेकिन Rust में टाइप्स के साथ अधिक सख्ती है।
मैंने `as` का उपयोग करने की कोशिश की:
```rust
let c = Color::Red;
let n = c as i32; // यह काम करता है
```
लेकिन मुझे नहीं पता कि पूर्णांक से वापस एनम में कैसे जाऊं। क्या कोई मानक तरीका है या मुझे `match` या `From`/`TryFrom` ट्रेट्स का उपयोग करना होगा? क्या Rust में C/C++ जैसा सीधा कास्टिंग संभव है?