Rust in Everything
基于 serde 1.0.229

在本站中

本站是开源的,仓库在 yuxuetr/rustineverything。这一部分的链接都指向提交 89a61b1(2026-10-23),行号以它为准。那个提交的 Cargo.lock 锁的是 serde 1.0.228、serde_json 1.0.150、serde_yaml 0.9.34+deprecated,比本卷早一个和四个补丁版本。本站没有手写任何 Serialize / Deserialize impl,全部是 derive;格式只有两种,JSON 和 YAML。

  1. 本站怎么用 serde:五个用到 serde 的地方,各自的类型怎么写、坏输入会得到什么报错,对照常见坑一节逐条判断会不会遇到。结论:untagged 只用在请求一侧(只派生了 Serialize),缓冲主线的坑都碰不到;真会遇到的是 missing field 和 invalid type,以及经 Value 写回 site.json 时键被重排、f32 多出尾数。
  2. 升级到 1.0.229 与 1.0.154:两个版本区间的每一条改动对本站的影响。本站的 serde_json 只开了 std 和 raw_value;生成代码只在 10 个外部标签 enum 的 visit_enum 里换了写法;五个实验程序在两套版本下只有一行输出不同:非法 UTF-8 的报错列号。
flowchart TB
  cfg["site.json"] --> json["serde_json"]
  llm["LLM 请求与响应"] --> json
  sfn["server 函数参数与返回"] --> json
  fm["前置元数据"] --> yaml["serde_yaml"]
  ax["axum Query 与 Form"] --> urlenc["serde_urlencoded"]
  json --> core["serde 1.0.228"]
  yaml --> core
  urlenc --> core

axum 卷的路由与静态资源和dioxus 生成的 Router、bytes 卷的server 函数的请求体从 HTTP 一侧讲过同样几条路径;这里只看 serde 那一段。

💬 关联讨论

发起讨论
加载中...