serde
Installation
SKILL.md
serde, universal serialization
The Rust ecosystem's standard. Every non-trivial project pulls it in.
When to use
- JSON:
serde+serde_json. Derive:#[derive(Serialize, Deserialize)] - TOML/YAML: swap
serde_jsonfortoml/serde_yaml(orserde_yml) - Binary:
bincode,rmp-serde(MessagePack),postcard(no_std) - Field rename:
#[serde(rename = "fooBar")]· case style:#[serde(rename_all = "camelCase")] - Optional field:
Option<T>+#[serde(skip_serializing_if = "Option::is_none")] - Default on missing:
#[serde(default)]or#[serde(default = "my_fn")] - Enum repr:
#[serde(tag = "type")](internally tagged),#[serde(untagged)](try each variant) - Flatten nested:
#[serde(flatten)]for{ "inner": {...} }→ flat shape - Custom (de)serializer per field:
#[serde(deserialize_with = "path")]
Prerequisites
- cargo
- crates:
serde = { version = "1", features = ["derive"] }, plus a format crate