#serialization #binary #binary-encoding #encode #binary-format #deserialize

fourleaf

一种简单的基于标签的二进制序列化格式

2个版本

使用旧的Rust 2015

0.1.1 2017年2月27日
0.1.0 2017年1月25日

#2079编码

37 每月下载量
用于 ensync

MIT/Apache

270KB
5K SLoC

fourleaf

简介

fourleaf是一个简单的二进制序列化格式和库,用于高效生成可移植的、向前和向后兼容的消息。

特点

  • 字段通过显式的数字标签进行标识,类似于thrift或protobuf。这避免了命名字段的空间开销(如在CBOR或JSON中),同时使得推理更改的兼容性变得可能(与简单地按顺序序列化字段不同)。

  • 序列化建立在普通的Rust类型之上(如serde中,但与protobuf不同),因此正常Rust与序列化结构之间没有“阻抗不匹配”。

  • 完全支持元组、命名结构体、元组结构体、枚举(包括具有元组/命名字段的变体)。

  • 零拷贝反序列化。也就是说,您可以设计您的结构,使得反序列化的基于字节数组的项指向原始数组。

  • 可以保存不理解的字段,并在重新编写结构时保留它们。

  • 可以将消息迭代写入流,而不必了解流中后续的内容。同样,值也可以迭代地流进。

  • 可以使用填充和异常元素在流协议中用于带内信号。

不支持的特性

  • 这不是基于serde构建的,因此您不会免费获得与现有serde代码的互操作性。

有关更多信息,请参阅文档

状态

大部分稳定。

  • 底层二进制格式不会改变。

  • 内置序列化器(例如,VecHashMap等)除非发现一些基本的缺陷,否则不太可能改变。

  • 在1.0之前,API可能会发生重大更改。

变更日志

0.1.1:解决rustc nightly中的类型推断问题。

贡献

除非您明确声明,否则您提交给包括在您的工作中的任何贡献,根据Apache-2.0许可证定义,将作为上述双重许可证,不附加任何其他条款或条件。

依赖项