What does it mean if a generic structure is type-erased?
It means that at runtime you will not be able to see what object comes out of
the collection, as that information is removed from the lower-level code that is generated by the compiler.

In your specific instance, it would mean that at runtime an object of type AnyIterator&lt;Element&gt; will not be able to tell you what is the exact type of Element, unless ofcourse, you (implicitly/explicitly) cast it.