tryiter/
lib.rs

1mod ext;
2mod try_peekable;
3
4pub use ext::TryIteratorExt;
5pub use try_peekable::TryPeekable;
6
7use private::Sealed;
8
9mod private {
10    pub trait Sealed {}
11    impl<I, O, E> Sealed for I where I: ?Sized + Iterator<Item = Result<O, E>> {}
12}
13
14pub trait TryIterator: Iterator<Item = Result<Self::Ok, Self::Err>> + Sealed {
15    /// The type of successful values yielded by this iterator
16    type Ok;
17
18    /// The type of failures yielded by this iterator
19    type Err;
20}
21
22impl<I, O, E> TryIterator for I
23where
24    I: ?Sized + Iterator<Item = Result<O, E>>,
25{
26    type Ok = O;
27    type Err = E;
28}
29
30impl<I: TryIterator> TryIteratorExt for I {}