Clarify the flatten specialization comment

This commit is contained in:
Josh Stone 2024-02-16 16:08:01 -08:00
parent 974bc455ee
commit c36ae932f9

View File

@ -917,10 +917,10 @@ fn advance_by_one<I>(n: NonZero<usize>, inner: I) -> Option<NonZero<usize>>
}
}
// Specialization: For iterators that never return more than one item, the `frontiter` and
// Specialization: When the inner iterator `U` never returns more than one item, the `frontiter` and
// `backiter` states are a waste, because they'll always have already consumed their item. So in
// this impl, we completely ignore them and just focus on `self.iter`, and we only call the inner
// `next()` one time.
// `U::next()` one time.
//
// It's mostly fine if we accidentally mix this with the more generic impls, e.g. by forgetting to
// specialize one of the methods. If the other impl did set the front or back, we wouldn't see it