pub trait CheckedAdd<Rhs = Self> {
type Output;
type Error;
// Required method
fn cadd(self, rhs: Rhs) -> Result<Self::Output, Self::Error>;
// Provided method
fn saturating_add(self, rhs: Rhs) -> Self::Output
where Self: Sized,
Rhs: PartialOrd + Zero,
Self::Output: Bounded { ... }
}Expand description
Checked addition.
Required Associated Types§
Sourcetype Error
type Error
Usually ArithmeticError.
Required Methods§
Sourcefn cadd(self, rhs: Rhs) -> Result<Self::Output, Self::Error>
fn cadd(self, rhs: Rhs) -> Result<Self::Output, Self::Error>
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§
Sourcefn saturating_add(self, rhs: Rhs) -> Self::Output
fn saturating_add(self, rhs: Rhs) -> Self::Output
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§
Source§impl CheckedAdd for i8
impl CheckedAdd for i8
Source§impl CheckedAdd for i16
impl CheckedAdd for i16
Source§impl CheckedAdd for i32
impl CheckedAdd for i32
Source§impl CheckedAdd for i64
impl CheckedAdd for i64
Source§impl CheckedAdd for i128
impl CheckedAdd for i128
Implementors§
Source§impl<P: Precision> CheckedAdd for FixedPoint<i16, P>
Available on crate feature i16 only.
impl<P: Precision> CheckedAdd for FixedPoint<i16, P>
Available on crate feature
i16 only.type Output = FixedPoint<i16, P>
type Error = ArithmeticError
Source§impl<P: Precision> CheckedAdd for FixedPoint<i32, P>
Available on crate feature i32 only.
impl<P: Precision> CheckedAdd for FixedPoint<i32, P>
Available on crate feature
i32 only.type Output = FixedPoint<i32, P>
type Error = ArithmeticError
Source§impl<P: Precision> CheckedAdd for FixedPoint<i64, P>
Available on crate feature i64 only.
impl<P: Precision> CheckedAdd for FixedPoint<i64, P>
Available on crate feature
i64 only.type Output = FixedPoint<i64, P>
type Error = ArithmeticError
Source§impl<P: Precision> CheckedAdd for FixedPoint<i128, P>
Available on crate feature i128 only.
impl<P: Precision> CheckedAdd for FixedPoint<i128, P>
Available on crate feature
i128 only.