Trait fixnum::ops::CheckedSub
source · [−]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,
{ ... }
}
Expand description
Checked subtraction.
Required Associated Types
Usually ArithmeticError
.
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
fn saturating_sub(self, rhs: Rhs) -> Self::Output where
Self: Sized,
Rhs: PartialOrd + Zero,
Self::Output: Bounded,
fn saturating_sub(self, rhs: Rhs) -> Self::Output where
Self: Sized,
Rhs: PartialOrd + Zero,
Self::Output: Bounded,
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
sourceimpl CheckedSub<i8> for i8
impl CheckedSub<i8> for i8
sourceimpl CheckedSub<i16> for i16
impl CheckedSub<i16> for i16
sourceimpl CheckedSub<i32> for i32
impl CheckedSub<i32> for i32
sourceimpl CheckedSub<i64> for i64
impl CheckedSub<i64> for i64
sourceimpl CheckedSub<i128> for i128
impl CheckedSub<i128> for i128
Implementors
sourceimpl<P: Precision> CheckedSub<FixedPoint<i16, P>> for FixedPoint<i16, P>
Available on crate feature i16
only.
impl<P: Precision> CheckedSub<FixedPoint<i16, P>> for FixedPoint<i16, P>
Available on crate feature
i16
only.type Output = FixedPoint<i16, P>
type Error = ArithmeticError
sourceimpl<P: Precision> CheckedSub<FixedPoint<i32, P>> for FixedPoint<i32, P>
Available on crate feature i32
only.
impl<P: Precision> CheckedSub<FixedPoint<i32, P>> for FixedPoint<i32, P>
Available on crate feature
i32
only.type Output = FixedPoint<i32, P>
type Error = ArithmeticError
sourceimpl<P: Precision> CheckedSub<FixedPoint<i64, P>> for FixedPoint<i64, P>
Available on crate feature i64
only.
impl<P: Precision> CheckedSub<FixedPoint<i64, P>> for FixedPoint<i64, P>
Available on crate feature
i64
only.type Output = FixedPoint<i64, P>
type Error = ArithmeticError
sourceimpl<P: Precision> CheckedSub<FixedPoint<i128, P>> for FixedPoint<i128, P>
Available on crate feature i128
only.
impl<P: Precision> CheckedSub<FixedPoint<i128, P>> for FixedPoint<i128, P>
Available on crate feature
i128
only.