I think a lot of us have been independently coming up with this “enum impl Trait” idea from various angles. Unified Errors, a non-proliferation treaty, and extensible types and Allow return more then one error type from function? and pre-RFC: anonymous enums are some existing threads that all ended up discussing it.