Trait dialectic::types::Actionable[][src]

pub trait Actionable: IsSession {
    type NextAction: Actionable<NextAction = Self::NextAction>;
}

Each session type has a canonical Actionable::NextAction, the session type which corresponds to the next thing to do on the channel. For most types, this is the same as Self, but for control constructs like Loop, this corresponds to the inside of the Loop.

💡 In general, you should prefer the Session trait to the Actionable trait, since Session also ensures that a given type is a valid session type and provides other functionality.

Associated Types

type NextAction: Actionable<NextAction = Self::NextAction>[src]

The next actual channel action, which must be one of Send, Recv, Offer, Choose, Split, Call, or Done.

The constraints on this associated type ensure that it is idemopotent: the Action and of an Action is the same as that Action.

Loading content...

Implementors

impl Actionable for Done[src]

type NextAction = Self

impl<Choices: 'static> Actionable for Choose<Choices>[src]

type NextAction = Self

impl<Choices: 'static> Actionable for Offer<Choices>[src]

type NextAction = Self

impl<P> Actionable for Loop<P> where
    P: Subst<Loop<P>, Z>,
    P::Substituted: Actionable
[src]

impl<P: 'static, Q: 'static> Actionable for Call<P, Q>[src]

type NextAction = Self

impl<P: 'static, Q: 'static, R: 'static> Actionable for Split<P, Q, R>[src]

type NextAction = Self

impl<T: 'static, P: 'static> Actionable for Recv<T, P>[src]

type NextAction = Self

impl<T: 'static, P: 'static> Actionable for Send<T, P>[src]

type NextAction = Self

Loading content...