#channel #communication #tokio #async #send-receive #oneshot-channel

mias_channel

通过封装其他库支持双向通道的库

1 个不稳定版本

0.1.0 2024年7月8日

#724异步

Download history 130/week @ 2024-07-08

130 每月下载量

MIT 协议

9KB
118

米亚

MiasChannel 是一个用于创建通道的库,可以在任务之间发送和接收消息。

允许任务之间进行双向通信。(普通通道)并允许将单次响应发送回发送者。(响应者通道)

MiasChannel 目前只支持 tokio。通过将 tokio 通道封装在一个更用户友好的 API 中,以便进行双向通信。它的目标是未来通过使用启用不同通道实现的特性,轻松支持更多通道。

响应者通道

响应者通道是一个允许发送请求到接收者并将响应发送回发送者的通道。这在您想向任务发送请求并获取响应时很有用。响应者通道使用普通通道和单次通道实现。

它是基于普通通道和单次通道构建的。在将来,我想用更高效的实现来替换单次通道。

响应者通道示例

use mias_channel::responder_channel;

#[tokio::main]
async fn main() {
    let (tx, mut rx) = responder_channel::<i64, f64>(10);

    tokio::task::spawn(async move {
        while let Some((req, tx)) = rx.recv().await {
            tx.send(req as f64).unwrap();
        }
    });

    let res = tx.send(10).await;
}

依赖项

~2.3–4MB
~65K SLoC