Noir::RustStructFields
Wire names of a Rust source's named-field structs, the way serde and
Rocket's FromForm read them (deserr's #[deserr(rename_all = camelCase)]
is read like serde's): a container #[serde(rename_all = "…")]
recases every field, a field's #[serde(rename = "…")] or Rocket
#[field(name = "…")] replaces its name, and skip / skip_deserializing
fields are left out. A flatten field's own name is never on the wire:
its type's fields are, so its type text is kept in Shape#flattened for
the caller to resolve. Tuple and unit structs have no named fields and are
omitted, and so are structs of inline mods: a bare name in a file means
its top-level item, never mod legacy { struct X }.
No file I/O: callers hand over source text.
Constants
Class methods
{struct_name => Shape} of the top-level structs; first definition wins.