Trait fixnum::ops::CheckedSub[][src]

pub trait CheckedSub<Rhs = Self> {
    type Output;
    type Error;
    fn csub(self, rhs: Rhs) -> Result<Self::Output, Self::Error>;

    fn saturating_sub(self, rhs: Rhs) -> Self::Output
    where
        Self: Sized,
        Rhs: PartialOrd + Zero,
        Self::Output: Bounded
, { ... } }

Associated Types

Required methods

Checked subtraction. Returns Err on overflow.

use fixnum::{FixedPoint, typenum::U9, ops::CheckedSub};

type Amount = FixedPoint<i64, U9>;

let a: Amount = "0.3".parse()?;
let b: Amount = "0.1".parse()?;
let c: Amount = "0.2".parse()?;
assert_eq!(a.csub(b)?, c);

Provided methods

Saturating subtraction. Computes self - rhs, saturating at the numeric bounds (MIN, MAX) instead of overflowing.

use fixnum::{FixedPoint, typenum::U9, ops::{Bounded, RoundMode::*, CheckedSub}};

type Amount = FixedPoint<i64, U9>;

let a: Amount = "9222001000.00002".parse()?;
let b: Amount = "9222000000".parse()?;
let c: Amount = "1000.00002".parse()?;
// 9222001000.00002 - 9222000000 = 1000.00002
assert_eq!(a.saturating_sub(b), c);

let d: Amount = "-9222000000".parse()?;
// 9222000000 - (-9222000000) = MAX
assert_eq!(b.saturating_sub(d), Amount::MAX);

// -9222000000 - 9222000000 = MIN
assert_eq!(d.saturating_sub(b), Amount::MIN);

Implementations on Foreign Types

Implementors