目前在 Rust 中序列化为二进制的状态如何?
我有一些很大的(1-10MB)数据结构需要通过网络发送,并且不想将它们编码为 JSON 或十六进制(我找到的两个序列化器)。
我找到了 #[repr(packed)]
。我应该使用它吗?还是有更可移植的解决方案?
目前在 Rust 中序列化为二进制的状态如何?
我有一些很大的(1-10MB)数据结构需要通过网络发送,并且不想将它们编码为 JSON 或十六进制(我找到的两个序列化器)。
我找到了 #[repr(packed)]
。我应该使用它吗?还是有更可移植的解决方案?
#[repr(packed)]
只会让你的数据更小,但它不提供任何格式保证或序列化帮助。[u8]
并发送它
transmute
回来时,你会得到缓冲区溢出等问题transmute
不仅不能用于引用类型,还不能用于任何具有间接性的类型,例如 String
或 Vec<_>
。实际上,它只能用于由基本内置类型和这些类型的固定大小数组组成的结构体。 - Vladimir MatveevCopy
。我认为Copy + 'static
更合适,但是据我所知,*const
指针也是Copy
。 - Vladimir Matveev
io::{Read,Write}
特性以及rustc-serialize
的Encodable
和Decodable
特性。 - BurntSushi5