क्या Rust में मॉड्यूलो ऑपरेशन (शेषफल नहीं) मौजूद है?
सभी को नमस्ते! मैंने हाल ही में Rust सीखना शुरू किया है, Python से आया हूँ, और एक अनपेक्षित समस्या का सामना किया। Python में मैं इसका आदी था कि `%` ऑपरेटर हमेशा गैर-नकारात्मक परिणाम देता है, यानी संख्या का गणितीय मॉड्यूलस। उदाहरण के लिए, Python में `(-5) % 3` का परिणाम `1` होता है। यह चक्रीय इंडेक्स, घड़ी के समय, सप्ताह के दिनों और किसी भी रिंग अंकगणित के लिए बहुत सुविधाजनक है।
लेकिन Rust में `%` ऑपरेटर, जैसा कि मैंने पाया, शेषफल (remainder) देता है, मॉड्यूलस नहीं। और नकारात्मक संख्याओं के लिए यह अलग व्यवहार करता है: Rust में `(-5) % 3` का परिणाम `-2` होता है। यह मेरे पूरे तर्क को तोड़ देता है! मैं एक सरल फंक्शन लिख रहा हूँ जो ऐरे में इंडेक्स को शिफ्ट करता है:
```rust
fn shift_index(current: usize, delta: i32, len: usize) -> usize {
let new_index = (current as i32 + delta) % len as i32;
new_index as usize
}
```
जब `delta` नकारात्मक होता है, तो यह विफल हो जाता है।