A library for deadlock-free session-typed communication in Rust.
```rust
extern crate rusty_variation;
use std::boxed::Box; use std::error::Error; use rusty_variation::*;
type CalcSrv = Recv
fn calcserver(s: CalcSrv) -> Result<(), Box
fn main() {
assert!(|| -> Result<(), Box
// Test the negation function.
{
let s: <CalcSrv as Session>::Dual = fork!(calc_server);
let s = select!(CalcOp::Neg, s)?;
let s = send(6, s)?;
let (y, s) = recv(s)?;
let End = select!(CalcOp::Done, s)?;
assert_eq!(-6, y);
}
// Test the addition function.
{
let s: <CalcSrv as Session>::Dual = fork!(calc_server);
let s = select!(CalcOp::Add, s)?;
let s = send(4, s)?;
let s = send(5, s)?;
let (z, s) = recv(s)?;
let End = select!(CalcOp::Done, s)?;
assert_eq!(9, z);
}
Ok(())
}().is_ok());
} ```