#middleware #events #monads #dispatch #foo-bar

eventroute

类型安全的函数式中间件事件分发

1 个不稳定版本

0.1.0 2022年7月28日

#10 in #monad

MIT 许可证

5KB
96

eventroute

latest version documentation license

eventroute 使用泛型而不是特定的事件名称或标识符,提供了一种类型安全的中间件路由。中间件可以直接传递给 .on,而 .emit 提供了一种简单的机制来分发到回调中间件。

示例

pub struct Test {
    foo: i32,
}

pub struct Foo {
    bar: i32,
}

#[test]
fn test_router() {
    let mut router = eventroute::new();
    router.on(|i: i32| {
        println!("{}", i * 10);
    });
    router.on(|(a, b): (i32, i32)| {
        println!("{}", a * b);
    });
    router.on(|test: Test| {
        println!("test {}", test.foo);
    });
    router.on(|foo: Foo| {
        println!("bar {}", foo.bar);
    });

    router.emit(3);
    router.emit((2, 3));
    router.emit(Foo { bar: 232 });
    router.emit(Test { foo: 232 });
}

无运行时依赖