[src]

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

Implementors