Trait num_integer::Integer

source ·
pub trait Integer: Sized + Num + PartialOrd + Ord + Eq {
Show 16 methods // Required methods 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_multiple_of(&self, other: &Self) -> bool; fn is_even(&self) -> bool; fn is_odd(&self) -> bool; fn div_rem(&self, other: &Self) -> (Self, Self); // Provided methods fn div_ceil(&self, other: &Self) -> Self { ... } fn gcd_lcm(&self, other: &Self) -> (Self, Self) { ... } fn extended_gcd(&self, other: &Self) -> ExtendedGcd<Self> where Self: Clone { ... } fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self) where Self: Clone + Signed { ... } fn div_mod_floor(&self, other: &Self) -> (Self, Self) { ... } fn next_multiple_of(&self, other: &Self) -> Self where Self: Clone { ... } fn prev_multiple_of(&self, other: &Self) -> Self where Self: Clone { ... }
}

Required Methods§

source

fn div_floor(&self, other: &Self) -> Self

Floored integer division.

§Examples
assert!(( 8).div_floor(& 3) ==  2);
assert!(( 8).div_floor(&-3) == -3);
assert!((-8).div_floor(& 3) == -3);
assert!((-8).div_floor(&-3) ==  2);

assert!(( 1).div_floor(& 2) ==  0);
assert!(( 1).div_floor(&-2) == -1);
assert!((-1).div_floor(& 2) == -1);
assert!((-1).div_floor(&-2) ==  0);
source

fn mod_floor(&self, other: &Self) -> Self

Floored integer modulo, satisfying:

assert!(n.div_floor(&d) * d + n.mod_floor(&d) == n)
§Examples
assert!(( 8).mod_floor(& 3) ==  2);
assert!(( 8).mod_floor(&-3) == -1);
assert!((-8).mod_floor(& 3) ==  1);
assert!((-8).mod_floor(&-3) == -2);

assert!(( 1).mod_floor(& 2) ==  1);
assert!(( 1).mod_floor(&-2) == -1);
assert!((-1).mod_floor(& 2) ==  1);
assert!((-1).mod_floor(&-2) == -1);
source

fn gcd(&self, other: &Self) -> Self

Greatest Common Divisor (GCD).

§Examples
assert_eq!(6.gcd(&8), 2);
assert_eq!(7.gcd(&3), 1);
source

fn lcm(&self, other: &Self) -> Self

Lowest Common Multiple (LCM).

§Examples
assert_eq!(7.lcm(&3), 21);
assert_eq!(2.lcm(&4), 4);
assert_eq!(0.lcm(&0), 0);
source

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if self is a multiple of other.

§Examples
assert_eq!(9.is_multiple_of(&3), true);
assert_eq!(3.is_multiple_of(&9), false);
source

fn is_even(&self) -> bool

Returns true if the number is even.

§Examples
assert_eq!(3.is_even(), false);
assert_eq!(4.is_even(), true);
source

fn is_odd(&self) -> bool

Returns true if the number is odd.

§Examples
assert_eq!(3.is_odd(), true);
assert_eq!(4.is_odd(), false);
source

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus. Returns (quotient, remainder).

§Examples
assert_eq!(( 8).div_rem( &3), ( 2,  2));
assert_eq!(( 8).div_rem(&-3), (-2,  2));
assert_eq!((-8).div_rem( &3), (-2, -2));
assert_eq!((-8).div_rem(&-3), ( 2, -2));

assert_eq!(( 1).div_rem( &2), ( 0,  1));
assert_eq!(( 1).div_rem(&-2), ( 0,  1));
assert_eq!((-1).div_rem( &2), ( 0, -1));
assert_eq!((-1).div_rem(&-2), ( 0, -1));

Provided Methods§

source

fn div_ceil(&self, other: &Self) -> Self

Ceiled integer division.

§Examples
assert_eq!(( 8).div_ceil( &3),  3);
assert_eq!(( 8).div_ceil(&-3), -2);
assert_eq!((-8).div_ceil( &3), -2);
assert_eq!((-8).div_ceil(&-3),  3);

