@@ -1999,6 +1999,15 @@ pub trait Itertools: Iterator {
1999
1999
/// assert_eq!(numbers.iter().find_or_last(|&&x| x > 5), Some(&4));
2000
2000
/// assert_eq!(numbers.iter().find_or_last(|&&x| x > 2), Some(&3));
2001
2001
/// assert_eq!(std::iter::empty::<i32>().find_or_last(|&x| x > 5), None);
2002
+ ///
2003
+ /// // An iterator of Results can return the first Ok or the last Err:
2004
+ /// let input = vec![Err(()), Ok(11), Err(()), Ok(22)];
2005
+ /// assert_eq!(input.into_iter().find_or_last(Result::is_ok), Some(Ok(11)));
2006
+ ///
2007
+ /// let input: Vec<Result<(), i32>> = vec![Err(11), Err(22)];
2008
+ /// assert_eq!(input.into_iter().find_or_last(Result::is_ok), Some(Err(22)));
2009
+ ///
2010
+ /// assert_eq!(std::iter::empty::<Result<(), i32>>().find_or_last(Result::is_ok), None);
2002
2011
/// ```
2003
2012
fn find_or_last < P > ( mut self , mut predicate : P ) -> Option < Self :: Item >
2004
2013
where
@@ -2027,6 +2036,15 @@ pub trait Itertools: Iterator {
2027
2036
/// assert_eq!(numbers.iter().find_or_first(|&&x| x > 5), Some(&1));
2028
2037
/// assert_eq!(numbers.iter().find_or_first(|&&x| x > 2), Some(&3));
2029
2038
/// assert_eq!(std::iter::empty::<i32>().find_or_first(|&x| x > 5), None);
2039
+ ///
2040
+ /// // An iterator of Results can return the first Ok or the first Err:
2041
+ /// let input = vec![Err(()), Ok(11), Err(()), Ok(22)];
2042
+ /// assert_eq!(input.into_iter().find_or_first(Result::is_ok), Some(Ok(11)));
2043
+ ///
2044
+ /// let input: Vec<Result<(), i32>> = vec![Err(11), Err(22)];
2045
+ /// assert_eq!(input.into_iter().find_or_first(Result::is_ok), Some(Err(11)));
2046
+ ///
2047
+ /// assert_eq!(std::iter::empty::<Result<(), i32>>().find_or_first(Result::is_ok), None);
2030
2048
/// ```
2031
2049
fn find_or_first < P > ( mut self , mut predicate : P ) -> Option < Self :: Item >
2032
2050
where
0 commit comments