2个不稳定版本

0.3.0 2021年12月11日
0.2.0 2021年1月2日

#1918 in 编码

MIT 许可证

62KB
1.5K SLoC

cbor-tools 是一个用于操作CBOR编码数据的工具集。

CBOR 是一种在RFC7049中描述的数据序列化格式。CBOR是一种对二进制友好的自描述数据编码,它内置了以下类型:

  • 整数和浮点数
  • 数组和映射
  • 任意长度的UTF-8文本字符串
  • 任意长度的字节数组

其他crate(例如serde_cbor)提供了原生Rust数据结构的serde序列化和反序列化。

这个crate提供了构建和解析CBOR的工具,具有细粒度控制,包括:

  • 无限长度编码
  • 非规范整数编码
  • 标记类型
  • 可能在严格模式解码器中失败的序列
  • 格式错误的序列(可能是用于测试解码器)
  • 显示低级CBOR编码数据

要将数据编码为CBOR,创建一个或多个CborType值,然后调用它们上的encode()

use cbor_tools::{CborType, Encode};

let my_data = vec![1, 2, 3];
let cbor_tree = CborType::from(my_data);
let cbor_bytes = cbor_tree.encode();
// cbor_bytes is a Vec<u8>

对于许多简单类型,存在一个可用的From<T>实现。可以通过手动构建其他数据结构,如下面的异构数组:

use cbor_tools::{CborType, Encode};

// An array containing a string and an integer.
let list = vec![
    CborType::from("abc"),
    CborType::from(123),
];
let cbor_tree = CborType::from(list);
let cbor_bytes = cbor_tree.encode();
// cbor_bytes is a Vec<u8>

可以使用Decode特质来执行任意CBOR数据的解码。

要检查CBOR编码数据的底层细节,请使用DecodeSymbolic特质,它可选地实现了Display,如果启用了display功能。

依赖项

~2.5MB
~49K SLoC