assert_eq!(( 1).div_ceil( &2), 1);
assert_eq!(( 1).div_ceil(&-2), 0);
assert_eq!((-1).div_ceil( &2), 0);
assert_eq!((-1).div_ceil(&-2), 1);
source

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) together.

Potentially more efficient than calling gcd and lcm individually for identical inputs.

§Examples
assert_eq!(10.gcd_lcm(&4), (2, 20));
assert_eq!(8.gcd_lcm(&9), (1, 72));
source

fn extended_gcd(&self, other: &Self) -> ExtendedGcd<Self>
where Self: Clone,

Greatest common divisor and Bézout coefficients.

§Examples
fn check<A: Copy + Integer + NumAssign>(a: A, b: A) -> bool {
    let ExtendedGcd { gcd, x, y, .. } = a.extended_gcd(&b);
    gcd == x * a + y * b
}
assert!(check(10isize, 4isize));
assert!(check(8isize,  9isize));
source

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)
where Self: Clone + Signed,

Greatest common divisor, least common multiple, and Bézout coefficients.

source

fn div_mod_floor(&self, other: &Self) -> (Self, Self)

Simultaneous floored integer division and modulus. Returns (quotient, remainder).

§Examples
assert_eq!(( 8).div_mod_floor( &3), ( 2,  2));
assert_eq!(( 8).div_mod_floor(&-3), (-3, -1));
assert_eq!((-8).div_mod_floor( &3), (-3,  1));
assert_eq!((-8).div_mod_floor(&-3), ( 2, -2));

assert_eq!(( 1).div_mod_floor( &2), ( 0,  1));
assert_eq!(( 1).div_mod_floor(&-2), (-1, -1));
assert_eq!((-1).div_mod_floor( &2), (-1,  1));
assert_eq!((-1).div_mod_floor(&-2), ( 0, -1));
source

fn next_multiple_of(&self, other: &Self) -> Self
where Self: Clone,

Rounds up to nearest multiple of argument.

§Notes

For signed types, a.next_multiple_of(b) = a.prev_multiple_of(b.neg()).

§Examples
assert_eq!(( 16).next_multiple_of(& 8),  16);
assert_eq!(( 23).next_multiple_of(& 8),  24);
assert_eq!(( 16).next_multiple_of(&-8),  16);
assert_eq!(( 23).next_multiple_of(&-8),  16);
assert_eq!((-16).next_multiple_of(& 8), -16);
assert_eq!((-23).next_multiple_of(& 8), -16);
assert_eq!((-16).next_multiple_of(&-8), -16);
assert_eq!((-23).next_multiple_of(&-8), -24);
source

fn prev_multiple_of(&self, other: &Self) -> Self
where Self: Clone,

Rounds down to nearest multiple of argument.

§Notes

For signed types, a.prev_multiple_of(b) = a.next_multiple_of(b.neg()).

§Examples
assert_eq!(( 16).prev_multiple_of(& 8),  16);
assert_eq!(( 23).prev_multiple_of(& 8),  16);
assert_eq!(( 16).prev_multiple_of(&-8),  16);
assert_eq!(( 23).prev_multiple_of(&-8),  24);
assert_eq!((-16).prev_multiple_of(& 8), -16);
assert_eq!((-23).prev_multiple_of(& 8), -24);
assert_eq!((-16).prev_multiple_of(&-8), -16);
assert_eq!((-23).prev_multiple_of(&-8), -16);

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl Integer for i8

source§

fn div_floor(&self, other: &Self) -> Self

Floored integer division

source§

fn mod_floor(&self, other: &Self) -> Self

Floored integer modulo

source§

fn div_mod_floor(&self, other: &Self) -> (Self, Self)

Calculates div_floor and mod_floor simultaneously

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always positive.

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for i16

source§

fn div_floor(&self, other: &Self) -> Self

Floored integer division

source§

fn mod_floor(&self, other: &Self) -> Self

Floored integer modulo

source§

fn div_mod_floor(&self, other: &Self) -> (Self, Self)

Calculates div_floor and mod_floor simultaneously

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always positive.

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for i32

