I think it is important to think about the complete picture of how we want existential types to work. impl Trait in return is on stable as wel as the controversial impl Trait in argument position. The existential type rfc was accepted however the precice syntax remains an unresolved question.

Personally I think that existential types should use the same notation as impl Trait this way

type Name = impl Trait;

would be an existential type with name Name . The presice type would be infered similar to how let is infered today. There should always be a way to create the Name and from that we can infer the type. This would extend the way impl Trait currently works in a way that feels intuitive to me. It also has no need for more syntax to extend the already present template <T> syntax and the impl Trait syntax.

That is my opinion however I just want to start the discussion. I think that naming unable types is an important issue currently and I want to solve it in an coherent way that fitst in well with the rest of the language. If you feel like there is a case that is not solved by existential types this would be the place to bring it up.