session_types 0.3.1

An implementation of session types in Rust
Documentation
extern crate session_types;

use session_types::*;

fn main() {
    let (tcs, rcs) = session_channel();
    let (tcu, rcu) = session_channel();

    let receivers = vec!(rcs, rcu);

    tcs.send("Hello, World from TCS!".to_string()).close();

    let (ready, mut rest) = hselect(receivers);

    let (to_close, s) = ready.recv();
    println!("Got a response: \"{}\"", s);
    to_close.close();

    tcu.send("Hello, World from TCU!".to_string()).close();

    rest
        .drain(..)
        .for_each(|r| {
            let (to_close, s) = r.recv();
            println!("Also got this: \"{}\"", s);
            to_close.close()
        });
}