| pub struct B0; | |
| pub struct B1; | |
| use std::ops::Shl; | |
| use std::ops::Sub; | |
| pub type Shleft<A, B> = <A as Shl<B>>::Output; | |
| pub type Sub1<A> = <A as Sub<B1>>::Output; | |
| pub struct UInt<U, B> { | |
| pub(crate) msb: U, | |
| pub(crate) lsb: B, | |
| } | |
| impl<U, B, Ur, Br> Shl<UInt<Ur, Br>> for UInt<U, B> | |
| where | |
| 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, rhs: UInt<Ur, Br>) -> Self::Output { | |
| unimplemented!() | |
| } | |
| } |