Rollup merge of #33265 - tshepang:peek, r=steveklabnik

doc: some `peek` improvements
This commit is contained in:
Steve Klabnik 2016-07-06 19:13:05 -04:00 committed by GitHub
commit eef10e6cfc

View File

@ -1198,17 +1198,15 @@ impl<I: ExactSizeIterator> ExactSizeIterator for Peekable<I> {}
impl<I: Iterator> Peekable<I> { impl<I: Iterator> Peekable<I> {
/// Returns a reference to the next() value without advancing the iterator. /// Returns a reference to the next() value without advancing the iterator.
/// ///
/// The `peek()` method will return the value that a call to [`next()`] would /// Like [`next()`], if there is a value, it is wrapped in a `Some(T)`.
/// return, but does not advance the iterator. Like [`next()`], if there is /// But if the iteration is over, `None` is returned.
/// a value, it's wrapped in a `Some(T)`, but if the iterator is over, it
/// will return `None`.
/// ///
/// [`next()`]: trait.Iterator.html#tymethod.next /// [`next()`]: trait.Iterator.html#tymethod.next
/// ///
/// Because `peek()` returns reference, and many iterators iterate over /// Because `peek()` returns a reference, and many iterators iterate over
/// references, this leads to a possibly confusing situation where the /// references, there can be a possibly confusing situation where the
/// return value is a double reference. You can see this effect in the /// return value is a double reference. You can see this effect in the
/// examples below, with `&&i32`. /// examples below.
/// ///
/// # Examples /// # Examples
/// ///
@ -1225,13 +1223,13 @@ impl<I: Iterator> Peekable<I> {
/// ///
/// assert_eq!(iter.next(), Some(&2)); /// assert_eq!(iter.next(), Some(&2));
/// ///
/// // we can peek() multiple times, the iterator won't advance /// // The iterator does not advance even if we `peek` multiple times
/// assert_eq!(iter.peek(), Some(&&3)); /// assert_eq!(iter.peek(), Some(&&3));
/// assert_eq!(iter.peek(), Some(&&3)); /// assert_eq!(iter.peek(), Some(&&3));
/// ///
/// assert_eq!(iter.next(), Some(&3)); /// assert_eq!(iter.next(), Some(&3));
/// ///
/// // after the iterator is finished, so is peek() /// // After the iterator is finished, so is `peek()`
/// assert_eq!(iter.peek(), None); /// assert_eq!(iter.peek(), None);
/// assert_eq!(iter.next(), None); /// assert_eq!(iter.next(), None);
/// ``` /// ```
@ -1263,10 +1261,10 @@ impl<I: Iterator> Peekable<I> {
/// ///
/// let mut iter = xs.iter().peekable(); /// let mut iter = xs.iter().peekable();
/// ///
/// // there are still elements to iterate over /// // There are still elements to iterate over
/// assert_eq!(iter.is_empty(), false); /// assert_eq!(iter.is_empty(), false);
/// ///
/// // let's consume the iterator /// // Let's consume the iterator
/// iter.next(); /// iter.next();
/// iter.next(); /// iter.next();
/// iter.next(); /// iter.next();