Trait fixnum::ops::CheckedAdd
source · [−]pub trait CheckedAdd<Rhs = Self> {
type Output;
type Error;
fn cadd(self, rhs: Rhs) -> Result<Self::Output, Self::Error>;
fn saturating_add(self, rhs: Rhs) -> Self::Output
where
Self: Sized,
Rhs: PartialOrd + Zero,
Self::Output: Bounded,
{ ... }
}
Expand description
Checked addition.
Required Associated Types
Usually ArithmeticError
.
Required Methods
Checked addition. Returns Err
on overflow.
use fixnum::{FixedPoint, typenum::U9, ops::CheckedAdd};
type Amount = FixedPoint<i64, U9>;
let a: Amount = "0.1".parse()?;
let b: Amount = "0.2".parse()?;
let c: Amount = "0.3".parse()?;
assert_eq!(a.cadd(b)?, c);
Provided Methods
fn saturating_add(self, rhs: Rhs) -> Self::Output where
Self: Sized,
Rhs: PartialOrd + Zero,
Self::Output: Bounded,
fn saturating_add(self, rhs: Rhs) -> Self::Output where
Self: Sized,
Rhs: PartialOrd + Zero,
Self::Output: Bounded,
Saturating addition. Computes self + rhs
, saturating at the numeric bounds
(MIN
, MAX
) instead of overflowing.
use fixnum::{FixedPoint, typenum::U9, ops::{Bounded, RoundMode::*, CheckedAdd}};
type Amount = FixedPoint<i64, U9>;
let a: Amount = "1000.00002".parse()?;
let b: Amount = "9222000000".parse()?;
let c: Amount = "9222001000.00002".parse()?;
// 1000.00002 + 9222000000 = 9222001000.00002
assert_eq!(a.saturating_add(b), c);
// 9222000000 + 9222000000 = MAX
assert_eq!(c.saturating_add(c), Amount::MAX);
let d: Amount = "-9222000000".parse()?;
// -9222000000 + (-9222000000) = MIN
assert_eq!(d.saturating_add(d), Amount::MIN);
Implementations on Foreign Types
sourceimpl CheckedAdd<i8> for i8
impl CheckedAdd<i8> for i8
sourceimpl CheckedAdd<i16> for i16
impl CheckedAdd<i16> for i16
sourceimpl CheckedAdd<i32> for i32
impl CheckedAdd<i32> for i32
sourceimpl CheckedAdd<i64> for i64
impl CheckedAdd<i64> for i64
sourceimpl CheckedAdd<i128> for i128
impl CheckedAdd<i128> for i128
Implementors
sourceimpl<P: Precision> CheckedAdd<FixedPoint<i16, P>> for FixedPoint<i16, P>
Available on crate feature i16
only.
impl<P: Precision> CheckedAdd<FixedPoint<i16, P>> for FixedPoint<i16, P>
Available on crate feature
i16
only.type Output = FixedPoint<i16, P>
type Error = ArithmeticError
sourceimpl<P: Precision> CheckedAdd<FixedPoint<i32, P>> for FixedPoint<i32, P>
Available on crate feature i32
only.
impl<P: Precision> CheckedAdd<FixedPoint<i32, P>> for FixedPoint<i32, P>
Available on crate feature
i32
only.type Output = FixedPoint<i32, P>
type Error = ArithmeticError
sourceimpl<P: Precision> CheckedAdd<FixedPoint<i64, P>> for FixedPoint<i64, P>
Available on crate feature i64
only.
impl<P: Precision> CheckedAdd<FixedPoint<i64, P>> for FixedPoint<i64, P>
Available on crate feature
i64
only.type Output = FixedPoint<i64, P>
type Error = ArithmeticError
sourceimpl<P: Precision> CheckedAdd<FixedPoint<i128, P>> for FixedPoint<i128, P>
Available on crate feature i128
only.
impl<P: Precision> CheckedAdd<FixedPoint<i128, P>> for FixedPoint<i128, P>
Available on crate feature
i128
only.