Trait FixedPointNumber
pub trait FixedPointNumber:
    Sized
    + Copy
    + Default
    + Debug
    + Saturating
    + Bounded
    + Eq
    + PartialEq
    + Ord
    + PartialOrd
    + CheckedSub
    + CheckedAdd
    + CheckedMul
    + CheckedDiv
    + Add
    + Sub
    + Div
    + Mul
    + Zero
    + One {
    type Inner: Debug + One + CheckedMul + CheckedDiv + FixedPointOperand;
    const DIV: Self::Inner;
    const SIGNED: bool;
Show 23 methods
    // Required methods
    fn from_inner(int: Self::Inner) -> Self;
    fn into_inner(self) -> Self::Inner;
    fn checked_sqrt(self) -> Option<Self>;
    // Provided methods
    fn accuracy() -> Self::Inner { ... }
    fn saturating_from_integer<N>(int: N) -> Self
       where N: FixedPointOperand { ... }
    fn checked_from_integer<N>(int: N) -> Option<Self>
       where N: Into<Self::Inner> { ... }
    fn saturating_from_rational<N, D>(n: N, d: D) -> Self
       where N: FixedPointOperand,
             D: FixedPointOperand { ... }
    fn checked_from_rational<N, D>(n: N, d: D) -> Option<Self>
       where N: FixedPointOperand,
             D: FixedPointOperand { ... }
    fn checked_mul_int<N>(self, n: N) -> Option<N>
       where N: FixedPointOperand { ... }
    fn saturating_mul_int<N>(self, n: N) -> N
       where N: FixedPointOperand { ... }
    fn checked_div_int<N>(self, d: N) -> Option<N>
       where N: FixedPointOperand { ... }
    fn saturating_div_int<N>(self, d: N) -> N
       where N: FixedPointOperand { ... }
    fn saturating_mul_acc_int<N>(self, n: N) -> N
       where N: FixedPointOperand { ... }
    fn saturating_abs(self) -> Self { ... }
    fn reciprocal(self) -> Option<Self> { ... }
    fn is_one(&self) -> bool { ... }
    fn is_positive(self) -> bool { ... }
    fn is_negative(self) -> bool { ... }
    fn trunc(self) -> Self { ... }
    fn frac(self) -> Self { ... }
    fn ceil(self) -> Self { ... }
    fn floor(self) -> Self { ... }
    fn round(self) -> Self { ... }
}Expand description
Something that implements a decimal fixed point number.
The precision is given by Self::DIV, i.e. 1 / DIV can be represented.
Each type can store numbers from Self::Inner::min_value() / Self::DIV
to Self::Inner::max_value() / Self::DIV.
This is also referred to as the accuracy of the type in the documentation.
Required Associated Constants§
Required Associated Types§
type Inner: Debug + One + CheckedMul + CheckedDiv + FixedPointOperand
type Inner: Debug + One + CheckedMul + CheckedDiv + FixedPointOperand
The underlying data type used for this fixed point number.
Required Methods§
fn from_inner(int: Self::Inner) -> Self
fn from_inner(int: Self::Inner) -> Self
Builds this type from an integer number.
fn into_inner(self) -> Self::Inner
fn into_inner(self) -> Self::Inner
Consumes self and returns the inner raw value.
fn checked_sqrt(self) -> Option<Self>
fn checked_sqrt(self) -> Option<Self>
Compute the square root. If it overflows or is negative, then None is returned.
Provided Methods§
fn saturating_from_integer<N>(int: N) -> Selfwhere
    N: FixedPointOperand,
fn saturating_from_integer<N>(int: N) -> Selfwhere
    N: FixedPointOperand,
Creates self from an integer number int.
Returns Self::max or Self::min if int exceeds accuracy.
fn checked_from_integer<N>(int: N) -> Option<Self>
fn checked_from_integer<N>(int: N) -> Option<Self>
Creates self from an integer number int.
Returns None if int exceeds accuracy.
fn saturating_from_rational<N, D>(n: N, d: D) -> Selfwhere
    N: FixedPointOperand,
    D: FixedPointOperand,
