将一个结构体/枚举序列化为字节

6
我想将我的结构体序列化为二进制,并在管道的另一端进行反序列化。使用serialize包是否可以实现此目标?它似乎只支持JSON、hex和base64格式。

1
你能详细解释一下“二进制”的意思吗? - Chris Morgan
一个包含u8的集合,可以是向量或数组。我正在寻找类似于Java的ObjectOutput/InputStream的东西,本质上是将对象转换为字节。 - SBSTP
3
你可能想要查看 bincode - Renato Zannon
1
@SBSTP:那么,您不在意它的精确格式是什么吗? - Chris Morgan
@ChrisMorgan 不完全是。我想做的是通过其stdin向另一个进程发送消息。我想通过管道发送序列化的枚举/变体,并在接收端进行反序列化。基本上,使用UNIX管道进行IPC。 - SBSTP
……所以像JSON这样的东西,虽然可能不是最优的选择,但并非不可行。 - Chris Morgan
1个回答

2

我建议使用bincode

它提供了encode()decode()函数,可以操作任何具有RustcEncodableRustcDecodable特性的内容,通常可以使用#[derive],并返回Vec<u8>

它有一些小缺陷(例如isizeusize变为i64u64),但它们主要是为了提高可移植性,而且通常按照您的期望工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接