3个不稳定版本

0.2.1 2020年7月19日
0.2.0 2020年7月19日
0.1.0 2020年7月4日

#1890 in 异步

每月27次下载

BlueOak-1.0.0

15KB
246

Scambio

端点对之间安全高效的值交换。

文档可在以下地址获取

许可

本项目采用Blue Oak Model License Version 1.0.0许可。如果您有兴趣为此项目贡献力量,请先阅读CONTRIBUTING.md文件。


lib.rs:

此crate允许两个端点之间的异步值交换。

从概念上讲,这类似于有两个容量为1的通道。

示例

创建一个客户端A和服务器B之间的交换,其中AB发送u32值,B通过发送一个bool值来确认每个值,如果值是奇数则为true,否则为false

let (mut a, mut b) = scambio::exchange();

let client = async move {
    for i in 0 .. 10u32 {
        assert!(a.send(i).await.is_ok());
        assert_eq!(Some(i % 2 == 1), a.receive().await)
    }
};

let server = async move {
    while let Some(i) = b.receive().await {
        assert!(b.send(i % 2 == 1).await.is_ok())
    }
};

assert_eq!(futures::join!(client, server), ((), ()));

依赖项

~480–790KB
~12K SLoC