Trait dialectic::types::Lift[][src]

pub trait Lift<N: Unary, Level: Unary = Z>: IsSession {
    type Lifted: 'static;
}

For every “open” Continue (i.e. with an index larger than the number of Loops that contain it), increment its index by N.

This is used internally in the Then implementation for Done.

Associated Types

type Lifted: 'static[src]

The result of the lifting operation.

Loading content...

Implementors

impl<N: Unary, Level: Unary> Lift<N, Level> for Done[src]

type Lifted = Done

impl<N: Unary, Level: Unary, Choices> Lift<N, Level> for Choose<Choices> where
    Choices: Tuple + 'static,
    Choices::AsList: EachLift<N, Level>,
    <Choices::AsList as EachLift<N, Level>>::Lifted: List
[src]

type Lifted = Choose<<<Choices::AsList as EachLift<N, Level>>::Lifted as List>::AsTuple>

impl<N: Unary, Level: Unary, Choices> Lift<N, Level> for Offer<Choices> where
    Choices: Tuple + 'static,
    Choices::AsList: EachLift<N, Level>,
    <Choices::AsList as EachLift<N, Level>>::Lifted: List
[src]

type Lifted = Offer<<<Choices::AsList as EachLift<N, Level>>::Lifted as List>::AsTuple>

impl<N: Unary, Level: Unary, P> Lift<N, Level> for Loop<P> where
    P: Lift<N, S<Level>>, 
[src]

type Lifted = Loop<<P as Lift<N, S<Level>>>::Lifted>

impl<N: Unary, Level: Unary, P: Lift<N, Level>, Q: Lift<N, Level>> Lift<N, Level> for Call<P, Q>[src]

type Lifted = Call<P::Lifted, Q::Lifted>

impl<N: Unary, Level: Unary, P: Lift<N, Level>, Q: Lift<N, Level>, R: Lift<N, Level>> Lift<N, Level> for Split<P, Q, R>[src]

type Lifted = Split<P::Lifted, Q::Lifted, R::Lifted>

impl<N: Unary, M: Unary, P: Unary, Level: Unary, const I: usize, const J: usize> Lift<N, Level> for Continue<I> where
    Number<I>: ToUnary<AsUnary = M>,
    (M, N): Add<Result = P>,
    P: ToConstant<AsConstant = Number<J>>,
    (M, Level): Compare<Continue<I>, Continue<J>, Continue<J>>, 
[src]

type Lifted = <(M, Level) as Compare<Continue<I>, Continue<J>, Continue<J>>>::Result

impl<N: Unary, T: 'static, P: Lift<N, Level>, Level: Unary> Lift<N, Level> for Recv<T, P>[src]

type Lifted = Recv<T, P::Lifted>

impl<N: Unary, T: 'static, P: Lift<N, Level>, Level: Unary> Lift<N, Level> for Send<T, P>[src]

type Lifted = Send<T, P::Lifted>

Loading content...