pub struct Int(/* private fields */);Expand description
An integer limited to the range of integers that can be represented exactly by an f64.
Implementations§
Source§impl Int
impl Int
Sourcepub const MIN: Self = _
pub const MIN: Self = _
The smallest value that can be represented by this integer type.
§Examples
Basic usage:
assert_eq!(Int::MIN, Int::try_from(-9_007_199_254_740_991i64).unwrap());Sourcepub const MAX: Self = _
pub const MAX: Self = _
The largest value that can be represented by this integer type.
§Examples
Basic usage:
assert_eq!(Int::MAX, Int::try_from(9_007_199_254_740_991i64).unwrap());Sourcepub fn new(val: i64) -> Option<Self>
pub fn new(val: i64) -> Option<Self>
Try to create an Int from the provided i64, returning None if it is smaller than
MIN_SAFE_INT or larger than MAX_SAFE_INT.
This is the same as the TryFrom<u64> implementation for Int, except that it returns
an Option instead of a Result.
§Examples
Basic usage:
assert_eq!(Int::new(js_int::MIN_SAFE_INT), Some(Int::MIN));
assert_eq!(Int::new(js_int::MAX_SAFE_INT), Some(Int::MAX));
assert_eq!(Int::new(js_int::MIN_SAFE_INT - 1), None);
assert_eq!(Int::new(js_int::MAX_SAFE_INT + 1), None);Sourcepub fn new_saturating(val: i64) -> Self
pub fn new_saturating(val: i64) -> Self
Creates an Int from the given i64 clamped to the safe interval.
The given value gets clamped into the closed interval between
MIN_SAFE_INT and MAX_SAFE_INT.
§Examples
Basic usage:
assert_eq!(Int::new_saturating(0), int!(0));
assert_eq!(Int::new_saturating(js_int::MAX_SAFE_INT), Int::MAX);
assert_eq!(Int::new_saturating(js_int::MAX_SAFE_INT + 1), Int::MAX);
assert_eq!(Int::new_saturating(js_int::MIN_SAFE_INT), Int::MIN);
assert_eq!(Int::new_saturating(js_int::MIN_SAFE_INT - 1), Int::MIN);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 + or - 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!(Int::from_str_radix("A", 16), Ok(int!(10)));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!(Int::min_value(), Int::try_from(-9_007_199_254_740_991i64).unwrap());Sourcepub const fn max_value() -> Self
👎Deprecated: Use Int::MAX instead.
pub const fn max_value() -> Self
Int::MAX instead.Returns the largest value that can be represented by this integer type.
§Examples
Basic usage:
assert_eq!(Int::max_value(), Int::try_from(9_007_199_254_740_991i64).unwrap());Sourcepub fn abs(self) -> Self
pub fn abs(self) -> Self
Computes the absolute value of self.
§Examples
Basic usage:
assert_eq!(int!(10).abs(), int!(10));
assert_eq!(int!(-10).abs(), int!(10));
// Differently from i8 / i16 / i32 / i128, Int's min_value is its max_value negated
assert_eq!(Int::MIN.abs(), Int::MAX);Sourcepub const fn is_positive(self) -> bool
pub const fn is_positive(self) -> bool
Returns true if self is positive and false if the number is zero or negative.
§Examples
Basic usage:
assert!(int!(10).is_positive());
assert!(!int!(0).is_positive());
assert!(!int!(-10).is_positive());Sourcepub const fn is_negative(self) -> bool
pub const fn is_negative(self) -> bool
Returns true if self is negative and false if the number is zero or positive.
§Examples
Basic usage:
assert!(int!(-10).is_negative());
assert!(!int!(0).is_negative());
assert!(!int!(10).is_negative());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.
§Examples
Basic usage:
assert_eq!(
(Int::MAX - int!(1)).checked_add(int!(1)),
Some(Int::MAX)
);
assert_eq!((Int::MAX - int!(1)).checked_add(int!(2)), 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!(
(Int::MIN + int!(2)).checked_sub(int!(1)),
Some(Int::MIN + int!(1))
);
assert_eq!((Int::MIN + int!(2)).checked_sub(int!(3)), 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!(int!(5).checked_mul(int!(1)), Some(int!(5)));
assert_eq!(Int::MAX.checked_mul(int!(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!(Int::MIN.checked_div(int!(-1)), Some(Int::MAX));
assert_eq!(int!(1).checked_div(int!(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!(int!(5).checked_rem(int!(2)), Some(int!(1)));
assert_eq!(int!(5).checked_rem(int!(0)), None);
assert_eq!(Int::MIN.checked_rem(int!(-1)), Some(int!(0)));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!(int!(8).checked_pow(2), Some(int!(64)));
assert_eq!(Int::MAX.checked_pow(2), None);
assert_eq!(Int::MIN.checked_pow(2), None);
assert_eq!(int!(1_000_000_000).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!(int!(100).saturating_add(int!(1)), int!(101));
assert_eq!(Int::MAX.saturating_add(int!(1)), Int::MAX);
assert_eq!(Int::MIN.saturating_add(int!(-1)), Int::MIN);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!(int!(100).saturating_sub(int!(1)), int!(99));
assert_eq!(Int::MIN.saturating_sub(int!(1)), Int::MIN);
assert_eq!(Int::MAX.saturating_sub(int!(-1)), Int::MAX);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!(int!(100).saturating_mul(int!(2)), int!(200));
assert_eq!(Int::MAX.saturating_mul(int!(2)), Int::MAX);
assert_eq!(Int::MAX.saturating_mul(Int::MAX), Int::MAX);
assert_eq!(Int::MAX.saturating_mul(Int::MIN), Int::MIN);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!(int!(5).saturating_pow(2), int!(25));
assert_eq!(int!(-2).saturating_pow(3), int!(-8));
assert_eq!(Int::MAX.saturating_pow(2), Int::MAX);
assert_eq!(Int::MIN.saturating_pow(2), Int::MAX);Trait Implementations§
Source§impl AddAssign for Int
impl AddAssign for Int
Source§fn add_assign(&mut self, other: Self)
fn add_assign(&mut self, other: Self)
+= operation. Read moreSource§impl<'de> Deserialize<'de> for Int
impl<'de> Deserialize<'de> for Int
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 Int
impl DivAssign for Int
Source§fn div_assign(&mut self, other: Self)
fn div_assign(&mut self, other: Self)
/= operation. Read moreSource§impl MulAssign for Int
impl MulAssign for Int
Source§fn mul_assign(&mut self, other: Self)
fn mul_assign(&mut self, other: Self)
*= operation. Read moreSource§impl Ord for Int
impl Ord for Int
Source§impl PartialOrd for Int
impl PartialOrd for Int
Source§impl RemAssign for Int
impl RemAssign for Int
Source§fn rem_assign(&mut self, other: Self)
fn rem_assign(&mut self, other: Self)
%= operation. Read moreSource§impl SubAssign for Int
impl SubAssign for Int
Source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
-= operation. Read more