Rust in Everything
基于 serde 1.0.229

设计取舍

前面五部分讲的是机制,每一章都顺带碰到了某个选择的代价:数字键在内部标签里读不出来、from_reader 不收 &str 字段、Serializer 做不成 dyn。这一部分只有一页,把这些代价按「serde 选了什么」归类,每条都指回有实验输出的那一页。

  1. 取舍汇总:六个选择,每个写清选了什么、代价是什么、证据在哪一页,以及什么时候另一种做法更好。代价都有数字:100 个 derive 类型经 serde_json 往返,release 编译从 0.31 秒变成 5.55 秒、二进制多出 544 032 字节;内部标签的缓冲让一次 from_str 从 5 次分配变成 7 次;借用让同一份输入从 5 次分配降到 1 次。
flowchart TB
  model["数据模型做中间层"] --> mono["泛型单态化"]
  model --> visitor["Visitor 回调"]
  visitor --> hint["deserialize_* 只是提示"]
  hint --> buffer["缓冲只剩 any"]
  visitor --> borrow["'de 借用输入"]
  model --> derive["编译期 derive"]

💬 关联讨论

发起讨论
加载中...