I think this is a very interesting idea and addresses many current pain points with enums, especially the problem where the variants don’t have a first-class type.
In regard to that, one thing I would find helpful is the ability to derive traits for “sum-enums” so long as that trait is implemented by all of the variants, e.g.:
Does this only refer to object-safe traits? I can not imagine how this would be possible for traits with associated types that are used anywhere but return position.
But also prominently, the std::str::FromString. Implementing this, even under the restriction that the Self::Input of all implementations is the same, would require choosing one canonical type whose implementation is chosen.