Rust में संख्यात्मक प्रकारों को सुरक्षित और मुहावरेदार तरीके से कैसे बदलें?
सभी को नमस्कार! मैंने C++ और Python के बाद अभी-अभी Rust सीखना शुरू किया है, और मुझे संख्याओं के रूपांतरण में एक गंभीर समस्या आ रही है। C++ में मैं बस `(int)my_float` या `static_cast(value)` लिखने का आदी था, और सब काम करता था। लेकिन Rust में कंपाइलर लगातार शिकायत करता है।
यहाँ एक विशिष्ट स्थिति है: मैं एक प्रोग्राम लिख रहा हूँ जो अंकगणितीय माध्य (average) की गणना करता है। मेरे पास पूर्णांकों का एक vector है, और मुझे परिणाम फ्लोटिंग-पॉइंट संख्या के रूप में चाहिए।
```rust
fn average(numbers: &[i32]) -> f64 {
let sum: i32 = numbers.iter().sum();
sum / numbers.len() as f64 // यह काम करता है, लेकिन बेढंगा लगता है
}
```
यह काम करता है, लेकिन मुझे लगता है कि यह गलत है। इसके अलावा, जब मैं उल्टा रूपांतरण करने की कोशिश करता हूँ — `f64` से `i32` में — तो कंपाइलर त्रुटि देता है कि बस ऐसे ही रूपांतरण नहीं किया जा सकता। उदाहरण के लिए:
```rust
let x: f64 = 3.14;
let y: i32 = x as i32; // यह काम करता है, लेकिन डेटा खो जाता है
```
मैं समझता हूँ कि Rust सुरक्षा का ध्यान रखता है, लेकिन सही तरीके से कैसे बदलें?