Earlier quoted context omitted.
Right but why should this matter at the type level? All you need to implement is next() and annotate it with documentation of the performance characteristics.
Yeah, this is a good question. Scott Myers has a talk where he pokes fun at the "guaranteed O(N log N)" sort of a linked list, where the guarantee is in number of comparisons and not the (very large) number of pointer chases. Why describe at the type level the difference between a backwards pointer chase and a pointer decrement? The hope is: if you know at compile time that your iterator is efficient in this way, you…
So long as it's safe I think it's on the designer to make sure it's efficient, and I suspect that's where the API has gravitated to.