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!() | |
} | |
} |