@@ -1999,6 +1999,15 @@ pub trait Itertools: Iterator {
19991999 /// assert_eq!(numbers.iter().find_or_last(|&&x| x > 5), Some(&4));
20002000 /// assert_eq!(numbers.iter().find_or_last(|&&x| x > 2), Some(&3));
20012001 /// 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);
20022011 /// ```
20032012 fn find_or_last < P > ( mut self , mut predicate : P ) -> Option < Self :: Item >
20042013 where
@@ -2027,6 +2036,15 @@ pub trait Itertools: Iterator {
20272036 /// assert_eq!(numbers.iter().find_or_first(|&&x| x > 5), Some(&1));
20282037 /// assert_eq!(numbers.iter().find_or_first(|&&x| x > 2), Some(&3));
20292038 /// 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);
20302048 /// ```
20312049 fn find_or_first < P > ( mut self , mut predicate : P ) -> Option < Self :: Item >
20322050 where
0 commit comments