Struct ibig::UBig [−][src]
Unsigned big integer.
Arbitrarily large unsigned integer.
Examples
let a = ubig!(a2a123bbb127779cccc123123ccc base 32); let b = ubig!(0x1231abcd4134); let c = UBig::from_str_radix("a2a123bbb127779cccc123123ccc", 32)?; let d = UBig::from_str_radix("1231abcd4134", 16)?; assert_eq!(a, c); assert_eq!(b, d);
Implementations
impl UBig
[src]
pub fn bit(&self, n: usize) -> bool
[src]
Returns true if the n
-th bit is set.
Examples
assert_eq!(ubig!(0b10010).bit(1), true); assert_eq!(ubig!(0b10010).bit(3), false); assert_eq!(ubig!(0b10010).bit(100), false);
pub fn set_bit(&mut self, n: usize)
[src]
Set the n
-th bit.
Examples
let mut a = ubig!(0b100); a.set_bit(0); assert_eq!(a, ubig!(0b101)); a.set_bit(10); assert_eq!(a, ubig!(0b10000000101));
pub fn clear_bit(&mut self, n: usize)
[src]
pub fn trailing_zeros(&self) -> Option<usize>
[src]
Returns the number of trailing zeros in the binary representation.
In other words, it is the smallest n
such that 2 to the power of n
divides the number.
For 0, it returns None
.
Examples
assert_eq!(ubig!(17).trailing_zeros(), Some(0)); assert_eq!(ubig!(48).trailing_zeros(), Some(4)); assert_eq!(ubig!(0b101000000).trailing_zeros(), Some(6)); assert_eq!(ubig!(0).trailing_zeros(), None);
pub fn bit_len(&self) -> usize
[src]
Bit length.
The length of the binary representation of the number.
For 0, the length is 0.
For non-zero numbers it is:
in_radix(2).to_string().len()
- the index of the top 1 bit plus one
- the floor of the logarithm base 2 of the number plus one.
Examples
assert_eq!(ubig!(17).bit_len(), 5); assert_eq!(ubig!(0b101000000).bit_len(), 9); assert_eq!(ubig!(0).bit_len(), 0); let x = ubig!(_0x90ffff3450897234); assert_eq!(x.bit_len(), x.in_radix(2).to_string().len());
pub fn is_power_of_two(&self) -> bool
[src]
True if the number is a power of 2.
Examples
assert_eq!(ubig!(0).is_power_of_two(), false); assert_eq!(ubig!(8).is_power_of_two(), true); assert_eq!(ubig!(9).is_power_of_two(), false);
impl UBig
[src]
pub fn from_le_bytes(bytes: &[u8]) -> UBig
[src]
Construct from little-endian bytes.
Examples
assert_eq!(UBig::from_le_bytes(&[3, 2, 1]), ubig!(0x010203));
pub fn from_be_bytes(bytes: &[u8]) -> UBig
[src]
Construct from big-endian bytes.
Examples
assert_eq!(UBig::from_be_bytes(&[1, 2, 3]), ubig!(0x010203));
pub fn to_le_bytes(&self) -> Vec<u8>
[src]
Return little-endian bytes.
Examples
assert!(ubig!(0).to_le_bytes().is_empty()); assert_eq!(ubig!(0x010203).to_le_bytes(), [3, 2, 1]);
pub fn to_be_bytes(&self) -> Vec<u8>
[src]
Return big-endian bytes.
Examples
assert!(ubig!(0).to_be_bytes().is_empty()); assert_eq!(ubig!(0x010203).to_be_bytes(), [1, 2, 3]);
pub fn to_f32(&self) -> f32
[src]
Convert to f32.
Round to nearest, breaking ties to even last bit.
Examples
assert_eq!(ubig!(134).to_f32(), 134.0f32);
pub fn to_f64(&self) -> f64
[src]
Convert to f64.
Round to nearest, breaking ties to even last bit.
Examples
assert_eq!(ubig!(134).to_f64(), 134.0f64);
impl UBig
[src]
impl UBig
[src]
pub fn from_str_radix(src: &str, radix: u32) -> Result<UBig, ParseError>
[src]
Convert a string in a given base to UBig.
src
may contain an optional +
prefix.
Digits 10-35 are represented by a-z
or A-Z
.
Panics
Panics if radix
is not between 2 and 36 inclusive.
Examples
assert_eq!(UBig::from_str_radix("+7ab", 32)?, ubig!(7499));
pub fn from_str_with_radix_prefix(src: &str) -> Result<UBig, ParseError>
[src]
Convert a string with an optional radix prefix to UBig.
src
may contain an optional +
after the radix prefix.
Allowed prefixes: 0b
for binary, 0o
for octal, 0x
for hexadecimal.
Examples
assert_eq!(UBig::from_str_with_radix_prefix("+0o17")?, ubig!(0o17)); assert_eq!(UBig::from_str_with_radix_prefix("0x1f")?, ubig!(0x1f));
impl UBig
[src]
Trait Implementations
impl Add<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the +
operator.
fn add(self, rhs: &UBig) -> UBig
[src]
impl Add<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the +
operator.
fn add(self, rhs: &UBig) -> UBig
[src]
impl Add<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the +
operator.
fn add(self, rhs: UBig) -> UBig
[src]
impl Add<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the +
operator.
fn add(self, rhs: UBig) -> UBig
[src]
impl AddAssign<&'_ UBig> for UBig
[src]
fn add_assign(&mut self, rhs: &UBig)
[src]
impl AddAssign<UBig> for UBig
[src]
fn add_assign(&mut self, rhs: UBig)
[src]
impl AndNot<&'_ UBig> for UBig
[src]
impl AndNot<&'_ UBig> for &UBig
[src]
impl AndNot<UBig> for UBig
[src]
impl AndNot<UBig> for &UBig
[src]
impl Binary for UBig
[src]
impl BitAnd<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the &
operator.
fn bitand(self, rhs: &UBig) -> UBig
[src]
impl BitAnd<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the &
operator.
fn bitand(self, rhs: &UBig) -> UBig
[src]
impl BitAnd<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the &
operator.
fn bitand(self, rhs: UBig) -> UBig
[src]
impl BitAnd<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the &
operator.
fn bitand(self, rhs: UBig) -> UBig
[src]
impl BitAndAssign<&'_ UBig> for UBig
[src]
fn bitand_assign(&mut self, rhs: &UBig)
[src]
impl BitAndAssign<UBig> for UBig
[src]
fn bitand_assign(&mut self, rhs: UBig)
[src]
impl BitOr<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the |
operator.
fn bitor(self, rhs: &UBig) -> UBig
[src]
impl BitOr<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the |
operator.
fn bitor(self, rhs: &UBig) -> UBig
[src]
impl BitOr<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the |
operator.
fn bitor(self, rhs: UBig) -> UBig
[src]
impl BitOr<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the |
operator.
fn bitor(self, rhs: UBig) -> UBig
[src]
impl BitOrAssign<&'_ UBig> for UBig
[src]
fn bitor_assign(&mut self, rhs: &UBig)
[src]
impl BitOrAssign<UBig> for UBig
[src]
fn bitor_assign(&mut self, rhs: UBig)
[src]
impl BitXor<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the ^
operator.
fn bitxor(self, rhs: &UBig) -> UBig
[src]
impl BitXor<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the ^
operator.
fn bitxor(self, rhs: &UBig) -> UBig
[src]
impl BitXor<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the ^
operator.
fn bitxor(self, rhs: UBig) -> UBig
[src]
impl BitXor<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the ^
operator.
fn bitxor(self, rhs: UBig) -> UBig
[src]
impl BitXorAssign<&'_ UBig> for UBig
[src]
fn bitxor_assign(&mut self, rhs: &UBig)
[src]
impl BitXorAssign<UBig> for UBig
[src]
fn bitxor_assign(&mut self, rhs: UBig)
[src]
impl Clone for UBig
[src]
impl Debug for UBig
[src]
impl Default for UBig
[src]
impl Display for UBig
[src]
impl Div<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the /
operator.
fn div(self, rhs: &UBig) -> UBig
[src]
impl Div<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the /
operator.
fn div(self, rhs: &UBig) -> UBig
[src]
impl Div<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the /
operator.
fn div(self, rhs: UBig) -> UBig
[src]
impl Div<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the /
operator.
fn div(self, rhs: UBig) -> UBig
[src]
impl DivAssign<&'_ UBig> for UBig
[src]
fn div_assign(&mut self, rhs: &UBig)
[src]
impl DivAssign<UBig> for UBig
[src]
fn div_assign(&mut self, rhs: UBig)
[src]
impl DivEuclid<&'_ UBig> for UBig
[src]
impl DivEuclid<&'_ UBig> for &UBig
[src]
impl DivEuclid<UBig> for UBig
[src]
impl DivEuclid<UBig> for &UBig
[src]
impl DivRem<&'_ UBig> for UBig
[src]
impl DivRem<&'_ UBig> for &UBig
[src]
impl DivRem<UBig> for UBig
[src]
impl DivRem<UBig> for &UBig
[src]
impl DivRemEuclid<&'_ UBig> for UBig
[src]
impl DivRemEuclid<&'_ UBig> for &UBig
[src]
impl DivRemEuclid<UBig> for UBig
[src]
impl DivRemEuclid<UBig> for &UBig
[src]
impl Eq for UBig
[src]
impl From<&'_ UBig> for IBig
[src]
impl From<UBig> for IBig
[src]
impl From<bool> for UBig
[src]
impl From<u128> for UBig
[src]
impl From<u16> for UBig
[src]
impl From<u32> for UBig
[src]
impl From<u64> for UBig
[src]
impl From<u8> for UBig
[src]
impl From<usize> for UBig
[src]
impl FromStr for UBig
[src]
type Err = ParseError
The associated error which can be returned from parsing.
fn from_str(s: &str) -> Result<UBig, ParseError>
[src]
impl Hash for UBig
[src]
fn hash<__H: Hasher>(&self, state: &mut __H)
[src]
pub fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl IntoModulo for UBig
[src]
fn into_modulo(self, ring: &ModuloRing) -> Modulo<'_>
[src]
impl IntoModulo for &UBig
[src]
fn into_modulo(self, ring: &ModuloRing) -> Modulo<'_>
[src]
impl LowerHex for UBig
[src]
impl Mul<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the *
operator.
fn mul(self, rhs: &UBig) -> UBig
[src]
impl Mul<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the *
operator.
fn mul(self, rhs: &UBig) -> UBig
[src]
impl Mul<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the *
operator.
fn mul(self, rhs: UBig) -> UBig
[src]
impl Mul<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the *
operator.
fn mul(self, rhs: UBig) -> UBig
[src]
impl MulAssign<&'_ UBig> for UBig
[src]
fn mul_assign(&mut self, rhs: &UBig)
[src]
impl MulAssign<UBig> for UBig
[src]
fn mul_assign(&mut self, rhs: UBig)
[src]
impl NextPowerOfTwo for UBig
[src]
type Output = UBig
fn next_power_of_two(self) -> UBig
[src]
impl NextPowerOfTwo for &UBig
[src]
type Output = UBig
fn next_power_of_two(self) -> UBig
[src]
impl Num for UBig
[src]
type FromStrRadixErr = ParseError
fn from_str_radix(s: &str, radix: u32) -> Result<Self, ParseError>
[src]
impl Octal for UBig
[src]
impl One for UBig
[src]
fn one() -> Self
[src]
pub fn set_one(&mut self)
[src]
pub fn is_one(&self) -> bool where
Self: PartialEq<Self>,
[src]
Self: PartialEq<Self>,
impl Ord for UBig
[src]
fn cmp(&self, other: &UBig) -> Ordering
[src]
#[must_use]pub fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]pub fn clamp(self, min: Self, max: Self) -> Self
1.50.0[src]
impl PartialEq<UBig> for UBig
[src]
impl PartialOrd<UBig> for UBig
[src]
fn partial_cmp(&self, other: &UBig) -> Option<Ordering>
[src]
#[must_use]pub fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]pub fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl Pow<usize> for UBig
[src]
impl Pow<usize> for &UBig
[src]
impl Rem<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the %
operator.
fn rem(self, rhs: &UBig) -> UBig
[src]
impl Rem<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the %
operator.
fn rem(self, rhs: &UBig) -> UBig
[src]
impl Rem<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the %
operator.
fn rem(self, rhs: UBig) -> UBig
[src]
impl Rem<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the %
operator.
fn rem(self, rhs: UBig) -> UBig
[src]
impl RemAssign<&'_ UBig> for UBig
[src]
fn rem_assign(&mut self, rhs: &UBig)
[src]
impl RemAssign<UBig> for UBig
[src]
fn rem_assign(&mut self, rhs: UBig)
[src]
impl RemEuclid<&'_ UBig> for UBig
[src]
impl RemEuclid<&'_ UBig> for &UBig
[src]
impl RemEuclid<UBig> for UBig
[src]
impl RemEuclid<UBig> for &UBig
[src]
impl SampleUniform for UBig
[src]
type Sampler = UniformUBig
The UniformSampler
implementation supporting type X
.
impl Shl<&'_ usize> for UBig
[src]
type Output = UBig
The resulting type after applying the <<
operator.
fn shl(self, rhs: &usize) -> UBig
[src]
impl Shl<&'_ usize> for &UBig
[src]
type Output = UBig
The resulting type after applying the <<
operator.
fn shl(self, rhs: &usize) -> UBig
[src]
impl Shl<usize> for UBig
[src]
type Output = UBig
The resulting type after applying the <<
operator.
fn shl(self, rhs: usize) -> UBig
[src]
impl Shl<usize> for &UBig
[src]
type Output = UBig
The resulting type after applying the <<
operator.
fn shl(self, rhs: usize) -> UBig
[src]
impl ShlAssign<&'_ usize> for UBig
[src]
fn shl_assign(&mut self, rhs: &usize)
[src]
impl ShlAssign<usize> for UBig
[src]
fn shl_assign(&mut self, rhs: usize)
[src]
impl Shr<&'_ usize> for UBig
[src]
type Output = UBig
The resulting type after applying the >>
operator.
fn shr(self, rhs: &usize) -> UBig
[src]
impl Shr<&'_ usize> for &UBig
[src]
type Output = UBig
The resulting type after applying the >>
operator.
fn shr(self, rhs: &usize) -> UBig
[src]
impl Shr<usize> for UBig
[src]
type Output = UBig
The resulting type after applying the >>
operator.
fn shr(self, rhs: usize) -> UBig
[src]
impl Shr<usize> for &UBig
[src]
type Output = UBig
The resulting type after applying the >>
operator.
fn shr(self, rhs: usize) -> UBig
[src]
impl ShrAssign<&'_ usize> for UBig
[src]
fn shr_assign(&mut self, rhs: &usize)
[src]
impl ShrAssign<usize> for UBig
[src]
fn shr_assign(&mut self, rhs: usize)
[src]
impl StructuralEq for UBig
[src]
impl StructuralPartialEq for UBig
[src]
impl Sub<&'_ UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the -
operator.
fn sub(self, rhs: &UBig) -> UBig
[src]
impl Sub<&'_ UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the -
operator.
fn sub(self, rhs: &UBig) -> UBig
[src]
impl Sub<UBig> for UBig
[src]
type Output = UBig
The resulting type after applying the -
operator.
fn sub(self, rhs: UBig) -> UBig
[src]
impl Sub<UBig> for &UBig
[src]
type Output = UBig
The resulting type after applying the -
operator.
fn sub(self, rhs: UBig) -> UBig
[src]
impl SubAssign<&'_ UBig> for UBig
[src]
fn sub_assign(&mut self, rhs: &UBig)
[src]
impl SubAssign<UBig> for UBig
[src]
fn sub_assign(&mut self, rhs: UBig)
[src]
impl TryFrom<&'_ IBig> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(x: &IBig) -> Result<UBig, OutOfBoundsError>
[src]
impl TryFrom<IBig> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(x: IBig) -> Result<UBig, OutOfBoundsError>
[src]
impl TryFrom<i128> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(value: i128) -> Result<UBig, OutOfBoundsError>
[src]
impl TryFrom<i16> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(value: i16) -> Result<UBig, OutOfBoundsError>
[src]
impl TryFrom<i32> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(value: i32) -> Result<UBig, OutOfBoundsError>
[src]
impl TryFrom<i64> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(value: i64) -> Result<UBig, OutOfBoundsError>
[src]
impl TryFrom<i8> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(value: i8) -> Result<UBig, OutOfBoundsError>
[src]
impl TryFrom<isize> for UBig
[src]
type Error = OutOfBoundsError
The type returned in the event of a conversion error.
fn try_from(value: isize) -> Result<UBig, OutOfBoundsError>
[src]
impl Unsigned for UBig
[src]
impl UpperHex for UBig
[src]
impl Zero for UBig
[src]
Auto Trait Implementations
impl RefUnwindSafe for UBig
impl Send for UBig
impl Sync for UBig
impl Unpin for UBig
impl UnwindSafe for UBig
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> NumAssign for T where
T: Num + NumAssignOps<T>,
[src]
T: Num + NumAssignOps<T>,
impl<T, Rhs> NumAssignOps<Rhs> for T where
T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>,
[src]
T: AddAssign<Rhs> + SubAssign<Rhs> + MulAssign<Rhs> + DivAssign<Rhs> + RemAssign<Rhs>,
impl<T> NumAssignRef for T where
T: NumAssign + for<'r> NumAssignOps<&'r T>,
[src]
T: NumAssign + for<'r> NumAssignOps<&'r T>,
impl<T, Rhs, Output> NumOps<Rhs, Output> for T where
T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,
[src]
T: Sub<Rhs, Output = Output> + Mul<Rhs, Output = Output> + Div<Rhs, Output = Output> + Add<Rhs, Output = Output> + Rem<Rhs, Output = Output>,
impl<T> NumRef for T where
T: Num + for<'r> NumOps<&'r T, T>,
[src]
T: Num + for<'r> NumOps<&'r T, T>,
impl<T, Base> RefNum<Base> for T where
T: NumOps<Base, Base> + for<'r> NumOps<&'r Base, Base>,
[src]
T: NumOps<Base, Base> + for<'r> NumOps<&'r Base, Base>,
impl<Borrowed> SampleBorrow<Borrowed> for Borrowed where
Borrowed: SampleUniform,
[src]
Borrowed: SampleUniform,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<V, T> VZip<V> for T where
V: MultiLane<T>,
V: MultiLane<T>,