pub trait EnsureDivAssign: CheckedDiv + PartialOrd<Self> + Zero {
    fn ensure_div_assign(&mut self, v: Self) -> Result<(), ArithmeticError> { ... }
}
Expand description

Performs self division that returns ArithmeticError instead of wrapping around on overflow.

Provided Methods§

Divides two numbers overwriting the left hand one, checking for overflow.

If it fails, ArithmeticError is returned.

Examples
use sp_arithmetic::traits::EnsureDivAssign;

let mut a: i32 = 20;
let b: i32 = 10;

a.ensure_div_assign(b).unwrap();
assert_eq!(a, 2);
use sp_arithmetic::{traits::EnsureDivAssign, ArithmeticError, FixedI64};

fn extrinsic_zero() -> Result<(), ArithmeticError> {
    let mut one = 1;
    one.ensure_div_assign(0)?;
    Ok(())
}

fn overflow() -> Result<(), ArithmeticError> {
    let mut min = FixedI64::from(i64::MIN);
    min.ensure_div_assign(FixedI64::from(-1))?;
    Ok(())
}

assert_eq!(extrinsic_zero(), Err(ArithmeticError::DivisionByZero));
assert_eq!(overflow(), Err(ArithmeticError::Overflow));

Implementors§