#type #async-channel #session #channel #protocols #async #serializer-deserializer

dialectic-tokio-serde

使用 Serde 序列化并通过 Tokio 传输构建 Dialectic 库的后端

1 个不稳定版本

0.1.0 2021 年 4 月 1 日

#39#async-channel


3 个库中使用

MIT 许可证

170KB
2K SLoC

Rust license: MIT crates.io docs.rs documentation

dialectic-tokio-serde 库提供了 Dialectic 的 TransmitterReceiver 类型,这些类型能够发送/接收任何 serde-Serialize/Deserialize 类型。这些类型对它们的传输是泛型的,并且需要三个额外的参数才能运行。

  • 异步能力的写入器/读取器类型,实现了 Tokio 的 AsyncWriteAsyncRead 特性。
  • 一个 Tokio 编码器,用于编码和解码写入到/从异步写入器/读取器读取的帧。
  • 一个 dialectic_tokio_serde::Serializer/Deserializer,用于将发送/接收的类型转换为/从线格式。 请注意!这并不是 serde 的 Serializer/Deserializer 特性,而是一组类似的特性,它们也定义了 Serializer/Deserializer 的可能输出/输入类型。

Dialectic 的 Tokio/serde 后端

目前,已实现两种格式作为姐妹库

  • dialectic-tokio-serde-bincode 库,当提供一个 AsyncWrite/AsyncRead 传输时,它能够将数据序列化到/从 bincode 格式,并使用 tokio_utilLengthDelimitedCodec 进行线编码。
  • dialectic-tokio-serde-json 库,当提供一个 AsyncWrite/AsyncRead 传输时,它能够将数据序列化到/从 JSON 格式,并使用 tokio_utilLinesCodec 进行线编码。

依赖关系

~7–14MB
~165K SLoC