I was considering my suggestion to actually be the inverse of #11455. In that proposal, a function returning an unboxed `Iterator` would actually return the concrete type of whatever iterator the implementation returns. I was thinking of this as the opposite, the return type would define the anonymous type and the closure in the implementation would be forced to be that same type.

But it turns out that's rather unnecessary (and overly complicated, because the function doesn't know what upvars there will be so it can't actually fully define the type). Because treating it the exact same way that the `Iterator` case is works just as well. So forget I suggested anything.