Avatar ·

Existe-t-il en Rust une opération de modulo (et non de reste de division) ?

Bonjour à tous ! J'ai récemment commencé à apprendre Rust, je viens de Python, et j'ai rencontré un problème inattendu. En Python, j'avais l'habitude que l'opérateur `%` retourne toujours un résultat non négatif, c'est-à-dire le modulo mathématique d'un nombre. Par exemple, `(-5) % 3` en Python donne `1`. C'est très pratique pour les indices cycliques, le travail avec les horloges, les jours de la semaine et toute arithmétique modulaire. Mais en Rust, l'opérateur `%`, comme je l'ai découvert, retourne le reste de la division (remainder), et non le modulo. Et pour les nombres négatifs, il se comporte différemment : `(-5) % 3` en Rust donne `-2`. Cela casse toute ma logique ! J'écris une fonction simple pour décaler un index dans un tableau : ```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 } ``` Quand `delta` est négatif, le code plante avec une erreur ou donne un résultat incorrect. Je comprends que ce sont des opérations mathématiques différentes, mais j'ai besoin du modulo classique (pour que le résultat soit toujours dans l'intervalle `[0