bmrng 0.1.0

async MPSC request-response channel for Tokio
Documentation

bmrng 🪃

Crates.io Documentation Unit Tests codecov Dependency status

An async MPSC request-response channel for Tokio, where you can send a response to the sender. Inspired by crossbeam_requests.

Example

#[tokio::main]
async fn main() {
    let buffer_size = 100;
    let (tx, mut rx) = bmrng::channel::<i32, i32>(buffer_size);
    tokio::spawn(async move {
        match rx.recv().await {
            Ok((input, mut responder)) => {
                let res = responder.respond(input * input);
                assert_eq!(res.is_ok(), true);
            }
            Err(err) => {
                panic!(err);
            }
        }
    });
    let response = tx.send_receive(8).await;
    assert_eq!(response.unwrap(), 64);
}