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

Result of addition.

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

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

Implementors