5 个版本 (3 个重大更新)

0.4.0 2022 年 5 月 30 日
0.3.0 2021 年 11 月 9 日
0.2.1 2021 年 9 月 18 日
0.2.0 2021 年 4 月 8 日
0.1.0 2021 年 4 月 7 日

#1482开发工具

Download history • Rust 包仓库 109/week @ 2024-03-11 • Rust 包仓库 64/week @ 2024-03-18 • Rust 包仓库 94/week @ 2024-03-25 • Rust 包仓库 136/week @ 2024-04-01 • Rust 包仓库 56/week @ 2024-04-08 • Rust 包仓库 80/week @ 2024-04-15 • Rust 包仓库 88/week @ 2024-04-22 • Rust 包仓库 65/week @ 2024-04-29 • Rust 包仓库 51/week @ 2024-05-06 • Rust 包仓库 56/week @ 2024-05-13 • Rust 包仓库 72/week @ 2024-05-20 • Rust 包仓库 54/week @ 2024-05-27 • Rust 包仓库 77/week @ 2024-06-03 • Rust 包仓库 48/week @ 2024-06-10 • Rust 包仓库 63/week @ 2024-06-17 • Rust 包仓库 65/week @ 2024-06-24 • Rust 包仓库

每月 261 次下载

MIT 许可证

28KB
604 行代码(不包括注释)

async-prost

异步访问 prost 编码项目流,由 async-bincode 高度检查(复制)的。可用于与 tokio-tower 一起构建使用 prost 编码消息的 TCP 应用程序。

用法

#[derive(Clone, PartialEq, Message)]
pub struct Event {
    #[prost(bytes = "bytes", tag = "1")]
    pub id: Bytes,
    #[prost(bytes = "bytes", tag = "2")]
    pub data: Bytes,
}

let echo = TcpListener::bind("127.0.0.1:0").await.unwrap();
let addr = echo.local_addr().unwrap();

tokio::spawn(async move {
    let (stream, _) = echo.accept().await.unwrap();
    let mut stream = AsyncProstStream::<_, Event, Event, _>::from(stream).for_async();
    let (r, w) = stream.tcp_split();
    r.forward(w).await.unwrap();
});

let stream = TcpStream::connect(&addr).await.unwrap();
let mut client = AsyncProstStream::<_, Event, Event, _>::from(stream).for_async();
let event = Event {
    id: Bytes::from_static(b"1234"),
    data: Bytes::from_static(b"hello world"),
};
client.send(event.clone()).await.unwrap();
assert_eq!(client.next().await.unwrap().unwrap(), event);

let event = Event {
    id: Bytes::from_static(b"1235"),
    data: Bytes::from_static(b"goodbye world"),
};
client.send(event.clone()).await.unwrap();
assert_eq!(client.next().await.unwrap().unwrap(), event);
drop(client);

查看测试以获取更多示例。

享受这个crate带来的乐趣!

许可证

本项目根据 MIT 许可证分发。

有关详细信息,请参阅 LICENSE

版权所有 2021 Tyr Chen

依赖关系

~4–13MB
~152K SLoC