[−][src]Struct typenum::uint::UInt
UInt
is defined recursively, where B
is the least significant bit and U
is the rest
of the number. Conceptually, U
should be bound by the trait Unsigned
and B
should
be bound by the trait Bit
, but enforcing these bounds causes linear instead of
logrithmic scaling in some places, so they are left off for now. They may be enforced in
future.
In order to keep numbers unique, leading zeros are not allowed, so UInt<UTerm, B0>
is
forbidden.
Example
use typenum::{B0, B1, UInt, UTerm}; type U6 = UInt<UInt<UInt<UTerm, B1>, B1>, B0>;
Methods
impl<U: Unsigned, B: Bit> UInt<U, B>
[src][−]
Trait Implementations
impl<Un, Bn> GetBit<UTerm> for UInt<Un, Bn>
[src]
type Output = Bn
impl<Un, Bn, Ui, Bi> GetBit<UInt<Ui, Bi>> for UInt<Un, Bn> where
UInt<Ui, Bi>: Sub<B1>,
Un: GetBit<Sub1<UInt<Ui, Bi>>>,
[src]
UInt<Ui, Bi>: Sub<B1>,
Un: GetBit<Sub1<UInt<Ui, Bi>>>,
impl<U: Unsigned, B: Bit> NonZero for UInt<U, B>
[src]
impl<U: Unsigned, B: Bit> Unsigned for UInt<U, B>
[src][+]
impl PowerOfTwo for UInt<UTerm, B1>
[src]
impl<U: Unsigned + PowerOfTwo> PowerOfTwo for UInt<U, B0>
[src]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for f32
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for f64
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for u8
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for u16
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for u32
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for u64
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for usize
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for i8
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for i16
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for i32
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for i64
[src][+]
impl<U: Unsigned, B: Bit> Pow<UInt<U, B>> for isize
[src][+]
impl<U: Unsigned, B: Bit> Cmp<UTerm> for UInt<U, B>
[src]
Nonzero > Zero
type Output = Greater
The result of the comparison. It should only ever be one of Greater
, Less
, or Equal
.
impl<U: Unsigned, B: Bit> Cmp<UInt<U, B>> for UTerm
[src]
Zero < Nonzero
type Output = Less
The result of the comparison. It should only ever be one of Greater
, Less
, or Equal
.
impl<Ul: Unsigned, Ur: Unsigned> Cmp<UInt<Ur, B0>> for UInt<Ul, B0> where
Ul: PrivateCmp<Ur, Equal>,
[src]
Ul: PrivateCmp<Ur, Equal>,
UInt<Ul, B0>
cmp with UInt<Ur, B0>
: SoFar
is Equal
type Output = PrivateCmpOut<Ul, Ur, Equal>
The result of the comparison. It should only ever be one of Greater
, Less
, or Equal
.
impl<Ul: Unsigned, Ur: Unsigned> Cmp<UInt<Ur, B1>> for UInt<Ul, B1> where
Ul: PrivateCmp<Ur, Equal>,
[src]
Ul: PrivateCmp<Ur, Equal>,
UInt<Ul, B1>
cmp with UInt<Ur, B1>
: SoFar
is Equal
type Output = PrivateCmpOut<Ul, Ur, Equal>
The result of the comparison. It should only ever be one of Greater
, Less
, or Equal
.
impl<Ul: Unsigned, Ur: Unsigned> Cmp<UInt<Ur, B1>> for UInt<Ul, B0> where
Ul: PrivateCmp<Ur, Less>,
[src]
Ul: PrivateCmp<Ur, Less>,
UInt<Ul, B0>
cmp with UInt<Ur, B1>
: SoFar
is Less
type Output = PrivateCmpOut<Ul, Ur, Less>
The result of the comparison. It should only ever be one of Greater
, Less
, or Equal
.
impl<Ul: Unsigned, Ur: Unsigned> Cmp<UInt<Ur, B0>> for UInt<Ul, B1> where
Ul: PrivateCmp<Ur, Greater>,
[src]
Ul: PrivateCmp<Ur, Greater>,
UInt<Ul, B1>
cmp with UInt<Ur, B0>
: SoFar
is Greater
type Output = PrivateCmpOut<Ul, Ur, Greater>
The result of the comparison. It should only ever be one of Greater
, Less
, or Equal
.
impl<U: Unsigned, B: Bit> Len for UInt<U, B> where
U: Len,
Length<U>: Add<B1>,
Add1<Length<U>>: Unsigned,
[src][+]
U: Len,
Length<U>: Add<B1>,
Add1<Length<U>>: Unsigned,
impl<Ur: Unsigned, Br: Bit> PartialDiv<UInt<Ur, Br>> for UTerm
[src][+]
impl<Ul: Unsigned, Bl: Bit, Ur: Unsigned, Br: Bit> PartialDiv<UInt<Ur, Br>> for UInt<Ul, Bl> where
UInt<Ul, Bl>: Div<UInt<Ur, Br>> + Rem<UInt<Ur, Br>, Output = U0>,
[src][+]
UInt<Ul, Bl>: Div<UInt<Ur, Br>> + Rem<UInt<Ur, Br>, Output = U0>,
impl<U, B, Ur> Min<Ur> for UInt<U, B> where
U: Unsigned,
B: Bit,
Ur: Unsigned,
UInt<U, B>: Cmp<Ur> + PrivateMin<Ur, Compare<UInt<U, B>, Ur>>,
[src][+]
U: Unsigned,
B: Bit,
Ur: Unsigned,
UInt<U, B>: Cmp<Ur> + PrivateMin<Ur, Compare<UInt<U, B>, Ur>>,
impl<U, B, Ur> Max<Ur> for UInt<U, B> where
U: Unsigned,
B: Bit,
Ur: Unsigned,
UInt<U, B>: Cmp<Ur> + PrivateMax<Ur, Compare<UInt<U, B>, Ur>>,
[src][+]
U: Unsigned,
B: Bit,
Ur: Unsigned,
UInt<U, B>: Cmp<Ur> + PrivateMax<Ur, Compare<UInt<U, B>, Ur>>,
impl<U: Debug, B: Debug> Debug for UInt<U, B>
[src][+]
impl<U: PartialEq, B: PartialEq> PartialEq<UInt<U, B>> for UInt<U, B>
[src][+]
impl<U: Eq, B: Eq> Eq for UInt<U, B>
[src]
impl<U: Ord, B: Ord> Ord for UInt<U, B>
[src][+]
impl<U: PartialOrd, B: PartialOrd> PartialOrd<UInt<U, B>> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Add<B0> for UInt<U, B>
[src][+]
impl<U: Unsigned> Add<B1> for UInt<U, B0>
[src][+]
impl<U: Unsigned> Add<B1> for UInt<U, B1> where
U: Add<B1>,
Add1<U>: Unsigned,
[src][+]
U: Add<B1>,
Add1<U>: Unsigned,
impl<U: Unsigned, B: Bit> Add<UTerm> for UInt<U, B>
[src][+]
impl<Ul: Unsigned, Ur: Unsigned> Add<UInt<Ur, B0>> for UInt<Ul, B0> where
Ul: Add<Ur>,
[src][+]
Ul: Add<Ur>,
impl<Ul: Unsigned, Ur: Unsigned> Add<UInt<Ur, B1>> for UInt<Ul, B0> where
Ul: Add<Ur>,
[src][+]
Ul: Add<Ur>,
impl<Ul: Unsigned, Ur: Unsigned> Add<UInt<Ur, B0>> for UInt<Ul, B1> where
Ul: Add<Ur>,
[src][+]
Ul: Add<Ur>,
impl<Ul: Unsigned, Ur: Unsigned> Add<UInt<Ur, B1>> for UInt<Ul, B1> where
Ul: Add<Ur>,
Sum<Ul, Ur>: Add<B1>,
[src][+]
Ul: Add<Ur>,
Sum<Ul, Ur>: Add<B1>,
impl<U: Unsigned, B: Bit> Sub<B0> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Sub<B1> for UInt<UInt<U, B>, B1>
[src][+]
impl Sub<B1> for UInt<UTerm, B1>
[src][+]
impl<U: Unsigned> Sub<B1> for UInt<U, B0> where
U: Sub<B1>,
Sub1<U>: Unsigned,
[src][+]
U: Sub<B1>,
Sub1<U>: Unsigned,
impl<Ul: Unsigned, Bl: Bit, Ur: Unsigned> Sub<Ur> for UInt<Ul, Bl> where
UInt<Ul, Bl>: PrivateSub<Ur>,
PrivateSubOut<UInt<Ul, Bl>, Ur>: Trim,
[src][+]
UInt<Ul, Bl>: PrivateSub<Ur>,
PrivateSubOut<UInt<Ul, Bl>, Ur>: Trim,
impl<U: Unsigned, B: Bit> Mul<B0> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Mul<B1> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Mul<UTerm> for UInt<U, B>
[src][+]
impl<Ul: Unsigned, B: Bit, Ur: Unsigned> Mul<UInt<Ur, B>> for UInt<Ul, B0> where
Ul: Mul<UInt<Ur, B>>,
[src][+]
Ul: Mul<UInt<Ur, B>>,
impl<Ul: Unsigned, B: Bit, Ur: Unsigned> Mul<UInt<Ur, B>> for UInt<Ul, B1> where
Ul: Mul<UInt<Ur, B>>,
UInt<Prod<Ul, UInt<Ur, B>>, B0>: Add<UInt<Ur, B>>,
[src][+]
Ul: Mul<UInt<Ur, B>>,
UInt<Prod<Ul, UInt<Ur, B>>, B0>: Add<UInt<Ur, B>>,
type Output = Sum<UInt<Prod<Ul, UInt<Ur, B>>, B0>, UInt<Ur, B>>
fn mul(self, _: UInt<Ur, B>) -> Self::Output
[src][−]
impl<Ur: Unsigned, Br: Bit> Div<UInt<Ur, Br>> for UTerm
[src][+]
impl<Ul: Unsigned, Bl: Bit, Ur: Unsigned, Br: Bit> Div<UInt<Ur, Br>> for UInt<Ul, Bl> where
UInt<Ul, Bl>: Len,
Length<UInt<Ul, Bl>>: Sub<B1>,
(): PrivateDiv<UInt<Ul, Bl>, UInt<Ur, Br>, U0, U0, Sub1<Length<UInt<Ul, Bl>>>>,
[src][+]
UInt<Ul, Bl>: Len,
Length<UInt<Ul, Bl>>: Sub<B1>,
(): PrivateDiv<UInt<Ul, Bl>, UInt<Ur, Br>, U0, U0, Sub1<Length<UInt<Ul, Bl>>>>,
impl<Ur: Unsigned, Br: Bit> Rem<UInt<Ur, Br>> for UTerm
[src][+]
impl<Ul: Unsigned, Bl: Bit, Ur: Unsigned, Br: Bit> Rem<UInt<Ur, Br>> for UInt<Ul, Bl> where
UInt<Ul, Bl>: Len,
Length<UInt<Ul, Bl>>: Sub<B1>,
(): PrivateDiv<UInt<Ul, Bl>, UInt<Ur, Br>, U0, U0, Sub1<Length<UInt<Ul, Bl>>>>,
[src][+]
UInt<Ul, Bl>: Len,
Length<UInt<Ul, Bl>>: Sub<B1>,
(): PrivateDiv<UInt<Ul, Bl>, UInt<Ur, Br>, U0, U0, Sub1<Length<UInt<Ul, Bl>>>>,
impl<Ul: Unsigned, Bl: Bit, Ur: Unsigned> BitAnd<Ur> for UInt<Ul, Bl> where
UInt<Ul, Bl>: PrivateAnd<Ur>,
PrivateAndOut<UInt<Ul, Bl>, Ur>: Trim,
[src][+]
UInt<Ul, Bl>: PrivateAnd<Ur>,
PrivateAndOut<UInt<Ul, Bl>, Ur>: Trim,
type Output = TrimOut<PrivateAndOut<UInt<Ul, Bl>, Ur>>
fn bitand(self, _: Ur) -> Self::Output
[src][−]
impl<B: Bit, U: Unsigned> BitOr<UTerm> for UInt<U, B>
[src][+]
impl<Ul: Unsigned, Ur: Unsigned> BitOr<UInt<Ur, B0>> for UInt<Ul, B0> where
Ul: BitOr<Ur>,
[src][+]
Ul: BitOr<Ur>,
type Output = UInt<<Ul as BitOr<Ur>>::Output, B0>
fn bitor(self, _: UInt<Ur, B0>) -> Self::Output
[src][−]
impl<Ul: Unsigned, Ur: Unsigned> BitOr<UInt<Ur, B1>> for UInt<Ul, B0> where
Ul: BitOr<Ur>,
[src][+]
Ul: BitOr<Ur>,
impl<Ul: Unsigned, Ur: Unsigned> BitOr<UInt<Ur, B0>> for UInt<Ul, B1> where
Ul: BitOr<Ur>,
[src][+]
Ul: BitOr<Ur>,
impl<Ul: Unsigned, Ur: Unsigned> BitOr<UInt<Ur, B1>> for UInt<Ul, B1> where
Ul: BitOr<Ur>,
[src][+]
Ul: BitOr<Ur>,
impl<Ul: Unsigned, Bl: Bit, Ur: Unsigned> BitXor<Ur> for UInt<Ul, Bl> where
UInt<Ul, Bl>: PrivateXor<Ur>,
PrivateXorOut<UInt<Ul, Bl>, Ur>: Trim,
[src][+]
UInt<Ul, Bl>: PrivateXor<Ur>,
PrivateXorOut<UInt<Ul, Bl>, Ur>: Trim,
type Output = TrimOut<PrivateXorOut<UInt<Ul, Bl>, Ur>>
fn bitxor(self, _: Ur) -> Self::Output
[src][−]
impl<U: Unsigned, B: Bit> Shl<B0> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Shl<B1> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Shl<UTerm> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit, Ur: Unsigned, Br: Bit> Shl<UInt<Ur, Br>> for UInt<U, B> where
UInt<Ur, Br>: Sub<B1>,
UInt<UInt<U, B>, B0>: Shl<Sub1<UInt<Ur, Br>>>,
[src][+]
UInt<Ur, Br>: Sub<B1>,
UInt<UInt<U, B>, B0>: Shl<Sub1<UInt<Ur, Br>>>,
type Output = Shleft<UInt<UInt<U, B>, B0>, Sub1<UInt<Ur, Br>>>
fn shl(self, _: UInt<Ur, Br>) -> Self::Output
[src][−]
impl<U: Unsigned, B: Bit> Shr<UTerm> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Shr<B0> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit> Shr<B1> for UInt<U, B>
[src][+]
impl<U: Unsigned, B: Bit, Ur: Unsigned, Br: Bit> Shr<UInt<Ur, Br>> for UInt<U, B> where
UInt<Ur, Br>: Sub<B1>,
U: Shr<Sub1<UInt<Ur, Br>>>,
[src][+]
UInt<Ur, Br>: Sub<B1>,
U: Shr<Sub1<UInt<Ur, Br>>>,
impl<U: Hash, B: Hash> Hash for UInt<U, B>
[src][+]
impl<U: Copy, B: Copy> Copy for UInt<U, B>
[src]
impl<U: Clone, B: Clone> Clone for UInt<U, B>
[src][+]
impl<U: Default, B: Default> Default for UInt<U, B>
[src][+]
Auto Trait Implementations
impl<U, B> Send for UInt<U, B> where
B: Send,
U: Send,
B: Send,
U: Send,
impl<U, B> Sync for UInt<U, B> where
B: Sync,
U: Sync,
B: Sync,
U: Sync,
Blanket Implementations
impl<N, I, B> SetBit for N where
N: PrivateSetBit<I, B>,
<N as PrivateSetBit<I, B>>::Output: Trim,
[src]
N: PrivateSetBit<I, B>,
<N as PrivateSetBit<I, B>>::Output: Trim,
type Output = <<N as PrivateSetBit<I, B>>::Output as Trim>::Output
impl<T> Same for T
[src]
type Output = T
Should always be Self
impl<X, N> Pow for X where
N: Unsigned,
X: Unsigned + PrivatePow<UInt<UTerm, B1>, N>,
[src][−]
N: Unsigned,
X: Unsigned + PrivatePow<UInt<UTerm, B1>, N>,
type Output = <X as PrivatePow<UInt<UTerm, B1>, N>>::Output
The result of the exponentiation.
fn powi(Self, N) -> <X as Pow<N>>::Output
[src][−]
impl<M, N> PartialDiv for M where
M: Integer + Div<N> + Rem<N, Output = Z0>,
[src][−]
M: Integer + Div<N> + Rem<N, Output = Z0>,
type Output = <M as Div<N>>::Output
The type of the result of the division
fn partial_div(Self, N) -> <M as PartialDiv<N>>::Output
[src][−]
impl<A, B> IsLess for A where
A: Cmp<B> + IsLessPrivate<B, <A as Cmp<B>>::Output>,
[src][−]
A: Cmp<B> + IsLessPrivate<B, <A as Cmp<B>>::Output>,
type Output = <A as IsLessPrivate<B, <A as Cmp<B>>::Output>>::Output
The type representing either True
or False
fn is_less(Self, B) -> <A as IsLess<B>>::Output
[src][−]
impl<A, B> IsEqual for A where
A: Cmp<B> + IsEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][−]
A: Cmp<B> + IsEqualPrivate<B, <A as Cmp<B>>::Output>,
type Output = <A as IsEqualPrivate<B, <A as Cmp<B>>::Output>>::Output
The type representing either True
or False
fn is_equal(Self, B) -> <A as IsEqual<B>>::Output
[src][−]
impl<A, B> IsGreater for A where
A: Cmp<B> + IsGreaterPrivate<B, <A as Cmp<B>>::Output>,
[src][−]
A: Cmp<B> + IsGreaterPrivate<B, <A as Cmp<B>>::Output>,
type Output = <A as IsGreaterPrivate<B, <A as Cmp<B>>::Output>>::Output
The type representing either True
or False
fn is_greater(Self, B) -> <A as IsGreater<B>>::Output
[src][−]
impl<A, B> IsLessOrEqual for A where
A: Cmp<B> + IsLessOrEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][−]
A: Cmp<B> + IsLessOrEqualPrivate<B, <A as Cmp<B>>::Output>,
type Output = <A as IsLessOrEqualPrivate<B, <A as Cmp<B>>::Output>>::Output
The type representing either True
or False
fn is_less_or_equal(Self, B) -> <A as IsLessOrEqual<B>>::Output
[src][−]
impl<A, B> IsNotEqual for A where
A: Cmp<B> + IsNotEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][−]
A: Cmp<B> + IsNotEqualPrivate<B, <A as Cmp<B>>::Output>,
type Output = <A as IsNotEqualPrivate<B, <A as Cmp<B>>::Output>>::Output
The type representing either True
or False
fn is_not_equal(Self, B) -> <A as IsNotEqual<B>>::Output
[src][−]
impl<A, B> IsGreaterOrEqual for A where
A: Cmp<B> + IsGreaterOrEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][−]
A: Cmp<B> + IsGreaterOrEqualPrivate<B, <A as Cmp<B>>::Output>,
type Output = <A as IsGreaterOrEqualPrivate<B, <A as Cmp<B>>::Output>>::Output
The type representing either True
or False
fn is_greater_or_equal(Self, B) -> <A as IsGreaterOrEqual<B>>::Output
[src][−]
impl<T> From for T
[src][−]
impl<T, U> TryFrom for T where
U: Into<T>,
[src][−]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src][−]
impl<T, U> TryInto 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.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src][−]
impl<T, U> Into for T where
U: From<T>,
[src][−]
U: From<T>,
impl<T> Borrow for T where
T: ?Sized,
[src][−]
T: ?Sized,
impl<T> BorrowMut for T where
T: ?Sized,
[src][−]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src][−]
impl<T> Any for T where
T: 'static + ?Sized,
[src][−]
T: 'static + ?Sized,