pub trait CheckedEuclid: Euclid {
    fn checked_div_euclid(&self, v: &Self) -> Option<Self>;
    fn checked_rem_euclid(&self, v: &Self) -> Option<Self>;

    fn checked_div_rem_euclid(&self, v: &Self) -> Option<(Self, Self)> { ... }

Required Methods

Performs euclid division that returns None instead of panicking on division by zero and instead of wrapping around on underflow and overflow.

Finds the euclid remainder of dividing two numbers, checking for underflow, overflow and division by zero. If any of that happens, None is returned.

Provided Methods

Returns both the quotient and remainder from checked Euclidean division.

By default, it internally calls both CheckedEuclid::checked_div_euclid and CheckedEuclid::checked_rem_euclid, but it can be overridden in order to implement some optimization.

let x = 5u8;
let y = 3u8;

let div = CheckedEuclid::checked_div_euclid(&x, &y);
let rem = CheckedEuclid::checked_rem_euclid(&x, &y);

assert_eq!(Some((div.unwrap(), rem.unwrap())), CheckedEuclid::checked_div_rem_euclid(&x, &y));

Implementations on Foreign Types