[−][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: Copy, B: Copy> Copy for UInt<U, B>
[src]
impl<U: Debug, B: Debug> Debug for UInt<U, B>
[src][+]
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: 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: Hash, B: Hash> Hash 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> 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: 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<I, B> 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<T> for T
[src]
type Output = T
Should always be Self
impl<X, N> Pow<N> for X where
N: Unsigned,
X: Unsigned + PrivatePow<UInt<UTerm, B1>, N>,
[src][+]
N: Unsigned,
X: Unsigned + PrivatePow<UInt<UTerm, B1>, N>,
impl<M, N> PartialDiv<N> for M where
M: Integer + Div<N> + Rem<N, Output = Z0>,
[src][+]
M: Integer + Div<N> + Rem<N, Output = Z0>,
impl<A, B> IsLess<B> for A where
A: Cmp<B> + IsLessPrivate<B, <A as Cmp<B>>::Output>,
[src][+]
A: Cmp<B> + IsLessPrivate<B, <A as Cmp<B>>::Output>,
impl<A, B> IsEqual<B> for A where
A: Cmp<B> + IsEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][+]
A: Cmp<B> + IsEqualPrivate<B, <A as Cmp<B>>::Output>,
impl<A, B> IsGreater<B> for A where
A: Cmp<B> + IsGreaterPrivate<B, <A as Cmp<B>>::Output>,
[src][+]
A: Cmp<B> + IsGreaterPrivate<B, <A as Cmp<B>>::Output>,
impl<A, B> IsLessOrEqual<B> for A where
A: Cmp<B> + IsLessOrEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][+]
A: Cmp<B> + IsLessOrEqualPrivate<B, <A as Cmp<B>>::Output>,
impl<A, B> IsNotEqual<B> for A where
A: Cmp<B> + IsNotEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][+]
A: Cmp<B> + IsNotEqualPrivate<B, <A as Cmp<B>>::Output>,
impl<A, B> IsGreaterOrEqual<B> for A where
A: Cmp<B> + IsGreaterOrEqualPrivate<B, <A as Cmp<B>>::Output>,
[src][+]
A: Cmp<B> + IsGreaterOrEqualPrivate<B, <A as Cmp<B>>::Output>,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
impl<T> From<T> for T
[src][+]
impl<T, U> Into<U> for T where
U: From<T>,
[src][+]
U: From<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src][+]
U: TryFrom<T>,
impl<T> Borrow<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src][+]
T: ?Sized,
impl<T> Any for T where
T: 'static + ?Sized,
[src][+]
T: 'static + ?Sized,