pub struct UInt(/* private fields */);Expand description
An integer limited to the range of non-negative integers that can be represented exactly by an f64.
Implementations§
Source§impl UInt
impl UInt
Sourcepub const MIN: Self = _
pub const MIN: Self = _
The smallest value that can be represented by this integer type.
§Examples
Basic usage:
assert_eq!(UInt::MIN, uint!(0));Sourcepub const MAX: Self = _
pub const MAX: Self = _
The largest value that can be represented by this integer type.
§Examples
Basic usage:
assert_eq!(UInt::MAX, UInt::try_from(9_007_199_254_740_991u64).unwrap());Sourcepub fn new(val: u64) -> Option<Self>
pub fn new(val: u64) -> Option<Self>
Try to create a UInt from the provided u64, returning None if it is larger than
MAX_SAFE_UINT.
This is the same as the TryFrom<u64> implementation for UInt, except that it returns
an Option instead of a Result.
§Examples
Basic usage:
assert_eq!(UInt::new(js_int::MAX_SAFE_UINT), Some(UInt::MAX));
assert_eq!(UInt::new(js_int::MAX_SAFE_UINT + 1), None);Sourcepub fn new_wrapping(val: u64) -> Self
pub fn new_wrapping(val: u64) -> Self
Create a UInt from the provided u64, wrapping at MAX_SAFE_UINT.
§Examples
Basic usage:
assert_eq!(UInt::new_wrapping(js_int::MAX_SAFE_UINT), UInt::MAX);
assert_eq!(UInt::new_wrapping(js_int::MAX_SAFE_UINT + 1), uint!(0));Sourcepub fn new_saturating(val: u64) -> Self
pub fn new_saturating(val: u64) -> Self
Creates an UInt from the given u64 capped at MAX_SAFE_UINT.
§Examples
Basic usage:
assert_eq!(UInt::new_saturating(0), uint!(0));
assert_eq!(UInt::new_saturating(js_int::MAX_SAFE_UINT), UInt::MAX);
assert_eq!(UInt::new_saturating(js_int::MAX_SAFE_UINT + 1), UInt::MAX);Sourcepub const fn min_value() -> Self
👎Deprecated: Use UInt::MIN instead.
pub const fn min_value() -> Self
UInt::MIN instead.Returns the smallest value that can be represented by this integer type.
§Examples
Basic usage:
assert_eq!(UInt::min_value(), uint!(0));Sourcepub const fn max_value() -> Self
👎Deprecated: Use UInt::MAX instead.
pub const fn max_value() -> Self
UInt::MAX instead.Returns the largest value that can be represented by this integer type.
§Examples
Basic usage:
assert_eq!(UInt::max_value(), UInt::try_from(9_007_199_254_740_991u64).unwrap());Sourcepub fn is_power_of_two(self) -> bool
pub fn is_power_of_two(self) -> bool
Returns true if and only if self == 2^k for some k.
§Examples
Basic usage:
assert!(uint!(16).is_power_of_two());
assert!(!uint!(10).is_power_of_two());Sourcepub fn checked_next_power_of_two(self) -> Option<Self>
pub fn checked_next_power_of_two(self) -> Option<Self>
Returns the smallest power of two greater than or equal to n. If the next power of two is
greater than the type’s maximum value, None is returned, otherwise the power of two is
wrapped in Some.
§Examples
Basic usage:
assert_eq!(uint!(2).checked_next_power_of_two(), Some(uint!(2)));
assert_eq!(uint!(3).checked_next_power_of_two(), Some(uint!(4)));
assert_eq!(UInt::MAX.checked_next_power_of_two(), None);Sourcepub fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>
pub fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>
Converts a string slice in a given base to an integer.
The string is expected to be an optional + sign followed by digits. Leading and trailing
whitespace represent an error. Digits are a subset of these characters, depending on
radix:
0-9a-zA-Z
§Panics
This function panics if radix is not in the range from 2 to 36.
§Examples
Basic usage:
assert_eq!(UInt::from_str_radix("A", 16), Ok(uint!(10)));Sourcepub fn checked_add(self, rhs: Self) -> Option<Self>
pub fn checked_add(self, rhs: Self) -> Option<Self>
Checked integer addition. Computes self + rhs, returning None if overflow occurred.
assert_eq!(
(UInt::MAX - uint!(2)).checked_add(uint!(1)),
Some(UInt::MAX - uint!(1))
);
assert_eq!((UInt::MAX - uint!(2)).checked_add(uint!(3)), None);Sourcepub fn checked_sub(self, rhs: Self) -> Option<Self>
pub fn checked_sub(self, rhs: Self) -> Option<Self>
Checked integer subtraction. Computes self - rhs, returning None if overflow occurred.
§Examples
Basic usage:
assert_eq!(uint!(1).checked_sub(uint!(1)), Some(uint!(0)));
assert_eq!(uint!(0).checked_sub(uint!(1)), None);Sourcepub fn checked_mul(self, rhs: Self) -> Option<Self>
pub fn checked_mul(self, rhs: Self) -> Option<Self>
Checked integer multiplication. Computes self * rhs, returning None if overflow
occurred.
§Examples
Basic usage:
assert_eq!(uint!(5).checked_mul(uint!(1)), Some(uint!(5)));
assert_eq!(UInt::MAX.checked_mul(uint!(2)), None);Sourcepub fn checked_div(self, rhs: Self) -> Option<Self>
pub fn checked_div(self, rhs: Self) -> Option<Self>
Checked integer division. Computes self / rhs, returning None if rhs == 0.
§Examples
Basic usage:
assert_eq!(uint!(128).checked_div(uint!(2)), Some(uint!(64)));
assert_eq!(uint!(1).checked_div(uint!(0)), None);Sourcepub fn checked_rem(self, rhs: Self) -> Option<Self>
pub fn checked_rem(self, rhs: Self) -> Option<Self>
Checked integer remainder. Computes self % rhs, returning None if rhs == 0.
§Examples
Basic usage:
assert_eq!(uint!(5).checked_rem(uint!(2)), Some(uint!(1)));
assert_eq!(uint!(5).checked_rem(uint!(0)), None);Sourcepub fn checked_neg(self) -> Option<Self>
pub fn checked_neg(self) -> Option<Self>
Checked negation. Computes -self, returning None unless self == 0.
Note that negating any positive integer will overflow.
§Examples
Basic usage:
assert_eq!(uint!(0).checked_neg(), Some(uint!(0)));
assert_eq!(uint!(1).checked_neg(), None);Sourcepub fn checked_pow(self, exp: u32) -> Option<Self>
pub fn checked_pow(self, exp: u32) -> Option<Self>
Checked exponentiation. Computes self.pow(exp), returning None if overflow or
underflow occurred.
§Examples
Basic usage:
assert_eq!(uint!(0).checked_pow(2), Some(uint!(0)));
assert_eq!(uint!(8).checked_pow(2), Some(uint!(64)));
assert_eq!(uint!(1_000_000_000u32).checked_pow(2), None);
assert_eq!(UInt::MAX.checked_pow(2), None);Sourcepub fn saturating_add(self, rhs: Self) -> Self
pub fn saturating_add(self, rhs: Self) -> Self
Saturating integer addition. Computes self + rhs, saturating at the numeric bounds
instead of overflowing.
§Examples
Basic usage:
assert_eq!(uint!(100).saturating_add(uint!(1)), uint!(101));
assert_eq!(UInt::MAX.saturating_add(uint!(1)), UInt::MAX);Sourcepub fn saturating_sub(self, rhs: Self) -> Self
pub fn saturating_sub(self, rhs: Self) -> Self
Saturating integer subtraction. Computes self - rhs, saturating at the numeric
bounds instead of underflowing.
§Examples
Basic usage:
assert_eq!(uint!(100).saturating_sub(uint!(1)), uint!(99));
assert_eq!(uint!(1).saturating_sub(uint!(2)), uint!(0));Sourcepub fn saturating_mul(self, rhs: Self) -> Self
pub fn saturating_mul(self, rhs: Self) -> Self
Saturating integer multiplication. Computes self * rhs, saturating at the numeric
bounds instead of overflowing.
§Examples
Basic usage:
assert_eq!(uint!(100).saturating_mul(uint!(2)), uint!(200));
assert_eq!(UInt::MAX.saturating_mul(uint!(2)), UInt::MAX);
assert_eq!(UInt::MAX.saturating_mul(UInt::MAX), UInt::MAX);Sourcepub fn saturating_pow(self, exp: u32) -> Self
pub fn saturating_pow(self, exp: u32) -> Self
Saturating integer exponentiation. Computes self.pow(exp), saturating at the
numeric bounds instead of overflowing or underflowing.
§Examples
Basic usage:
assert_eq!(uint!(5).saturating_pow(2), uint!(25));
assert_eq!(UInt::MAX.saturating_pow(2), UInt::MAX);Trait Implementations§
Source§impl AddAssign for UInt
impl AddAssign for UInt
Source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+= operation. Read moreSource§impl<'de> Deserialize<'de> for UInt
impl<'de> Deserialize<'de> for UInt
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>,
Source§impl DivAssign for UInt
impl DivAssign for UInt
Source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/= operation. Read moreSource§impl MulAssign for UInt
impl MulAssign for UInt
Source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*= operation. Read moreSource§impl Ord for UInt
impl Ord for UInt
Source§impl PartialOrd for UInt
impl PartialOrd for UInt
Source§impl RemAssign for UInt
impl RemAssign for UInt
Source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%= operation. Read moreSource§impl SubAssign for UInt
impl SubAssign for UInt
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-= operation. Read more