///|
pub(open) trait UnsignedNum: FromInt + ToInt + ToByte + Add + Mul + Zero {
one() -> Self = _
}
///|
pub(open) trait NumType: UnsignedNum + Sub + Neg {}
///|
impl UnsignedNum with one() {
FromInt::from_int(1)
}
// ///|
// impl UnsignedNum with op_add(a, b) {
// FromInt::from_int(a.to_int() + b.to_int())
// }
// ///|
// impl UnsignedNum with op_mul(a, b) {
// FromInt::from_int(a.to_int() * b.to_int())
// }
// ///|
// impl UnsignedNum with lxor(a, b) { FromInt::from_int(a.to_int() ^ b.to_int()) }
// ///|
// impl NumType with op_sub(a, b) { FromInt::from_int(a.to_int() - b.to_int()) }
// ///|
// impl NumType with op_neg(a) { UnsignedNum::zero() - a }