7个版本
0.3.3 | 2024年8月17日 |
---|---|
0.3.2 | 2023年11月25日 |
0.3.1 | 2023年4月9日 |
0.3.0 | 2023年1月31日 |
0.2.5 |
|
#258 在 编码
26,702 每月下载量
在 166 个crate中使用 (10 直接使用)
110KB
3K SLoC
CBOR 0x(4+4)9 0x49
“紧凑二进制对象表示(CBOR)是一种数据格式,其设计目标包括极小的代码尺寸、相对较小的消息尺寸以及在无需版本协商的情况下进行扩展的可能性。”
参见 rfc8949
兼容性
core
模块应与 rfc8949 完全兼容,但本crate可能不会实现一些扩展,例如 datetime
、bignum
、bigfloat
。
serde
模块定义了如何在CBOR中表示Rust类型,这不是任何标准,因此不同的crate可能会有不一致的行为。
本库旨在与 serde_cbor
兼容,但不会遵循 serde_cbor
的一些不合理设计。
cbor4ii
将单元类型表示为空数组,而不是null。这避免了serde_cbor
无法区分None
和Some(())
的问题。参见 https://github.com/pyfisch/cbor/issues/185cbor4ii
不支持打包模式,将来可能实现,但可能与serde_cbor
不兼容。如果您需要打包模式,应查看bincode
。
性能
在实现中并未针对性能进行特定优化,但基准测试显示其性能略优于 serde_cbor
。
并且它支持零拷贝反序列化和 serde 的 deserialize_ignored_any
,因此在某些场景中可能比不支持此类功能的crate表现更好。
鲁棒性
解码部分已进行模糊测试,在解码过程中不应崩溃或恐慌。
serde模块的解码具有深度限制,以防止由特别构造的输入引起的栈溢出或OOM。如果您想关闭深度检查或调整参数,可以自己实现dec::Read
特质。
许可证
本项目采用MIT许可证。
依赖项
约230KB