Document additional use case for iter::inspect

This commit is contained in:
Nick Babcock 2018-05-28 18:50:16 -05:00
parent 2612bbcba0
commit 18cf47bc7d

View File

@ -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