- serde-compatible?
- Yes — every struct has `#[derive(Serialize, Deserialize, Debug)]`. Field names with non-Rust characters get `#[serde(rename = "original")]` attributes.
- How are optional fields handled?
- Fields missing from any sample record become `Option<T>`. Required fields use `T` directly. Audit the output when your sample set is small.
- What about nested structs?
- Each nested JSON object becomes its own struct. Names are derived from the parent field name; PascalCase is applied.
- Does it support enum discrimination?
- Not automatically. For JSON that uses a `type` discriminator, manually add a `#[serde(tag = "type")]` enum around the generated variants.