5个版本

0.1.4 2023年7月4日
0.1.3 2023年1月12日
0.1.2 2022年12月5日
0.1.1 2022年11月30日
0.1.0 2022年4月28日

#673 in 编码

Download history 33/week @ 2024-03-13 121/week @ 2024-03-20 110/week @ 2024-03-27 40/week @ 2024-04-03 32/week @ 2024-04-10 23/week @ 2024-04-17 52/week @ 2024-04-24 36/week @ 2024-05-01 33/week @ 2024-05-08 51/week @ 2024-05-15 45/week @ 2024-05-22 40/week @ 2024-05-29 39/week @ 2024-06-05 47/week @ 2024-06-12 44/week @ 2024-06-19 57/week @ 2024-06-26

每月190次下载
11 个crate中(4个直接)使用

EUPL-1.2

80KB
2K SLoC

CESRox

CESRox是CESR协议的Rust实现。

协议概述

可组合事件流表示(CESR)是一种具有文本-二进制组合属性的双重文本-二进制编码格式。这种组合属性使得在文本域和二进制域之间可以大规模地转换组合的基本元素,同时保持单个基本元素的分离性。这使它在文本域中具有方便的可用性,在二进制域中具有紧凑的传输。CESR基本元素是自定界的。CESR支持自定界的分组代码,这使文本和二进制域中的流处理和流水线成为可能。CESR支持通用数据类型以及一组加密材料的可组合文本-二进制编码。流行的加密材料套件具有紧凑的编码以提高效率,而较不紧凑的编码提供了足够的扩展性以支持所有可预见类型。CESR流还支持交错JSON、CBOR和MGPK序列化。CESR是一种通用编码,它通过可组合转换独特地提供了文本和二进制域的双重表示。

实现假设、权衡和限制

  • 它将CESR流反序列化为带有附件的有效负载,并将带有附件的有效负载序列化为CESR流;
  • 它对任何数据模型都是不可知的,因为它要求消费者提供已表示为CESR兼容表示之一(JSON、MGPK、CBOR)的有效负载 – 因此消费者数据模型保留在消费者代码库中(并且消费者决定使用哪种表示);
  • 它旨在通过FFI层暴露给其他编程语言。因此,它严重依赖于原语而不是复杂对象结构 – 原语可以实现几乎无缝的集成,而复杂对象结构则不行。这也是对消费者(反)序列化强加在消费者方面的直接后果;
  • 它需要POSIX兼容的操作系统,但对于非POSIX支持,可以选择no-std方法(欢迎PR)。
  • 由于解析CESR流本质上是计算密集型而不是I/O密集型,因此它有意不提供任何Async兼容功能。

用法

有关CESRox用法示例,请参阅集成测试

依赖项

~3.5–4.5MB
~89K SLoC