Trait NatAdd

Source
pub trait NatAdd<B: Nat>: Nat {
    type Output: Nat;
}
Expand description

Nat addition. Used as Add<X, Y> or <X as NatAdd<Y>>::Output.

Required Associated Types§

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl NatAdd<Term> for Term

Source§

impl NatAdd<Term> for Undefined

Source§

impl NatAdd<Undefined> for Term

Source§

impl NatAdd<Undefined> for Undefined

Source§

impl<X> NatAdd<Term> for Zero<X>
where X: NatTriple + Nat,

Source§

impl<X> NatAdd<Zero<X>> for Term
where X: NatTriple + Nat,

Source§

impl<X, Y: Nat> NatAdd<One<Y>> for One<X>
where X: NatAdd<Y> + Nat,

Source§

type Output = Two<<X as NatAdd<Y>>::Output>

Source§

impl<X, Y: Nat> NatAdd<One<Y>> for Two<X>
where <X as NatAdd<Y>>::Output: NatSucc, X: NatAdd<Y> + Nat,

Source§

type Output = Zero<<<X as NatAdd<Y>>::Output as NatSucc>::Output>

Source§

impl<X, Y: Nat> NatAdd<One<Y>> for Zero<X>
where X: NatAdd<Y> + Nat,

Source§

type Output = One<<X as NatAdd<Y>>::Output>

Source§

impl<X, Y: Nat> NatAdd<Two<Y>> for One<X>
where <X as NatAdd<Y>>::Output: NatSucc, X: NatAdd<Y> + Nat,

Source§

type Output = Zero<<<X as NatAdd<Y>>::Output as NatSucc>::Output>

Source§

impl<X, Y: Nat> NatAdd<Two<Y>> for Two<X>
where <X as NatAdd<Y>>::Output: NatSucc, X: NatAdd<Y> + Nat,

Source§

type Output = One<<<X as NatAdd<Y>>::Output as NatSucc>::Output>

Source§

impl<X, Y: Nat> NatAdd<Two<Y>> for Zero<X>
where X: NatAdd<Y> + Nat,

Source§

type Output = Two<<X as NatAdd<Y>>::Output>

Source§

impl<X, Y: Nat> NatAdd<Zero<Y>> for One<X>
where X: NatAdd<Y> + Nat,

Source§

type Output = One<<X as NatAdd<Y>>::Output>

Source§

impl<X, Y: Nat> NatAdd<Zero<Y>> for Two<X>
where X: NatAdd<Y> + Nat,

Source§

type Output = Two<<X as NatAdd<Y>>::Output>

Source§

impl<X, Y: Nat> NatAdd<Zero<Y>> for Zero<X>
where <X as NatAdd<Y>>::Output: NatTriple, X: NatAdd<Y> + Nat,

Source§

type Output = <<X as NatAdd<Y>>::Output as NatTriple>::Output

Source§

impl<X: Nat> NatAdd<One<X>> for Term

Source§

impl<X: Nat> NatAdd<One<X>> for Undefined

Source§

impl<X: Nat> NatAdd<Term> for One<X>

Source§

impl<X: Nat> NatAdd<Term> for Two<X>

Source§

impl<X: Nat> NatAdd<Two<X>> for Term

Source§

impl<X: Nat> NatAdd<Two<X>> for Undefined

Source§

impl<X: Nat> NatAdd<Undefined> for One<X>

Source§

impl<X: Nat> NatAdd<Undefined> for Two<X>

Source§

impl<X: Nat> NatAdd<Undefined> for Zero<X>

Source§

impl<X: Nat> NatAdd<Zero<X>> for Undefined