Ответ 1
Есть ли функция/операция модуля (не остатка!) в Rust?
Насколько я могу судить, нет модулярной арифметической функции.
Это также происходит в C, например, и является общим для использования обходного пути, как вы упомянули: (a % b) + b
.
В целом для таких языков, как C, С++, D, С#, F # или Java: %
на самом деле является остатком. Хотя в языках сценариев, таких как Perl, Python или Ruby: %
- модуль.
Разработчики языка не всегда идут "правильным математическим способом", поэтому компьютерные языки могут быть вначале странными из строгой математики. Дело в том, что как модуль, так и остаток, верны для разных целей. Модуль является более математичным, если вам нравится, в то время как остаток (в C-семействе) согласуется с общим целочисленным делением, удовлетворяющим: (a/b)*b + a%b = a
(и это принято из старого Фортрана). Поэтому %
лучше назвать остатком, и я полагаю, что Rust согласуется с C.
И, очевидно, вы не первый, отметив это, проверьте эти проблемы на Rust git -hub: