fx-rs 0.1.1-dev0

Algebraic Effects inspired by Kyo and Fx.go
Documentation
use crate::Fx;

#[test]
fn eval_immediate() {
    let e = Fx::immediate((), 22);
    let v = e.eval();
    assert_eq!(v, 22)
}

#[test]
fn eval_pending() {
    let e = Fx::pending(|u: ()| Fx::immediate(u, 22));
    let v = e.eval();
    assert_eq!(v, 22)
}

#[test]
fn adapt_contramap() {
    let e = Fx::pending(|i: u8| Fx::immediate(i, i * 10));
    let e = e.adapt(|_: ()| 2, |u, _, v| Fx::immediate(u, v));
    let v = e.eval();
    assert_eq!(v, 20)
}