Generate a match arm for binding -> core direction.
Binding enums are always unit-variant-only. Core enums may have data variants.
For data variants: BindingEnum::Variant => CoreEnum::Variant(Default::default(), ...)
Check if an enum can have From/Into safely generated (both directions).
All enums are allowed — data variants use Default::default() for non-simple fields
in the binding→core direction.
Build the set of types that can have binding→core From safely generated.
Strict: excludes types with sanitized fields (lossy conversion).
This is transitive: a type is convertible only if all its Named field types
are also convertible (or are enums with From/Into support).
Build the set of types that can have core→binding From safely generated.
More permissive than binding→core: allows sanitized fields (uses format!(“{:?}”))
and accepts data enums (data discarded with .. in match arms).
Generate a match arm for core -> binding direction.
When the binding also has data variants, destructure and forward fields.
When the binding is unit-variant-only, discard core data with ...