extern crate session_types; use session_types::*; fn client(c: Chan<(), Send<(), Eps>>) { c.send(()).close(); } fn server(c: Chan<(), Recv<(), Eps>>) { let (c, ()) = c.recv(); c.close(); } fn drop_client(_c: Chan<(), Send<(), Eps>>) {} fn drop_server(_c: Chan<(), Recv<(), Eps>>) {} #[test] fn server_client_works() { connect(server, client); } #[test] #[should_panic] fn client_incomplete_panics() { connect(server, drop_client); } #[test] #[should_panic] fn server_incomplete_panics() { connect(drop_server, client); } #[test] #[should_panic] fn server_client_incomplete_panics() { connect(drop_server, drop_client); }