about summary refs log tree commit diff
diff options
context:
space:
mode:
authorNick Babcock <nbabcock19@hotmail.com>2018-05-28 18:50:16 -0500
committerNick Babcock <nbabcock19@hotmail.com>2018-05-28 18:50:16 -0500
commit18cf47bc7de897168d19806e13467d6c8168a581 (patch)
treecc980b3ae5d08f7f4db4e61f227cb25125510c3a
parent2612bbcba08dd81730edd8f2139005fb7a409294 (diff)
downloadrust-18cf47bc7de897168d19806e13467d6c8168a581.tar.gz
rust-18cf47bc7de897168d19806e13467d6c8168a581.zip
Document additional use case for iter::inspect
-rw-r--r--src/libcore/iter/iterator.rs31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/libcore/iter/iterator.rs b/src/libcore/iter/iterator.rs
index d22c5376211..f5b23a3793b 100644
--- a/src/libcore/iter/iterator.rs
+++ b/src/libcore/iter/iterator.rs
@@ -1169,8 +1169,9 @@ pub trait Iterator {
     /// happening at various parts in the pipeline. To do that, insert
     /// a call to `inspect()`.
     ///
-    /// It's much more common for `inspect()` to be used as a debugging tool
-    /// than to exist in your final code, but never say never.
+    /// It's more common for `inspect()` to be used as a debugging tool than to
+    /// exist in your final code, but applications may find it useful in certain
+    /// situations when errors need to be logged before being discarded.
     ///
     /// # Examples
     ///
@@ -1210,6 +1211,32 @@ pub trait Iterator {
     /// about to filter: 3
     /// 6
     /// ```
+    ///
+    /// Logging errors before discarding them:
+    ///
+    /// ```
+    /// let lines = ["1", "2", "a"];
+    ///
+    /// let sum: i32 = lines
+    ///     .iter()
+    ///     .map(|line| line.parse::<i32>())
+    ///     .inspect(|num| {
+    ///         if let Err(ref e) = *num {
+    ///             println!("Parsing error: {}", e);
+    ///         }
+    ///     })
+    ///     .filter_map(Result::ok)
+    ///     .sum();
+    ///
+    /// println!("Sum: {}", sum);
+    /// ```
+    ///
+    /// This will print:
+    ///
+    /// ```text
+    /// Parsing error: invalid digit found in string
+    /// Sum: 3
+    /// ```
     #[inline]
     #[stable(feature = "rust1", since = "1.0.0")]
     fn inspect<F>(self, f: F) -> Inspect<Self, F> where