diff options
| author | Nick Babcock <nbabcock19@hotmail.com> | 2018-05-28 18:50:16 -0500 |
|---|---|---|
| committer | Nick Babcock <nbabcock19@hotmail.com> | 2018-05-28 18:50:16 -0500 |
| commit | 18cf47bc7de897168d19806e13467d6c8168a581 (patch) | |
| tree | cc980b3ae5d08f7f4db4e61f227cb25125510c3a | |
| parent | 2612bbcba08dd81730edd8f2139005fb7a409294 (diff) | |
| download | rust-18cf47bc7de897168d19806e13467d6c8168a581.tar.gz rust-18cf47bc7de897168d19806e13467d6c8168a581.zip | |
Document additional use case for iter::inspect
| -rw-r--r-- | src/libcore/iter/iterator.rs | 31 |
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 |
