]> git.lizzy.rs Git - rust.git/commitdiff
Fix confusing doc for `scan`
authorSean Silva <chisophugis@gmail.com>
Sun, 25 Mar 2018 05:31:17 +0000 (22:31 -0700)
committerGitHub <noreply@github.com>
Sun, 25 Mar 2018 05:31:17 +0000 (22:31 -0700)
The comment "the value passed on to the next iteration" confused me since it sounded more like what Haskell's [scanl](http://hackage.haskell.org/package/base-4.11.0.0/docs/Prelude.html#v:scanl) does where the closure's return value serves as both the "yielded value" *and* the new value of the "state".

I tried changing the example to make it clear that the closure's return value is decoupled from the state argument.

src/libcore/iter/iterator.rs

index 2cfbc09229342b46c404134db13b77b1ca4e749d..31f77f92435d83ff72a9f04582bb6717f1c1bedd 100644 (file)
@@ -974,13 +974,13 @@ fn take(self, n: usize) -> Take<Self> where Self: Sized, {
     ///     // each iteration, we'll multiply the state by the element
     ///     *state = *state * x;
     ///
-    ///     // the value passed on to the next iteration
-    ///     Some(*state)
+    ///     // then, we'll yield the negation of the state
+    ///     Some(-*state)
     /// });
     ///
-    /// assert_eq!(iter.next(), Some(1));
-    /// assert_eq!(iter.next(), Some(2));
-    /// assert_eq!(iter.next(), Some(6));
+    /// assert_eq!(iter.next(), Some(-1));
+    /// assert_eq!(iter.next(), Some(-2));
+    /// assert_eq!(iter.next(), Some(-6));
     /// assert_eq!(iter.next(), None);
     /// ```
     #[inline]