1 2 3 4 5 6 7 8 9 10 11 12 13
use num::PrimInt as Int; /// The modulo function (handles negatives differently to Rust's remainder `%` operator). #[inline] pub fn modulo<I: Int>(a: I, b: I) -> I { match a % b { r if (r > I::zero() && b < I::zero()) || (r < I::zero() && b > I::zero()) => (r + b), r => r, } }