Gibt es in Rust eine Modulo-Operation (und nicht den Rest der Division)?
Hallo zusammen! Ich habe vor kurzem angefangen, Rust zu lernen, bin von Python umgestiegen und bin auf ein unerwartetes Problem gestoßen. In Python war ich es gewohnt, dass der Operator `%` immer ein nicht-negatives Ergebnis zurückgibt, also den mathematischen Modul einer Zahl. Zum Beispiel ergibt `(-5) % 3` in Python `1`. Das ist sehr praktisch für zyklische Indizes, die Arbeit mit Uhren, Wochentagen und jeder Ringarithmetik.
Aber in Rust gibt der Operator `%`, wie ich herausgefunden habe, den Rest der Division (remainder) zurück, nicht den Modul. Und bei negativen Zahlen verhält er sich anders: `(-5) % 3` ergibt in Rust `-2`. Das zerstört meine ganze Logik! Ich schreibe eine einfache Funktion zum Verschieben eines Index in einem Array:
```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
}
```
Wenn `delta`