source§

fn div_floor(&self, other: &Self) -> Self

Floored integer division

source§

fn mod_floor(&self, other: &Self) -> Self

Floored integer modulo

source§

fn div_mod_floor(&self, other: &Self) -> (Self, Self)

Calculates div_floor and mod_floor simultaneously

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always positive.

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for i64

source§

fn div_floor(&self, other: &Self) -> Self

Floored integer division

source§

fn mod_floor(&self, other: &Self) -> Self

Floored integer modulo

source§

fn div_mod_floor(&self, other: &Self) -> (Self, Self)

Calculates div_floor and mod_floor simultaneously

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always positive.

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for i128

source§

fn div_floor(&self, other: &Self) -> Self

Floored integer division

source§

fn mod_floor(&self, other: &Self) -> Self

Floored integer modulo

source§

fn div_mod_floor(&self, other: &Self) -> (Self, Self)

Calculates div_floor and mod_floor simultaneously

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always positive.

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for isize

source§

fn div_floor(&self, other: &Self) -> Self

Floored integer division

source§

fn mod_floor(&self, other: &Self) -> Self

Floored integer modulo

source§

fn div_mod_floor(&self, other: &Self) -> (Self, Self)

Calculates div_floor and mod_floor simultaneously

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other. The result is always positive.

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for u8

source§

fn div_floor(&self, other: &Self) -> Self

Unsigned integer division. Returns the same result as div (/).

source§

fn mod_floor(&self, other: &Self) -> Self

Unsigned integer modulo operation. Returns the same result as rem (%).

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2.

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2.

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for u16

source§

fn div_floor(&self, other: &Self) -> Self

Unsigned integer division. Returns the same result as div (/).

source§

fn mod_floor(&self, other: &Self) -> Self

Unsigned integer modulo operation. Returns the same result as rem (%).

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2.

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2.

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for u32

source§

fn div_floor(&self, other: &Self) -> Self

Unsigned integer division. Returns the same result as div (/).

source§

fn mod_floor(&self, other: &Self) -> Self

Unsigned integer modulo operation. Returns the same result as rem (%).

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2.

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2.

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for u64

source§

fn div_floor(&self, other: &Self) -> Self

Unsigned integer division. Returns the same result as div (/).

source§

fn mod_floor(&self, other: &Self) -> Self

Unsigned integer modulo operation. Returns the same result as rem (%).

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2.

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2.

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for u128

source§

fn div_floor(&self, other: &Self) -> Self

Unsigned integer division. Returns the same result as div (/).

source§

fn mod_floor(&self, other: &Self) -> Self

Unsigned integer modulo operation. Returns the same result as rem (%).

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2.

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2.

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

source§

impl Integer for usize

source§

fn div_floor(&self, other: &Self) -> Self

Unsigned integer division. Returns the same result as div (/).

source§

fn mod_floor(&self, other: &Self) -> Self

Unsigned integer modulo operation. Returns the same result as rem (%).

source§

fn gcd(&self, other: &Self) -> Self

Calculates the Greatest Common Divisor (GCD) of the number and other

source§

fn lcm(&self, other: &Self) -> Self

Calculates the Lowest Common Multiple (LCM) of the number and other.

source§

fn gcd_lcm(&self, other: &Self) -> (Self, Self)

Calculates the Greatest Common Divisor (GCD) and Lowest Common Multiple (LCM) of the number and other.

source§

fn divides(&self, other: &Self) -> bool

Deprecated, use is_multiple_of instead.

source§

fn is_multiple_of(&self, other: &Self) -> bool

Returns true if the number is a multiple of other.

source§

fn is_even(&self) -> bool

Returns true if the number is divisible by 2.

source§

fn is_odd(&self) -> bool

Returns true if the number is not divisible by 2.

source§

fn div_rem(&self, other: &Self) -> (Self, Self)

Simultaneous truncated integer division and modulus.

source§

fn div_ceil(&self, other: &Self) -> Self

source§

fn extended_gcd_lcm(&self, other: &Self) -> (ExtendedGcd<Self>, Self)

Implementors§