pub fn describe_columns(bytes: &[u8]) -> Vec<String>Expand description
Name the structural encoding of each column in a native wire message — the codec
explaining its own output, so “which dial won” is legible to a human. A single-column
message (int / float / string / bool list, a set, an int-keyed map) yields one name; a
record list (T_STRUCTS) yields one "field: encoding" per field. Empty for a shape it
does not model (compressed, JSON, a bare scalar, or a malformed frame) — the caller then
shows a generic label. It reuses the real decode dispatch to skip each column body, so it
can never drift from the format it reports on.