1 个不稳定版本
0.0.1 | 2024年8月4日 |
---|
#6 在 #deserializable
每月下载 107 次
9KB
140 行
Emmapack
E轻松
m可管理
m神奇
a抽象
packets
目标
我希望创建一个在任何项目中都易于使用的Rust库,以便在Rust应用程序之间简单地进行通信,无论是通过TCP套接字,也许使用SSL加密。基本上,在我想发送数据的方式上,我都希望能够做到。
概述
尽管这是一个非常简单的项目,但它的实现经过了大约5次迭代,但我很快意识到使用不同的包装对象非常繁琐,并且没有持续的维护是无法实现的。我只是想能够连接并发送数据,而不需要手动序列化数据包。
因此,我最终只创建了发送和读取数据包的特质,以及序列化和反序列化数据包。如果你想手动进行序列化,你可以这样做。如果不这样做,你可以派生serde Serializable
和 Deserializable
,并将提供一个实现。同样,只要你的类型实现了 Read
/Write
,或 AsyncRead
/AsyncWrite
,你将能够分别使用 .send_packet
&.read_packet
或 .send_packet_sync
&.read_packet_sync
。
请记住,你可以使用一个包含所有数据包类型的巨大枚举,这将使你的生活非常简单,因为你不必手动指定要反序列化到什么,这也很安全。
特性
- tokio
注意:默认启用tokio特性,如果因为它的运行时而不想分发tokio,请排除它,因为你想要使用不同的异步运行时,而不是因为你想使用不同的异步运行时,AsyncRead
和 AsyncWrite
特质来自tokio,目前无法使用不同的运行时。
示例
目前只有一个示例在 /examples/std_tcp_server.rs
中,但它很好地概述了如何使用库。
破坏性更改
我不打算支持协议版本之间的任何版本不匹配,然而,如果您想手动检查,可以使用emmapack::CURENT_PROTOCOL_VERSION
,任何非破坏性更改都不会增加此值,所以检查它是一个好主意。
依赖项
~2.5-4MB
~62K SLoC