Deser:重新思考 Rust 序列化
Armin Ronacher(Sentry Relay 作者)重启并发布了 Rust 序列化库 Deser,作为 Serde 的架构级替代品。文章先用三个具体反例(高精度数字 map 冲突、flatten 破坏整型 key、adapter 不可组合)说明 Serde 的设计缺陷源于其"稳定保证",难以修复。 Deser 反转了 Serde 的方向:由格式侧向类型侧推送事件(sink/emitter 模型),嵌套状态放堆上而非调用栈,带来四大优势——无栈溢出、可挂起/可跨线程(tokio 友好)、可扩展数据模型(无 magic key 带内信号)、无损缓冲(error 保留位置)。 代价是动态分派+堆分配导致 JSON 读性能约慢 10%(浮动 33% 快~60% 慢),写性能不一,release 编译快 2.3 倍,且内部使用 unsafe。 格式覆盖 JSON/CBOR/MessagePack/YAML/TOML/XML/plist/CSV 等,并支持 XML namespace 解析、TOML datetime 扩展值等 Serde 体系做不到的事。 作者坦承最核心的"成本"是它不是 Serde,生态迁移几乎不可能。适合 Rust 序列化/基础设施方向读者深度了解。 






