use pipecircuit::{Inline, InstalledPipe, Pipe, StateMachine, StepInputOf};
struct First;
struct Second;
impl Pipe for First { type In<'message> = Input; type Out<'message> = (); }
impl Pipe for Second { type In<'message> = Input; type Out<'message> = (); }
struct Implementation;
impl StateMachine for Implementation {}
struct Input;
impl StepInputOf<Implementation> for Input {
type Outcome = ();
fn step(self, _: &mut Implementation) {}
}
fn main() {
let transport = Inline::for_pipe::<First>(Implementation);
let mut installed = InstalledPipe::<Second, _>::new(transport);
installed.send(Input);
}