fn saturating_from_rational<N, D>(n: N, d: D) -> Selfwhere
    N: FixedPointOperand,
    D: FixedPointOperand,
Creates self from a rational number. Equal to n / d.
Panics if d = 0. Returns Self::max or Self::min if n / d exceeds accuracy.
fn checked_from_rational<N, D>(n: N, d: D) -> Option<Self>where
    N: FixedPointOperand,
    D: FixedPointOperand,
fn checked_from_rational<N, D>(n: N, d: D) -> Option<Self>where
    N: FixedPointOperand,
    D: FixedPointOperand,
Creates self from a rational number. Equal to n / d.
Returns None if d == 0 or n / d exceeds accuracy.
fn checked_mul_int<N>(self, n: N) -> Option<N>where
    N: FixedPointOperand,
fn checked_mul_int<N>(self, n: N) -> Option<N>where
    N: FixedPointOperand,
Checked multiplication for integer type N. Equal to self * n.
Returns None if the result does not fit in N.
fn saturating_mul_int<N>(self, n: N) -> Nwhere
    N: FixedPointOperand,
fn saturating_mul_int<N>(self, n: N) -> Nwhere
    N: FixedPointOperand,
Saturating multiplication for integer type N. Equal to self * n.
Returns N::min or N::max if the result does not fit in N.
fn checked_div_int<N>(self, d: N) -> Option<N>where
    N: FixedPointOperand,
fn checked_div_int<N>(self, d: N) -> Option<N>where
    N: FixedPointOperand,
Checked division for integer type N. Equal to self / d.
Returns None if the result does not fit in N or d == 0.
fn saturating_div_int<N>(self, d: N) -> Nwhere
    N: FixedPointOperand,
fn saturating_div_int<N>(self, d: N) -> Nwhere
    N: FixedPointOperand,
Saturating division for integer type N. Equal to self / d.
Panics if d == 0. Returns N::min or N::max if the result does not fit in N.
fn saturating_mul_acc_int<N>(self, n: N) -> Nwhere
    N: FixedPointOperand,
fn saturating_mul_acc_int<N>(self, n: N) -> Nwhere
    N: FixedPointOperand,
Saturating multiplication for integer type N, adding the result back.
Equal to self * n + n.
Returns N::min or N::max if the multiplication or final result does not fit in N.
fn saturating_abs(self) -> Self
fn saturating_abs(self) -> Self
Saturating absolute value.
Returns Self::max if self == Self::min.
fn reciprocal(self) -> Option<Self>
fn reciprocal(self) -> Option<Self>
Takes the reciprocal (inverse). Equal to 1 / self.
Returns None if self = 0.
fn is_positive(self) -> bool
fn is_positive(self) -> bool
Returns true if self is positive and false if the number is zero or negative.
fn is_negative(self) -> bool
fn is_negative(self) -> bool
Returns true if self is negative and false if the number is zero or positive.
fn trunc(self) -> Self
fn trunc(self) -> Self
Returns the integer part.
fn frac(self) -> Self
fn frac(self) -> Self
Returns the fractional part.
Note: the returned fraction will be non-negative for negative numbers, except in the case where the integer part is zero.
fn ceil(self) -> Self
fn ceil(self) -> Self
Returns the smallest integer greater than or equal to a number.
Saturates to Self::max (truncated) if the result does not fit.
fn floor(self) -> Self
fn floor(self) -> Self
Returns the largest integer less than or equal to a number.
Saturates to Self::min (truncated) if the result does not fit.
fn round(self) -> Self
fn round(self) -> Self
Returns the number rounded to the nearest integer. Rounds half-way cases away from 0.0.
Saturates to Self::min or Self::max (truncated) if the result does not fit.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.