1 个不稳定版本

0.0.1 2024年8月4日

#6#deserializable

Download history • Rust 包仓库 60/week @ 2024-07-29 • Rust 包仓库 47/week @ 2024-08-05 • Rust 包仓库

每月下载 107

MIT 许可证

9KB
140

Emmapack

E轻松
m可管理
m神奇
a抽象
packets

目标

我希望创建一个在任何项目中都易于使用的Rust库,以便在Rust应用程序之间简单地进行通信,无论是通过TCP套接字,也许使用SSL加密。基本上,在我想发送数据的方式上,我都希望能够做到。

概述

尽管这是一个非常简单的项目,但它的实现经过了大约5次迭代,但我很快意识到使用不同的包装对象非常繁琐,并且没有持续的维护是无法实现的。我只是想能够连接并发送数据,而不需要手动序列化数据包。

因此,我最终只创建了发送和读取数据包的特质,以及序列化和反序列化数据包。如果你想手动进行序列化,你可以这样做。如果不这样做,你可以派生serde SerializableDeserializable,并将提供一个实现。同样,只要你的类型实现了 Read/Write,或 AsyncRead/AsyncWrite,你将能够分别使用 .send_packet&.read_packet.send_packet_sync&.read_packet_sync

请记住,你可以使用一个包含所有数据包类型的巨大枚举,这将使你的生活非常简单,因为你不必手动指定要反序列化到什么,这也很安全。

特性

  • tokio

注意:默认启用tokio特性,如果因为它的运行时而不想分发tokio,请排除它,因为你想要使用不同的异步运行时,而不是因为你想使用不同的异步运行时,AsyncReadAsyncWrite 特质来自tokio,目前无法使用不同的运行时。

示例

目前只有一个示例在 /examples/std_tcp_server.rs 中,但它很好地概述了如何使用库。

破坏性更改

我不打算支持协议版本之间的任何版本不匹配,然而,如果您想手动检查,可以使用emmapack::CURENT_PROTOCOL_VERSION,任何非破坏性更改都不会增加此值,所以检查它是一个好主意。

依赖项

~2.5-4MB
~62K SLoC