Trait type_level_logic::strong::ternary::NatSub
[−]
pub trait NatSub<B: Nat>: Nat { type Output: Nat; }
Nat
subtraction. Used as Sub<X, Y>
or <X as NatSub<Y>>::Output
. Undefined for any
inputs which would result in an output less than zero. If you need signed numbers, you
should probably be using a signed representation, such as balanced ternary.
Associated Types
Implementors
impl NatSub<Term> for Term
impl NatSub<Term> for Undefined
impl NatSub<Undefined> for Term
impl NatSub<Undefined> for Undefined
impl<X: Nat> NatSub<Zero<X>> for Term where
Term: NatSub<X>,impl<X: Nat> NatSub<One<X>> for Term
impl<X: Nat> NatSub<Two<X>> for Term
impl<X: Nat> NatSub<Term> for Zero<X> where
X: NatTriple,impl<X: Nat> NatSub<Term> for One<X>
impl<X: Nat> NatSub<Term> for Two<X>
impl<X: Nat> NatSub<Zero<X>> for Undefined
impl<X: Nat> NatSub<One<X>> for Undefined
impl<X: Nat> NatSub<Two<X>> for Undefined
impl<X: Nat> NatSub<Undefined> for Zero<X>
impl<X: Nat> NatSub<Undefined> for One<X>
impl<X: Nat> NatSub<Undefined> for Two<X>
impl<X: Nat, Y: Nat> NatSub<Zero<Y>> for Zero<X> where
<X as NatSub<Y>>::Output: NatTriple,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<One<Y>> for Zero<X> where
<<X as NatSub<Y>>::Output as NatPred>::Output: NatTriplePlusTwo,
<X as NatSub<Y>>::Output: NatPred,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<Two<Y>> for Zero<X> where
<<X as NatSub<Y>>::Output as NatPred>::Output: NatTriplePlusOne,
<X as NatSub<Y>>::Output: NatPred,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<Zero<Y>> for One<X> where
<X as NatSub<Y>>::Output: NatTriplePlusOne,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<One<Y>> for One<X> where
<X as NatSub<Y>>::Output: NatTriple,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<Two<Y>> for One<X> where
<<X as NatSub<Y>>::Output as NatPred>::Output: NatTriplePlusTwo,
<X as NatSub<Y>>::Output: NatPred,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<Zero<Y>> for Two<X> where
<X as NatSub<Y>>::Output: NatTriplePlusTwo,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<One<Y>> for Two<X> where
<X as NatSub<Y>>::Output: NatTriplePlusOne,
X: NatSub<Y>,impl<X: Nat, Y: Nat> NatSub<Two<Y>> for Two<X> where
<X as NatSub<Y>>::Output: NatTriple,
X: NatSub<Y>,