/// Send a value of type `T` from C to A. Always succeeds. Returns the continuation of the
/// `SessionMpst<S1, S2, R>`.
Send a value of type `T` from C to A. Always succeeds. Returns the continuation of the
`SessionMpst`.
Send a value of type ` T ` from C to A . Always succeeds . Returns the continuation of the ` SessionMpst ` .
pub fn send_mpst_c_to_a<T, S1, S2, R>(
    x: T,
    s: SessionMpst<Send<T, S1>, S2, RoleA<R>, RoleC<RoleEnd>>,
) -> SessionMpst<S1, S2, R, RoleC<RoleEnd>>
where
    T: marker::Send,
    S1: Session,
    S2: Session,
    R: Role,
{
    let new_session = send(x, s.session1);
    let new_queue = next_a(s.stack);
    SessionMpst {
        session1: new_session,
        session2: s.session2,
        stack: new_queue,
        name: s.name,
    }
}
pub fn send_mpst_c_to_a < T , S1 , S2 , R > ( x : T , s : SessionMpst < Send < T , S1 > , S2 , RoleA < R > , RoleC < RoleEnd > > , ) -> SessionMpst < S1 , S2 , R , RoleC < RoleEnd > > where T : marker :: Send , S1 : Session , S2 : Session , R : Role , { let new_session = send ( x , s . session1 ) ; let new_queue = next_a ( s . stack ) ; SessionMpst { session1 : new_session , session2 : s . session2 , stack : new_queue , name : s . name , } }
Send a value of type `T` from C to A.
Send a value of type ` T ` from C to A .
x
T
s
SessionMpst<Send<T, S1>, S2, RoleA<R>, RoleC<RoleEnd>>