Folia
← 返回头版

Deser:重新审视Rust序列化设计

Deser是一个Rust序列化库项目,由作者于2022年启动,代表了对现有Serde库的替代性探索1。该项目采用完全不同的架构来解决Serde的设计局限,核心差异在于Deser使用格式驱动的事件模型,而Serde采用类型驱动的访问者模式1。

Deser的设计目标针对Sentry Relay在处理大量不可信JSON时遇到的问题1。该库通过格式驱动而非类型驱动的反序列化方式、避免栈递归以及支持更多自描述格式,旨在改进Serde的已知问题1。具体而言,Deser解决了Serde的三个核心设计问题:统一的trait集合、固定数据模型信息损失、以及调用栈递归1。

在支持的格式方面,Deser覆盖了JSON、JSONC、JSON5、HJSON、YAML 1.1/1.2、TOML、XML、CBOR、MessagePack、CSV/TSV等多种格式1。在性能表现上存在权衡:JSON反序列化比serde_json慢10%,编译后二进制大小增加2.3倍1。


评论