pub struct Multiplier(pub i64, pub i16);
Expand description
Tuple Fields§
§0: i64
§1: i16
Implementations§
Source§impl Multiplier
impl Multiplier
Sourcepub const fn coefficient(&self) -> i64
pub const fn coefficient(&self) -> i64
Return the coefficient component of the Multiplier
§Examples
use fundu_core::time::Multiplier;
let multiplier = Multiplier(123, 45);
assert_eq!(multiplier.coefficient(), 123);
Sourcepub const fn exponent(&self) -> i16
pub const fn exponent(&self) -> i16
Return the exponent component of the Multiplier
§Examples
use fundu_core::time::Multiplier;
let multiplier = Multiplier(123, 45);
assert_eq!(multiplier.exponent(), 45);
Sourcepub const fn is_negative(&self) -> bool
pub const fn is_negative(&self) -> bool
Return true if the Multiplier
is negative
§Examples
use fundu_core::time::Multiplier;
let multiplier = Multiplier(-123, 45);
assert!(multiplier.is_negative());
Sourcepub const fn is_positive(&self) -> bool
pub const fn is_positive(&self) -> bool
Return true if the Multiplier
is positive
§Examples
use fundu_core::time::Multiplier;
let multiplier = Multiplier(123, 45);
assert!(multiplier.is_positive());
Sourcepub const fn checked_mul(&self, rhs: Self) -> Option<Self>
pub const fn checked_mul(&self, rhs: Self) -> Option<Self>
Checked Multiplier
multiplication. Computes self * other
, returning None
if an
overflow occurred.
Let a, b
be multipliers, with m
being the coefficient and e
the exponent. The
multiplication is performed such that (x.m, x.e) = (a.m * b.m, a.e + b.e)
§Examples
use fundu_core::time::Multiplier;
assert_eq!(
Multiplier(1, 2).checked_mul(Multiplier(3, 4)),
Some(Multiplier(3, 6))
);
assert_eq!(
Multiplier(-1, 2).checked_mul(Multiplier(3, -4)),
Some(Multiplier(-3, -2))
);
assert_eq!(Multiplier(2, 0).checked_mul(Multiplier(i64::MAX, 1)), None);
assert_eq!(Multiplier(1, 2).checked_mul(Multiplier(1, i16::MAX)), None);
Sourcepub const fn saturating_neg(&self) -> Self
pub const fn saturating_neg(&self) -> Self
Saturating negation. Computes -self
, returning i64::MAX
if self.coefficient() == i64::MIN
instead of overflowing.
§Examples
use fundu_core::time::Multiplier;
assert_eq!(Multiplier(1, 2).saturating_neg(), Multiplier(-1, 2));
assert_eq!(Multiplier(-1, 2).saturating_neg(), Multiplier(1, 2));
assert_eq!(
Multiplier(i64::MIN, 2).saturating_neg(),
Multiplier(i64::MAX, 2)
);
Trait Implementations§
Source§impl Clone for Multiplier
impl Clone for Multiplier
Source§fn clone(&self) -> Multiplier
fn clone(&self) -> Multiplier
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for Multiplier
impl Debug for Multiplier
Source§impl Default for Multiplier
impl Default for Multiplier
Source§impl<'de> Deserialize<'de> for Multiplier
impl<'de> Deserialize<'de> for Multiplier
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Hash for Multiplier
impl Hash for Multiplier
Source§impl Mul for Multiplier
impl Mul for Multiplier
Source§impl PartialEq for Multiplier
impl PartialEq for Multiplier
Source§impl Serialize for Multiplier
impl Serialize for Multiplier
impl Copy for Multiplier
impl Eq for Multiplier
impl StructuralPartialEq for Multiplier
Auto Trait Implementations§
impl Freeze for Multiplier
impl RefUnwindSafe for Multiplier
impl Send for Multiplier
impl Sync for Multiplier
impl Unpin for Multiplier
impl UnwindSafe for Multiplier
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more