#mediator #net #heavily #message #pattern #sending #decoupling

brazier

Rust 中的中介实现,深受 .NET MediatR 包(https://github.com/jbogard/MediatR)的启发

2 个不稳定版本

0.1.0 2023年4月26日
0.0.1 2022年3月7日

#5#heavily

MIT 协议

8KB
116

Brazier

crates.io Rust

中介模式的实现。

Brazier 深受 .NET MediatR 包 的启发。它允许你解耦消息的发送和处理。

示例

use brazier::*;

pub struct Ping {}

impl Request<String> for Ping {}

#[derive(Debug)]
pub struct PingHandler;

#[async_trait::async_trait]
impl RequestHandler<Ping, String> for PingHandler {
    async fn handle(&mut self, _request: Ping) -> Result<String> {
        Ok(String::from("pong!"))
    }
}

#[tokio::main]
async fn main() -> Result<()> {
    let mut mediator = Mediator::new();
    mediator.register_handler(PingHandler);
    let result = mediator.send(Ping {}).await?;
    println!("{}", result);
    Ok(())
}

依赖项

~280–740KB
~18K SLoC