2 个版本

0.1.1 2022年5月25日
0.1.0 2022年5月25日

#4 in #中介者

MIT/Apache

19KB
357 代码行(不含注释)

中午

Crates.io Crates.io docs.rs

强类型、编译时中介者。

文档

请参阅在 docs.rs 上的文档 https://docs.rs/noon

示例

use noon::mediator::{Mediate, MediatorBuilder};

// Create message types
struct NewUserRequest { id: i32 };
struct NewUserResponse { total_users: u32 };
struct SendUserEmail { id: i32, msg: String };
struct NewUserLogin { id: i32 };

async fn foo() {
    // Create a mediator
    let mediator = MediatorBuilder::new()
        .add_handler(|x: NewUserRequest| {
            // get total users
            NewUserResponse { total_users: 13 }
        })
        .add_async_handler(|x: SendUserEmail| async move {
            // send email
            true
        })
        .listen_for::<NewUserLogin>()
        .add_notification_receiver(|x: &NewUserLogin| {
            println!("User {} logged in!", x.id);
        })
        .build();
        
    mediator.notify(&NewUserLogin { id: 5 });
    let response = mediator.handle(NewUserRequest { id: 5 });
    println!("There are now {} users in the system", response.total_users);
}

let mediator = MediatorBuilder::new()
    .build();

许可证

中午根据 MIT 或 Apache-2.0 许可证双许可。您可以选择您喜欢的任何一种。

无运行时依赖