pub type U1 = UInt<UTerm, B1>;
Aliased Type§
struct U1 { /* private fields */ }
Implementations§
Trait Implementations§
source§impl<U> Add<B1> for UInt<U, B1>where
U: Add<B1> + Unsigned,
Add1<U>: Unsigned,
impl<U> Add<B1> for UInt<U, B1>where U: Add<B1> + Unsigned, Add1<U>: Unsigned,
UInt<U, B1> + B1 = UInt<U + B1, B0>
source§impl<Ul, Ur: Unsigned> Add<UInt<Ur, B0>> for UInt<Ul, B1>where
Ul: Add<Ur> + Unsigned,
impl<Ul, Ur: Unsigned> Add<UInt<Ur, B0>> for UInt<Ul, B1>where Ul: Add<Ur> + Unsigned,
UInt<Ul, B1> + UInt<Ur, B0> = UInt<Ul + Ur, B1>
source§impl<Ul, Ur: Unsigned> Add<UInt<Ur, B1>> for UInt<Ul, B1>where
Ul: Add<Ur> + Unsigned,
Sum<Ul, Ur>: Add<B1>,
impl<Ul, Ur: Unsigned> Add<UInt<Ur, B1>> for UInt<Ul, B1>where Ul: Add<Ur> + Unsigned, Sum<Ul, Ur>: Add<B1>,
UInt<Ul, B1> + UInt<Ur, B1> = UInt<(Ul + Ur) + B1, B0>
source§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,
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,
Anding unsigned integers.
We use our PrivateAnd
operator and then Trim
the output.
source§impl<Ul, Ur: Unsigned> BitOr<UInt<Ur, B0>> for UInt<Ul, B1>where
Ul: BitOr<Ur> + Unsigned,
impl<Ul, Ur: Unsigned> BitOr<UInt<Ur, B0>> for UInt<Ul, B1>where Ul: BitOr<Ur> + Unsigned,
UInt<Ul, B1> | UInt<Ur, B0> = UInt<Ul | Ur, B1>
source§impl<Ul, Ur: Unsigned> BitOr<UInt<Ur, B1>> for UInt<Ul, B1>where
Ul: BitOr<Ur> + Unsigned,
impl<Ul, Ur: Unsigned> BitOr<UInt<Ur, B1>> for UInt<Ul, B1>where Ul: BitOr<Ur> + Unsigned,
UInt<Ul, B1> | UInt<Ur, B1> = UInt<Ul | Ur, B1>
source§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,
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,
Xoring unsigned integers.
We use our PrivateXor
operator and then Trim
the output.
source§impl<Ul, Ur: Unsigned> Cmp<UInt<Ur, B0>> for UInt<Ul, B1>where
Ul: PrivateCmp<Ur, Greater> + Unsigned,
impl<Ul, Ur: Unsigned> Cmp<UInt<Ur, B0>> for UInt<Ul, B1>where Ul: PrivateCmp<Ur, Greater> + Unsigned,
UInt<Ul, B1>
cmp with UInt<Ur, B0>
: SoFar
is Greater
source§impl<Ul, Ur: Unsigned> Cmp<UInt<Ur, B1>> for UInt<Ul, B1>where
Ul: PrivateCmp<Ur, Equal> + Unsigned,
impl<Ul, Ur: Unsigned> Cmp<UInt<Ur, B1>> for UInt<Ul, B1>where Ul: PrivateCmp<Ur, Equal> + Unsigned,
UInt<Ul, B1>
cmp with UInt<Ur, B1>
: SoFar
is Equal
source§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>>>>,
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>>>>,
source§impl<Xp, Yp> Gcd<UInt<Yp, B0>> for UInt<Xp, B1>where
UInt<Xp, B1>: Gcd<Yp>,
UInt<Yp, B0>: NonZero,
impl<Xp, Yp> Gcd<UInt<Yp, B0>> for UInt<Xp, B1>where UInt<Xp, B1>: Gcd<Yp>, UInt<Yp, B0>: NonZero,
gcd(x, y) = gcd(x, y/2) if x odd and y even
source§impl<Xp, Yp> Gcd<UInt<Yp, B1>> for UInt<Xp, B1>where
UInt<Xp, B1>: Max<UInt<Yp, B1>> + Min<UInt<Yp, B1>>,
UInt<Yp, B1>: Max<UInt<Xp, B1>> + Min<UInt<Xp, B1>>,
Maximum<UInt<Xp, B1>, UInt<Yp, B1>>: Sub<Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>,
Diff<Maximum<UInt<Xp, B1>, UInt<Yp, B1>>, Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>: Gcd<Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>,
impl<Xp, Yp> Gcd<UInt<Yp, B1>> for UInt<Xp, B1>where UInt<Xp, B1>: Max<UInt<Yp, B1>> + Min<UInt<Yp, B1>>, UInt<Yp, B1>: Max<UInt<Xp, B1>> + Min<UInt<Xp, B1>>, Maximum<UInt<Xp, B1>, UInt<Yp, B1>>: Sub<Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>, Diff<Maximum<UInt<Xp, B1>, UInt<Yp, B1>>, Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>: Gcd<Minimum<UInt<Xp, B1>, UInt<Yp, B1>>>,
gcd(x, y) = gcd([max(x, y) - min(x, y)], min(x, y)) if both x and y odd
This will immediately invoke the case for x even and y odd because the difference of two odd numbers is an even number.
source§impl<Un, Bn, Ui, Bi> GetBit<UInt<Ui, Bi>> for UInt<Un, Bn>where
UInt<Ui, Bi>: Copy + Sub<B1>,
Un: GetBit<Sub1<UInt<Ui, Bi>>>,
impl<Un, Bn, Ui, Bi> GetBit<UInt<Ui, Bi>> for UInt<Un, Bn>where UInt<Ui, Bi>: Copy + Sub<B1>, Un: GetBit<Sub1<UInt<Ui, Bi>>>,
source§impl<U, B: Bit> Len for UInt<U, B>where
U: Len + Unsigned,
Length<U>: Add<B1>,
Add1<Length<U>>: Unsigned,
impl<U, B: Bit> Len for UInt<U, B>where U: Len + Unsigned, Length<U>: Add<B1>, Add1<Length<U>>: Unsigned,
Length of a bit is 1
source§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>>,
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>>,
source§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>>,
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>>,
source§impl<Ul, B: Bit, Ur: Unsigned> Mul<UInt<Ur, B>> for UInt<Ul, B1>where
Ul: Mul<UInt<Ur, B>> + Unsigned,
UInt<Prod<Ul, UInt<Ur, B>>, B0>: Add<UInt<Ur, B>>,
impl<Ul, B: Bit, Ur: Unsigned> Mul<UInt<Ur, B>> for UInt<Ul, B1>where Ul: Mul<UInt<Ur, B>> + Unsigned, UInt<Prod<Ul, UInt<Ur, B>>, B0>: Add<UInt<Ur, B>>,
UInt<Ul, B1> * UInt<Ur, B> = UInt<(Ul * UInt<Ur, B>), B0> + UInt<Ur, B>
source§impl<U: Ord, B: Ord> Ord for UInt<U, B>
impl<U: Ord, B: Ord> Ord for UInt<U, B>
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§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>,
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>,
source§impl<U: PartialEq, B: PartialEq> PartialEq<UInt<U, B>> for UInt<U, B>
impl<U: PartialEq, B: PartialEq> PartialEq<UInt<U, B>> for UInt<U, B>
source§impl<U: PartialOrd, B: PartialOrd> PartialOrd<UInt<U, B>> for UInt<U, B>
impl<U: PartialOrd, B: PartialOrd> PartialOrd<UInt<U, B>> for UInt<U, B>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§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>>>>,
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>>>>,
source§impl<U: Unsigned, B: Bit> Shl<B0> for UInt<U, B>
impl<U: Unsigned, B: Bit> Shl<B0> for UInt<U, B>
Shifting left any unsigned by a zero bit: U << B0 = U
source§impl<U: Unsigned, B: Bit> Shl<B1> for UInt<U, B>
impl<U: Unsigned, B: Bit> Shl<B1> for UInt<U, B>
Shifting left a UInt
by a one bit: UInt<U, B> << B1 = UInt<UInt<U, B>, B0>
source§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>>>,
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>>>,
Shifting left UInt
by UInt
: X << Y
= UInt(X, B0) << (Y - 1)
source§impl<U: Unsigned, B: Bit> Shl<UTerm> for UInt<U, B>
impl<U: Unsigned, B: Bit> Shl<UTerm> for UInt<U, B>
Shifting left UInt
by UTerm
: UInt<U, B> << UTerm = UInt<U, B>
source§impl<U: Unsigned, B: Bit> Shr<B0> for UInt<U, B>
impl<U: Unsigned, B: Bit> Shr<B0> for UInt<U, B>
Shifting right any unsigned by a zero bit: U >> B0 = U
source§impl<U: Unsigned, B: Bit> Shr<B1> for UInt<U, B>
impl<U: Unsigned, B: Bit> Shr<B1> for UInt<U, B>
Shifting right a UInt
by a 1 bit: UInt<U, B> >> B1 = U
source§impl<U, 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>>> + Unsigned,
impl<U, 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>>> + Unsigned,
Shifting right UInt
by UInt
: UInt(U, B) >> Y
= U >> (Y - 1)
source§impl<U: Unsigned, B: Bit> Shr<UTerm> for UInt<U, B>
impl<U: Unsigned, B: Bit> Shr<UTerm> for UInt<U, B>
Shifting right UInt
by UTerm
: UInt<U, B> >> UTerm = UInt<U, B>
source§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,
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,
Subtracting unsigned integers. We just do our PrivateSub
and then Trim
the output.