#async-io #duplex #async-read #async-write #serde #connection #process

async-io-converse

可以使用serde兼容的类型,在任意的AsyncRead或AsyncWrite类型上执行会话

5个稳定版本

3.0.0 2023年1月29日
2.0.0 2023年1月23日
1.0.2 2023年1月2日
1.0.0 2022年12月30日

#800异步

每月 23次下载

MIT/Apache

31KB
587

async-io-converse 构建状态 最新版本

文档

async-io-typed crate的包装器,允许将serde兼容的类型发送到任何具有实现AsyncReadAsyncWrite类型的双工连接。async-io-converse添加了接收来自其他进程的回复的能力。

谁需要这个?

如果你有两个端点需要相互通信,并且

  • 你可以在它们之间建立某种双工I/O连接(例如TCP、命名管道或Unix套接字)
  • 你需要清晰的消息边界
  • 你不想遵循现有的线格式,如HTTP或protobufs。这个crate使用自定义格式。
  • 你希望发送的数据可以轻松地在Rust类型中表示,并且该类型实现了serde的DeserializeSerialize特性。

那么这个crate可能对你有帮助!

谁不需要这个?

如果端点在同一个进程中,那么你不应该使用这个crate。现有的异步mpsc通道可以更好地为你服务。许多crate提供了异步mpsc通道,包括futurestokio。选择你喜欢的实现。另外,如果你试图与没有Rust代码的进程接口,并且无法采用Rust部分,这个crate将弊大于利。考虑使用protobufs或JSON,如果Rust采用是阻碍的话。

为什么我不能直接使用async-io-typed

async-io-converse建立在async-io-typed之上,并提供了创建和发送回复的能力,然后对等方可以对其进行操作。async-io-converse还需要双工连接,而async-io-typed不需要。

贡献

欢迎投稿!请确保您的代码更改通过了单元测试。如果您正在修复一个错误,请添加单元测试,以免以后有人再次引入错误。

依赖项

~3.5-5MB
~92K SLoC