bidirectional-channel

Async channel with request-response semantics

Crates.io version Download docs.rs docs
```rust use bidirectional_channel::{bounded}; use futures::join; let (requester, responder) = bounded(1); // A requesting task let requester = async { requester .send("hello") .await .expect("Responder or UnRespondedRequest was dropped") }; // A responding task. // This receives an &str, and returns its length let responder = async { let request = responder.recv().await.expect("Requester was dropped"); let len = request.len(); request.respond(len).unwrap() }; // Perform the exchange let (response, request) = join!(requester, responder); assert!(request.len() == response) ```