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 22 methods
// Required methods
fn from_inner(int: Self::Inner) -> Self;
fn into_inner(self) -> Self::Inner;
// 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
Re-export top-level arithmetic stuff. 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§
Sourcetype 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§
Sourcefn from_inner(int: Self::Inner) -> Self
fn from_inner(int: Self::Inner) -> Self
Builds this type from an integer number.
Sourcefn into_inner(self) -> Self::Inner
fn into_inner(self) -> Self::Inner
Consumes self
and returns the inner raw value.
Provided Methods§
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Sourcefn 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.
Sourcefn 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
.
Sourcefn 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
.
Sourcefn 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
.
Sourcefn 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
.
Sourcefn 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
.
Sourcefn saturating_abs(self) -> Self
fn saturating_abs(self) -> Self
Saturating absolute value.
Returns Self::max
if self == Self::min
.
Sourcefn reciprocal(self) -> Option<Self>
fn reciprocal(self) -> Option<Self>
Takes the reciprocal (inverse). Equal to 1 / self
.
Returns None
if self = 0
.
Sourcefn is_positive(self) -> bool
fn is_positive(self) -> bool
Returns true
if self
is positive and false
if the number is zero or negative.
Sourcefn is_negative(self) -> bool
fn is_negative(self) -> bool
Returns true
if self
is negative and false
if the number is zero or positive.
Sourcefn 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.
Sourcefn 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.
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.