pub trait Integer: Sized + Add<Self, Output = Self> + AddAssign + Sub<Self, Output = Self> + SubAssign + Shr<Self, Output = Self> + ShrAssign + Shl<Self, Output = Self> + ShlAssign + BitAnd<Self, Output = Self> + BitAndAssign + BitOr<Self, Output = Self> + BitOrAssign + BitXor<Self, Output = Self> + BitXorAssign + Div<Self, Output = Self> + DivAssign + Mul<Self, Output = Self> + MulAssign + Copy {
const MIN: Self;
const MAX: Self;
const BITS: u32;
Show 54 methods
// Required methods
fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>;
fn count_ones(self) -> u32;
fn count_zeros(self) -> u32;
fn leading_zeros(self) -> u32;
fn trailing_zeros(self) -> u32;
fn leading_ones(self) -> u32;
fn trailing_ones(self) -> u32;
fn rotate_left(self, n: u32) -> Self;
fn rotate_right(self, n: u32) -> Self;
fn swap_bytes(self) -> Self;
fn reverse_bits(self) -> Self;
fn from_be(x: Self) -> Self;
fn from_le(x: Self) -> Self;
fn to_be(self) -> Self;
fn to_le(self) -> Self;
fn checked_add(self, rhs: Self) -> Option<Self>;
fn checked_sub(self, rhs: Self) -> Option<Self>;
fn checked_mul(self, rhs: Self) -> Option<Self>;
fn checked_div(self, rhs: Self) -> Option<Self>;
fn checked_div_euclid(self, rhs: Self) -> Option<Self>;
fn checked_rem(self, rhs: Self) -> Option<Self>;
fn checked_rem_euclid(self, rhs: Self) -> Option<Self>;
fn checked_neg(self) -> Option<Self>;
fn checked_shl(self, rhs: u32) -> Option<Self>;
fn checked_shr(self, rhs: u32) -> Option<Self>;
fn checked_pow(self, exp: u32) -> Option<Self>;
fn saturating_add(self, rhs: Self) -> Self;
fn saturating_sub(self, rhs: Self) -> Self;
fn saturating_mul(self, rhs: Self) -> Self;
fn saturating_pow(self, exp: u32) -> Self;
fn wrapping_add(self, rhs: Self) -> Self;
fn wrapping_sub(self, rhs: Self) -> Self;
fn wrapping_mul(self, rhs: Self) -> Self;
fn wrapping_div(self, rhs: Self) -> Self;
fn wrapping_div_euclid(self, rhs: Self) -> Self;
fn wrapping_rem(self, rhs: Self) -> Self;
fn wrapping_rem_euclid(self, rhs: Self) -> Self;
fn wrapping_neg(self) -> Self;
fn wrapping_shl(self, rhs: u32) -> Self;
fn wrapping_shr(self, rhs: u32) -> Self;
fn wrapping_pow(self, exp: u32) -> Self;
fn overflowing_add(self, rhs: Self) -> (Self, bool);
fn overflowing_sub(self, rhs: Self) -> (Self, bool);
fn overflowing_mul(self, rhs: Self) -> (Self, bool);
fn overflowing_div(self, rhs: Self) -> (Self, bool);
fn overflowing_div_euclid(self, rhs: Self) -> (Self, bool);
fn overflowing_rem(self, rhs: Self) -> (Self, bool);
fn overflowing_rem_euclid(self, rhs: Self) -> (Self, bool);
fn overflowing_neg(self) -> (Self, bool);
fn overflowing_shr(self, rhs: u32) -> (Self, bool);
fn overflowing_pow(self, exp: u32) -> (Self, bool);
fn pow(self, exp: u32) -> Self;
fn div_euclid(self, rhs: Self) -> Self;
fn rem_euclid(self, rhs: Self) -> Self;
}
Expand description
Built-in integers interface exposed as a trait.
This trait is implemented for all the built-in integer types and copies their interface completely, so it’s possible to write generic code that accepts any integer number.
Interface includes all the trait implementations as well, such as Copy
, Add
or BitXorAssign
.
§Caveats
-
<to/from/as>_<be/ne/le>_bytes
are not implemented, as the return type (array of generic const length that depends on the trait itself) cannot in be expressed in stable rust. -
is_power_of_two
/next_power_of_two
/checked_next_power_of_two
methods are not implemented, as they exist for the unsigned numbers only.
Required Associated Constants§
Required Methods§
sourcefn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>
fn from_str_radix(src: &str, radix: u32) -> Result<Self, ParseIntError>
See u128::from_str_radix
.
sourcefn count_ones(self) -> u32
fn count_ones(self) -> u32
See u128::count_ones
.
sourcefn count_zeros(self) -> u32
fn count_zeros(self) -> u32
See u128::count_zeros
.
sourcefn leading_zeros(self) -> u32
fn leading_zeros(self) -> u32
See u128::leading_zeros
.
sourcefn trailing_zeros(self) -> u32
fn trailing_zeros(self) -> u32
See u128::trailing_zeros
.
sourcefn leading_ones(self) -> u32
fn leading_ones(self) -> u32
See u128::leading_ones
.
sourcefn trailing_ones(self) -> u32
fn trailing_ones(self) -> u32
See u128::trailing_ones
.
sourcefn rotate_left(self, n: u32) -> Self
fn rotate_left(self, n: u32) -> Self
See u128::rotate_left
.
sourcefn rotate_right(self, n: u32) -> Self
fn rotate_right(self, n: u32) -> Self
See u128::rotate_right
.
sourcefn swap_bytes(self) -> Self
fn swap_bytes(self) -> Self
See u128::swap_bytes
.
sourcefn reverse_bits(self) -> Self
fn reverse_bits(self) -> Self
See u128::reverse_bits
.
sourcefn from_be(x: Self) -> Self
fn from_be(x: Self) -> Self
See u128::from_be
.
sourcefn from_le(x: Self) -> Self
fn from_le(x: Self) -> Self
See u128::from_le
.
sourcefn to_be(self) -> Self
fn to_be(self) -> Self
See u128::to_be
.
sourcefn to_le(self) -> Self
fn to_le(self) -> Self
See u128::to_le
.
sourcefn checked_add(self, rhs: Self) -> Option<Self>
fn checked_add(self, rhs: Self) -> Option<Self>
See u128::checked_add
.
sourcefn checked_sub(self, rhs: Self) -> Option<Self>
fn checked_sub(self, rhs: Self) -> Option<Self>
See u128::checked_sub
.
sourcefn checked_mul(self, rhs: Self) -> Option<Self>
fn checked_mul(self, rhs: Self) -> Option<Self>
See u128::checked_mul
.
sourcefn checked_div(self, rhs: Self) -> Option<Self>
fn checked_div(self, rhs: Self) -> Option<Self>
See u128::checked_div
.
sourcefn checked_div_euclid(self, rhs: Self) -> Option<Self>
fn checked_div_euclid(self, rhs: Self) -> Option<Self>
sourcefn checked_rem(self, rhs: Self) -> Option<Self>
fn checked_rem(self, rhs: Self) -> Option<Self>
See u128::checked_rem
.
sourcefn checked_rem_euclid(self, rhs: Self) -> Option<Self>
fn checked_rem_euclid(self, rhs: Self) -> Option<Self>
sourcefn checked_neg(self) -> Option<Self>
fn checked_neg(self) -> Option<Self>
See u128::checked_neg
.
sourcefn checked_shl(self, rhs: u32) -> Option<Self>
fn checked_shl(self, rhs: u32) -> Option<Self>
See u128::checked_shl
.
sourcefn checked_shr(self, rhs: u32) -> Option<Self>
fn checked_shr(self, rhs: u32) -> Option<Self>
See u128::checked_shr
.
sourcefn checked_pow(self, exp: u32) -> Option<Self>
fn checked_pow(self, exp: u32) -> Option<Self>
See u128::checked_pow
.
sourcefn saturating_add(self, rhs: Self) -> Self
fn saturating_add(self, rhs: Self) -> Self
See u128::saturating_add
.
sourcefn saturating_sub(self, rhs: Self) -> Self
fn saturating_sub(self, rhs: Self) -> Self
See u128::saturating_sub
.
sourcefn saturating_mul(self, rhs: Self) -> Self
fn saturating_mul(self, rhs: Self) -> Self
See u128::saturating_mul
.
sourcefn saturating_pow(self, exp: u32) -> Self
fn saturating_pow(self, exp: u32) -> Self
See u128::saturating_pow
.
sourcefn wrapping_add(self, rhs: Self) -> Self
fn wrapping_add(self, rhs: Self) -> Self
See u128::wrapping_add
.
sourcefn wrapping_sub(self, rhs: Self) -> Self
fn wrapping_sub(self, rhs: Self) -> Self
See u128::wrapping_sub
.
sourcefn wrapping_mul(self, rhs: Self) -> Self
fn wrapping_mul(self, rhs: Self) -> Self
See u128::wrapping_mul
.
sourcefn wrapping_div(self, rhs: Self) -> Self
fn wrapping_div(self, rhs: Self) -> Self
See u128::wrapping_div
.
sourcefn wrapping_div_euclid(self, rhs: Self) -> Self
fn wrapping_div_euclid(self, rhs: Self) -> Self
sourcefn wrapping_rem(self, rhs: Self) -> Self
fn wrapping_rem(self, rhs: Self) -> Self
See u128::wrapping_rem
.
sourcefn wrapping_rem_euclid(self, rhs: Self) -> Self
fn wrapping_rem_euclid(self, rhs: Self) -> Self
sourcefn wrapping_neg(self) -> Self
fn wrapping_neg(self) -> Self
See u128::wrapping_neg
.
sourcefn wrapping_shl(self, rhs: u32) -> Self
fn wrapping_shl(self, rhs: u32) -> Self
See u128::wrapping_shl
.
sourcefn wrapping_shr(self, rhs: u32) -> Self
fn wrapping_shr(self, rhs: u32) -> Self
See u128::wrapping_shr
.
sourcefn wrapping_pow(self, exp: u32) -> Self
fn wrapping_pow(self, exp: u32) -> Self
See u128::wrapping_pow
.
sourcefn overflowing_add(self, rhs: Self) -> (Self, bool)
fn overflowing_add(self, rhs: Self) -> (Self, bool)
sourcefn overflowing_sub(self, rhs: Self) -> (Self, bool)
fn overflowing_sub(self, rhs: Self) -> (Self, bool)
sourcefn overflowing_mul(self, rhs: Self) -> (Self, bool)
fn overflowing_mul(self, rhs: Self) -> (Self, bool)
sourcefn overflowing_div(self, rhs: Self) -> (Self, bool)
fn overflowing_div(self, rhs: Self) -> (Self, bool)
sourcefn overflowing_div_euclid(self, rhs: Self) -> (Self, bool)
fn overflowing_div_euclid(self, rhs: Self) -> (Self, bool)
sourcefn overflowing_rem(self, rhs: Self) -> (Self, bool)
fn overflowing_rem(self, rhs: Self) -> (Self, bool)
sourcefn overflowing_rem_euclid(self, rhs: Self) -> (Self, bool)
fn overflowing_rem_euclid(self, rhs: Self) -> (Self, bool)
sourcefn overflowing_neg(self) -> (Self, bool)
fn overflowing_neg(self) -> (Self, bool)
sourcefn overflowing_shr(self, rhs: u32) -> (Self, bool)
fn overflowing_shr(self, rhs: u32) -> (Self, bool)
sourcefn overflowing_pow(self, exp: u32) -> (Self, bool)
fn overflowing_pow(self, exp: u32) -> (Self, bool)
sourcefn div_euclid(self, rhs: Self) -> Self
fn div_euclid(self, rhs: Self) -> Self
See u128::div_euclid
.
sourcefn rem_euclid(self, rhs: Self) -> Self
fn rem_euclid(self, rhs: Self) -> Self
See u128::rem_euclid
.