2个版本
0.1.1 | 2020年12月26日 |
---|---|
0.1.0 | 2020年6月28日 |
#23 in #iana
在cbor_enhanced中使用
33KB
871 行
Cbor增强库
受cbor_event启发,但利用生命周期来支持零拷贝反序列化。此外,支持多个iana标签,但需要通过功能标志来激活。
支持的标签
标签 | 描述 | 实现说明 |
---|---|---|
64-82 | 类型化数组 | 要么直接传输(勇敢者之路),要么安全解析(谨慎者之路) |
80, 81, 82, 85, 86 | 类型化浮点数组 | 要么直接传输(勇敢者之路),要么安全解析(谨慎者之路),f16只支持大端格式 |
260, 261 | 网络地址 | 直接反/序列化网络地址 |
0, 1, 1001 | 日期时间 | 直接反/序列化具有定义精度的chrono日期时间类型 |
2, 3 | BigInt, BigUint | 直接反/序列化num_bigint BigInt, BigUint |
37 | Uuid | 直接使用uuid crate反/序列化uuid |
35 | 正则表达式 | 直接使用regex crate反/序列化正则表达式 |
36 | MIME类型 | 直接使用mime crate反/序列化MIME类型 |
103 | 地理坐标 | 直接反/序列化地理坐标 |
限制
- 由于需要分配,不支持无限字符串和字节
- 不支持f16 LE类型化数组
功能
- 零拷贝反序列化
- 支持各种iana标签
- 自定义派生宏以序列化结构体
派生宏
使用cbor_protocol派生宏可以将结构体序列/反序列化为Map<uint,Value>,其中映射的键是属性ID。
#[derive(cbor_protocol, Clone, Eq, PartialEq, Debug)]
#[reserved(5, 6, 7)]
struct BlaStruct {
#[id(1)]
#[default("none")]
name: String,
#[id(2)]
value: i32,
}
许可
MIT和Apache
依赖关系
~1.5MB
~35K SLoC