Trait num_traits::ops::euclid::CheckedEuclid
source · pub trait CheckedEuclid: Euclid {
// Required methods
fn checked_div_euclid(&self, v: &Self) -> Option<Self>;
fn checked_rem_euclid(&self, v: &Self) -> Option<Self>;
// Provided method
fn checked_div_rem_euclid(&self, v: &Self) -> Option<(Self, Self)> { ... }
}
Required Methods§
sourcefn checked_div_euclid(&self, v: &Self) -> Option<Self>
fn checked_div_euclid(&self, v: &Self) -> Option<Self>
Performs euclid division that returns None
instead of panicking on division by zero
and instead of wrapping around on underflow and overflow.
sourcefn checked_rem_euclid(&self, v: &Self) -> Option<Self>
fn checked_rem_euclid(&self, v: &Self) -> Option<Self>
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§
sourcefn checked_div_rem_euclid(&self, v: &Self) -> Option<(Self, Self)>
fn checked_div_rem_euclid(&self, v: &Self) -> Option<(Self, Self)>
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.
Examples
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));
Object Safety§
This trait is not object safe.