A snapshot of an MSF catalog: the tracks currently in a broadcast.
This is a version-agnostic view. The on-wire details (the catalog version
field, and draft-01’s initDataList/initRef indirection for initialization
data) are handled during (de)serialization, so callers only ever see
resolved tracks with inline Track::init_data. Parsing accepts both
draft-00 and draft-01 catalogs; serializing always emits the newest draft.
Marked #[non_exhaustive] because the MSF drafts continue to grow optional
root fields. External callers build a catalog with Catalog::new or
Catalog::default and then assign whichever optional fields they need.
Non-exhaustive structs could have additional fields added in future. Therefore, non-exhaustive structs cannot be constructed in external crates using the traditional Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.