[−][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<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<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: Debug, B: Debug> Debug for UInt<U, B>
[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<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: 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<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> Unpin for UInt<U, B> where
B: Unpin,
U: Unpin,
B: Unpin,
U: Unpin,
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<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<N> SquareRoot for N where
N: PrivateSquareRoot,
[src]
N: PrivateSquareRoot,
type Output = <N as PrivateSquareRoot>::Output
The result of the integer square root.
impl<N> Logarithm2 for N where
N: PrivateLogarithm2,
[src]
N: PrivateLogarithm2,
type Output = <N as PrivateLogarithm2>::Output
The result of the integer binary logarithm.
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> From<T> for T
[src][+]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src][+]
U: Into<T>,
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,