Closed. This question is opinion-based。它当前不接受答案。
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
Rust中串行化到二进制的当前状态是什么?
我有一些要通过网络发送的大型(1-10MB)数据结构,并且不想将它们编码为JSON或十六进制(我发现了两个串行器)。
我已经找到 您可以将Cap'n proto实现用于Rust
https://github.com/dwrensha/capnproto-rust 并不是真正的序列化,更多的是结构的强制格式,然后无需任何转换即可通过网络发送 快速 您可以编写自己的Serializer和Deserializer。
您可以完全控制 格式
每个单个数据的运行时开销 您需要实现很多东西 您可以将您的结构
可能是最快的解决方案 您需要确保两侧程序的编译器完全相同,否则格式不匹配。 邪恶的人可能会向您发送错误的数据。当您回传 信息
数据结构中的引用将导致野生指针和未定义行为
不要使用引用
想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
5年前关闭。
Improve this question
Rust中串行化到二进制的当前状态是什么?
我有一些要通过网络发送的大型(1-10MB)数据结构,并且不想将它们编码为JSON或十六进制(我发现了两个串行器)。
我已经找到
#[repr(packed)]
。这是我应该使用的东西,还是便携式的东西? 最佳答案
#[repr(packed)]
仅会使您的数据变小。它不提供任何格式保证或序列化帮助。
您可以在这里选择(根据我的意见,从最好到最坏的解决方案排序):
每个单个数据的
transmute
到[u8]
并将其发送transmute
时,您会得到缓冲区溢出和数据结构中的