3个不稳定版本
0.2.1 | 2020年7月19日 |
---|---|
0.2.0 | 2020年7月19日 |
0.1.0 | 2020年7月4日 |
#1890 in 异步
每月27次下载
15KB
246 行
Scambio
端点对之间安全高效的值交换。
文档可在以下地址获取
许可
本项目采用Blue Oak Model License Version 1.0.0许可。如果您有兴趣为此项目贡献力量,请先阅读CONTRIBUTING.md文件。
lib.rs
:
此crate允许两个端点之间的异步值交换。
从概念上讲,这类似于有两个容量为1的通道。
示例
创建一个客户端A和服务器B之间的交换,其中A向B发送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