@@ -1657,11 +1657,6 @@ pub const trait Iterator {
16571657 /// items yielded by `self`). If 𝑘 is less than `N`, this method yields an
16581658 /// empty iterator.
16591659 ///
1660- /// The returned iterator implements [`FusedIterator`], because once `self`
1661- /// returns `None`, even if it returns a `Some(T)` again in the next iterations,
1662- /// we cannot put it into a contiguous array buffer, and thus the returned iterator
1663- /// should be fused.
1664- ///
16651660 /// [`slice::windows()`]: slice::windows
16661661 /// [`FusedIterator`]: crate::iter::FusedIterator
16671662 ///
@@ -1722,7 +1717,7 @@ pub const trait Iterator {
17221717 /// assert_eq!(it.next(), None);
17231718 /// ```
17241719 ///
1725- /// For non-fused iterators, they are fused after `map_windows` .
1720+ /// For non-fused iterators, the window is reset after `None` is yielded .
17261721 ///
17271722 /// ```
17281723 /// #![feature(iter_map_windows)]
@@ -1739,44 +1734,47 @@ pub const trait Iterator {
17391734 /// let val = self.state;
17401735 /// self.state = self.state + 1;
17411736 ///
1742- /// // yields `0..5` first, then only even numbers since `6..`.
1743- /// if val < 5 || val % 2 == 0 {
1744- /// Some(val)
1745- /// } else {
1737+ /// // Skip every 5th number
1738+ /// if (val + 1) % 5 == 0 {
17461739 /// None
1740+ /// } else {
1741+ /// Some(val)
17471742 /// }
17481743 /// }
17491744 /// }
17501745 ///
17511746 ///
17521747 /// let mut iter = NonFusedIterator::default();
17531748 ///
1754- /// // yields 0..5 first.
17551749 /// assert_eq!(iter.next(), Some(0));
17561750 /// assert_eq!(iter.next(), Some(1));
17571751 /// assert_eq!(iter.next(), Some(2));
17581752 /// assert_eq!(iter.next(), Some(3));
1759- /// assert_eq!(iter.next(), Some(4));
1760- /// // then we can see our iterator going back and forth
17611753 /// assert_eq!(iter.next(), None);
1754+ /// assert_eq!(iter.next(), Some(5));
17621755 /// assert_eq!(iter.next(), Some(6));
1763- /// assert_eq!(iter.next(), None );
1756+ /// assert_eq!(iter.next(), Some(7) );
17641757 /// assert_eq!(iter.next(), Some(8));
17651758 /// assert_eq!(iter.next(), None);
1759+ /// assert_eq!(iter.next(), Some(10));
1760+ /// assert_eq!(iter.next(), Some(11));
17661761 ///
1767- /// // however, with `.map_windows()`, it is fused.
17681762 /// let mut iter = NonFusedIterator::default()
17691763 /// .map_windows(|arr: &[_; 2]| *arr);
17701764 ///
17711765 /// assert_eq!(iter.next(), Some([0, 1]));
17721766 /// assert_eq!(iter.next(), Some([1, 2]));
17731767 /// assert_eq!(iter.next(), Some([2, 3]));
1774- /// assert_eq!(iter.next(), Some([3, 4]));
17751768 /// assert_eq!(iter.next(), None);
17761769 ///
1777- /// // it will always return `None` after the first time.
1778- /// assert_eq!(iter.next(), None);
1770+ /// assert_eq!(iter.next(), Some([5, 6]));
1771+ /// assert_eq!(iter.next(), Some([6, 7]));
1772+ /// assert_eq!(iter.next(), Some([7, 8]));
17791773 /// assert_eq!(iter.next(), None);
1774+ ///
1775+ /// assert_eq!(iter.next(), Some([10, 11]));
1776+ /// assert_eq!(iter.next(), Some([11, 12]));
1777+ /// assert_eq!(iter.next(), Some([12, 13]));
17801778 /// assert_eq!(iter.next(), None);
17811779 /// ```
17821780 #[ inline]
0 commit comments