Avatar ·

क्या Rust में मॉड्यूलो (modulo) ऑपरेशन होता है (शेषफल नहीं)?

सभी को नमस्कार! मैंने हाल ही में 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` नकारात्मक होता है, तो यह विफल हो जाता है।