Generalized opaque and existential type constraints

I agree! The "primary associated type" pitch has been updated to support more than one primary associated type.

Yes, the "result type parameter clause" idea is a more general version of opaque result types, i.e. "reverse generics". Arbitrary constraints are already possible for opaque types in parameter position by using explicit type parameters, so I intended for this discussion to be focused on opaque result types, specifically.

Personally, I think the level of generality before moving to explicit type parameters in angle brackets should be exactly what's in the primary associated type pitch. Of course, others might disagree :slightly_smiling_face: I explained why I think that's the case in my post here:

And John's post here explains the "grand vision" in more detail: