1pub trait Modulus {
6 fn modulus(self, divisor: Self) -> Self;
20}
21
22impl Modulus for f64 {
23 fn modulus(self, divisor: f64) -> f64 {
24 ((self % divisor) + divisor) % divisor
25 }
26}
27
28impl Modulus for f32 {
29 fn modulus(self, divisor: f32) -> f32 {
30 ((self % divisor) + divisor) % divisor
31 }
32}
33
34impl Modulus for i64 {
35 fn modulus(self, divisor: i64) -> i64 {
36 ((self % divisor) + divisor) % divisor
37 }
38}
39
40impl Modulus for i32 {
41 fn modulus(self, divisor: i32) -> i32 {
42 ((self % divisor) + divisor) % divisor
43 }
44}
45
46impl Modulus for u64 {
47 fn modulus(self, divisor: u64) -> u64 {
48 ((self % divisor) + divisor) % divisor
49 }
50}
51
52impl Modulus for u32 {
53 fn modulus(self, divisor: u32) -> u32 {
54 ((self % divisor) + divisor) % divisor
55 }
56}