Struct crackle_lib::UInt
[−]pub struct UInt(_);
Expand description
An integer limited to the range of non-negative integers that can be represented exactly by an f64.
Implementations
impl UInt
impl UInt
pub const MIN: UInt = Self(0)
pub const MIN: UInt = Self(0)
The smallest value that can be represented by this integer type.
Examples
Basic usage:
assert_eq!(UInt::MIN, uint!(0));
pub const MAX: UInt = Self(MAX_SAFE_UINT)
pub const MAX: UInt = Self(MAX_SAFE_UINT)
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());
pub fn new(val: u64) -> Option<UInt>
pub fn new(val: u64) -> Option<UInt>
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);
pub fn new_wrapping(val: u64) -> UInt
pub fn new_wrapping(val: u64) -> UInt
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));
pub fn new_saturating(val: u64) -> UInt
pub fn new_saturating(val: u64) -> UInt
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);
pub const fn min_value() -> UInt
👎 Deprecated: Use UInt::MIN
instead.
pub const fn min_value() -> UInt
Use 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));
pub const fn max_value() -> UInt
👎 Deprecated: Use UInt::MAX
instead.
pub const fn max_value() -> UInt
Use 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());
pub 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());
pub fn checked_next_power_of_two(self) -> Option<UInt>
pub fn checked_next_power_of_two(self) -> Option<UInt>
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);
pub fn from_str_radix(src: &str, radix: u32) -> Result<UInt, ParseIntError>
pub fn from_str_radix(src: &str, radix: u32) -> Result<UInt, 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-9
a-z
A-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)));
pub fn checked_add(self, rhs: UInt) -> Option<UInt>
pub fn checked_add(self, rhs: UInt) -> Option<UInt>
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);
pub fn checked_sub(self, rhs: UInt) -> Option<UInt>
pub fn checked_sub(self, rhs: UInt) -> Option<UInt>
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);
pub fn checked_mul(self, rhs: UInt) -> Option<UInt>
pub fn checked_mul(self, rhs: UInt) -> Option<UInt>
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);
pub fn checked_div(self, rhs: UInt) -> Option<UInt>
pub fn checked_div(self, rhs: UInt) -> Option<UInt>
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);
pub fn checked_rem(self, rhs: UInt) -> Option<UInt>
pub fn checked_rem(self, rhs: UInt) -> Option<UInt>
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);
pub fn checked_neg(self) -> Option<UInt>
pub fn checked_neg(self) -> Option<UInt>
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);
pub fn checked_pow(self, exp: u32) -> Option<UInt>
pub fn checked_pow(self, exp: u32) -> Option<UInt>
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);
pub fn saturating_add(self, rhs: UInt) -> UInt
pub fn saturating_add(self, rhs: UInt) -> UInt
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);
pub fn saturating_sub(self, rhs: UInt) -> UInt
pub fn saturating_sub(self, rhs: UInt) -> UInt
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));
pub fn saturating_mul(self, rhs: UInt) -> UInt
pub fn saturating_mul(self, rhs: UInt) -> UInt
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);
pub fn saturating_pow(self, exp: u32) -> UInt
pub fn saturating_pow(self, exp: u32) -> UInt
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
impl AddAssign<UInt> for UInt
impl AddAssign<UInt> for UInt
fn add_assign(&mut self, other: UInt)
fn add_assign(&mut self, other: UInt)
Performs the +=
operation. Read more
impl<'de> Deserialize<'de> for UInt
impl<'de> Deserialize<'de> for UInt
fn deserialize<D>(
deserializer: D
) -> Result<UInt, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D
) -> Result<UInt, <D as Deserializer<'de>>::Error> where
D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl DivAssign<UInt> for UInt
impl DivAssign<UInt> for UInt
fn div_assign(&mut self, other: UInt)
fn div_assign(&mut self, other: UInt)
Performs the /=
operation. Read more
impl MulAssign<UInt> for UInt
impl MulAssign<UInt> for UInt
fn mul_assign(&mut self, other: UInt)
fn mul_assign(&mut self, other: UInt)
Performs the *=
operation. Read more
impl Ord for UInt
impl Ord for UInt
impl PartialOrd<UInt> for UInt
impl PartialOrd<UInt> for UInt
fn partial_cmp(&self, other: &UInt) -> Option<Ordering>
fn partial_cmp(&self, other: &UInt) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl RemAssign<UInt> for UInt
impl RemAssign<UInt> for UInt
fn rem_assign(&mut self, other: UInt)
fn rem_assign(&mut self, other: UInt)
Performs the %=
operation. Read more
impl Serialize for UInt
impl Serialize for UInt
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error> where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl SubAssign<UInt> for UInt
impl SubAssign<UInt> for UInt
fn sub_assign(&mut self, other: UInt)
fn sub_assign(&mut self, other: UInt)
Performs the -=
operation. Read more
impl Copy for UInt
impl Eq for UInt
impl StructuralEq for UInt
impl StructuralPartialEq for UInt
Auto Trait Implementations
impl RefUnwindSafe for UInt
impl Send for UInt
impl Sync for UInt
impl Unpin for UInt
impl UnwindSafe for UInt
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcefn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more
sourceimpl<T> WithSubscriber for T
impl<T> WithSubscriber for T
sourcefn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> where
S: Into<Dispatch>,
Attaches the provided Subscriber
to this type, returning a
WithDispatch
wrapper. Read more
sourcefn with_current_subscriber(self) -> WithDispatch<Self>
fn with_current_subscriber(self) -> WithDispatch<Self>
Attaches the current default Subscriber
to this type, returning a
WithDispatch
wrapper. Read more