Conversation

imagine being the person responsible for designing the `core::iter` module, arguably the most impactful piece of engineering not bundled into the compiler somehow, and special-casing FusedIterator for "this does not resume" instead of ReIterator for "this does resume"
1
19
Replying to and
Iterator could guarantee None being returned after the first time it's returned. It would require adding extra state and checks to certain iterators and iterator adaptors. It wouldn't simply get optimized out and it would make them a bit more difficult to write correctly.
1
It was also meant to offer functionality available in Boost.Range and D ranges for double-ended (consume from both ends, reverse) and random access iterators. Random access doesn't fit well into the ownership/lifetime model and what they did with it wasn't what was intended.