Weaken guarantee around advancing underlying iterators in zip
The current guarantee is too strong as it would prevent adapters from exploiting knowledge about the iterator length and using counted loops for example because they would stop calling `next()` before it ever returned `None`. Additionally several nested zip iterators already fail to uphold this. This doesn't remove any of the specialization code that tries (and sometimes fails) to uphold the guarantee for `next()` because removing it would also affect `next_back()` in more surprising ways.
This commit is contained in:
parent
ae90dcf020
commit
2ff677dcbe
1 changed files with 4 additions and 2 deletions
|
|
@ -457,8 +457,10 @@ pub trait Iterator {
|
|||
/// In other words, it zips two iterators together, into a single one.
|
||||
///
|
||||
/// If either iterator returns [`None`], [`next`] from the zipped iterator
|
||||
/// will return [`None`]. If the first iterator returns [`None`], `zip` will
|
||||
/// short-circuit and `next` will not be called on the second iterator.
|
||||
/// will return [`None`].
|
||||
/// If the zipped iterator has no more elements to return then each further attempt to advance
|
||||
/// it will first try to advance the first iterator at most one time and if it still yielded an item
|
||||
/// try to advance the second iterator at most one time.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue