Trait num::Integer
pub trait Integer: Num + Ord + Div<Self, Self> + Rem<Self, Self> { fn div_floor(&self, other: &Self) -> Self; fn mod_floor(&self, other: &Self) -> Self; fn gcd(&self, other: &Self) -> Self; fn lcm(&self, other: &Self) -> Self; fn divides(&self, other: &Self) -> bool; fn is_even(&self) -> bool; fn is_odd(&self) -> bool; fn div_rem(&self, other: &Self) -> (Self, Self) { ... } fn div_mod_floor(&self, other: &Self) -> (Self, Self) { ... } }
Required Methods
fn div_floor(&self, other: &Self) -> Self
Floored integer division
Examples
assert!(( 8i).div_floor(& 3) == 2); assert!(( 8i).div_floor(&-3) == -3); assert!((-8i).div_floor(& 3) == -3); assert!((-8i).div_floor(&-3) == 2); assert!(( 1i).div_floor(& 2) == 0); assert!(( 1i).div_floor(&-2) == -1); assert!((-1i).div_floor(& 2) == -1); assert!((-1i).div_floor(&-2) == 0);
fn mod_floor(&self, other: &Self) -> Self
Floored integer modulo, satisfying:
assert!(n.div_floor(&d) * d + n.mod_floor(&d) == n)
Examples
assert!(( 8i).mod_floor(& 3) == 2); assert!(( 8i).mod_floor(&-3) == -1); assert!((-8i).mod_floor(& 3) == 1); assert!((-8i).mod_floor(&-3) == -2); assert!(( 1i).mod_floor(& 2) == 1); assert!(( 1i).mod_floor(&-2) == -1); assert!((-1i).mod_floor(& 2) == 1); assert!((-1i).mod_floor(&-2) == -1);
fn gcd(&self, other: &Self) -> Self
Greatest Common Divisor (GCD)
fn lcm(&self, other: &Self) -> Self
Lowest Common Multiple (LCM)
fn divides(&self, other: &Self) -> bool
Returns true
if other
divides evenly into self
fn is_even(&self) -> bool
Returns true
if the number is even
fn is_odd(&self) -> bool
Returns true
if the number is odd
Provided Methods
fn div_rem(&self, other: &Self) -> (Self, Self)
Simultaneous truncated integer division and modulus
fn div_mod_floor(&self, other: &Self) -> (Self, Self)
Simultaneous floored integer division and modulus