You're right—I should have also added reordering cases already has situations today which would result in behavioral changes would change that are similar to what would happen with Comparable
synthesis, but for structs, this would be introducing an entirely new source order sensitivity that does not manifest in public API or behavior:
- Reordering the cases of an enum with synthesized
CaseIterable
changes its iteration order - Reordering the cases of an integer raw value enum where values are inferred changes the raw value
Taken together with the source/API compatibility constraints, I think that's a reasonable guide to omit struct synthesis, at least for now.