pub trait FallibleIterator {
type Item;
type Error;
Show 54 methods
// Required method
fn next(&mut self) -> Result<Option<Self::Item>, Self::Error>;
// Provided methods
fn size_hint(&self) -> (usize, Option<usize>) { ... }
fn count(self) -> Result<usize, Self::Error>
where Self: Sized { ... }
fn last(self) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized { ... }
fn nth(&mut self, n: usize) -> Result<Option<Self::Item>, Self::Error> { ... }
fn step_by(self, step: usize) -> StepBy<Self>
where Self: Sized { ... }
fn chain<I>(self, it: I) -> Chain<Self, I>
where I: IntoFallibleIterator<Item = Self::Item, Error = Self::Error>,
Self: Sized { ... }
fn zip<I>(self, o: I) -> Zip<Self, I::IntoFallibleIter>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error> { ... }
fn map<F, B>(self, f: F) -> Map<Self, F>
where Self: Sized,
F: FnMut(Self::Item) -> Result<B, Self::Error> { ... }
fn for_each<F>(self, f: F) -> Result<(), Self::Error>
where Self: Sized,
F: FnMut(Self::Item) -> Result<(), Self::Error> { ... }
fn filter<F>(self, f: F) -> Filter<Self, F>
where Self: Sized,
F: FnMut(&Self::Item) -> Result<bool, Self::Error> { ... }
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where Self: Sized,
F: FnMut(Self::Item) -> Result<Option<B>, Self::Error> { ... }
fn enumerate(self) -> Enumerate<Self>
where Self: Sized { ... }
fn peekable(self) -> Peekable<Self>
where Self: Sized { ... }
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where Self: Sized,
P: FnMut(&Self::Item) -> Result<bool, Self::Error> { ... }
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where Self: Sized,
P: FnMut(&Self::Item) -> Result<bool, Self::Error> { ... }
fn skip(self, n: usize) -> Skip<Self>
where Self: Sized { ... }
fn take(self, n: usize) -> Take<Self>
where Self: Sized { ... }
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where Self: Sized,
F: FnMut(&mut St, Self::Item) -> Result<Option<B>, Self::Error> { ... }
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where Self: Sized,
U: IntoFallibleIterator<Error = Self::Error>,
F: FnMut(Self::Item) -> Result<U, Self::Error> { ... }
fn flatten(self) -> Flatten<Self>
where Self: Sized,
Self::Item: IntoFallibleIterator<Error = Self::Error> { ... }
fn fuse(self) -> Fuse<Self>
where Self: Sized { ... }
fn inspect<F>(self, f: F) -> Inspect<Self, F>
where Self: Sized,
F: FnMut(&Self::Item) -> Result<(), Self::Error> { ... }
fn by_ref(&mut self) -> &mut Self
where Self: Sized { ... }
fn collect<T>(self) -> Result<T, Self::Error>
where T: FromIterator<Self::Item>,
Self: Sized { ... }
fn partition<B, F>(self, f: F) -> Result<(B, B), Self::Error>
where Self: Sized,
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> Result<bool, Self::Error> { ... }
fn fold<B, F>(self, init: B, f: F) -> Result<B, Self::Error>
where Self: Sized,
F: FnMut(B, Self::Item) -> Result<B, Self::Error> { ... }
fn try_fold<B, E, F>(&mut self, init: B, f: F) -> Result<B, E>
where Self: Sized,
E: From<Self::Error>,
F: FnMut(B, Self::Item) -> Result<B, E> { ... }
fn all<F>(&mut self, f: F) -> Result<bool, Self::Error>
where Self: Sized,
F: FnMut(Self::Item) -> Result<bool, Self::Error> { ... }
fn any<F>(&mut self, f: F) -> Result<bool, Self::Error>
where Self: Sized,
F: FnMut(Self::Item) -> Result<bool, Self::Error> { ... }
fn find<F>(&mut self, f: F) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized,
F: FnMut(&Self::Item) -> Result<bool, Self::Error> { ... }
fn find_map<B, F>(&mut self, f: F) -> Result<Option<B>, Self::Error>
where Self: Sized,
F: FnMut(Self::Item) -> Result<Option<B>, Self::Error> { ... }
fn position<F>(&mut self, f: F) -> Result<Option<usize>, Self::Error>
where Self: Sized,
F: FnMut(Self::Item) -> Result<bool, Self::Error> { ... }
fn max(self) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized,
Self::Item: Ord { ... }
fn max_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized,
B: Ord,
F: FnMut(&Self::Item) -> Result<B, Self::Error> { ... }
fn max_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Result<Ordering, Self::Error> { ... }
fn min(self) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized,
Self::Item: Ord { ... }
fn min_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized,
B: Ord,
F: FnMut(&Self::Item) -> Result<B, Self::Error> { ... }
fn min_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
where Self: Sized,
F: FnMut(&Self::Item, &Self::Item) -> Result<Ordering, Self::Error> { ... }
fn rev(self) -> Rev<Self>
where Self: Sized + DoubleEndedFallibleIterator { ... }
fn unzip<A, B, FromA, FromB>(self) -> Result<(FromA, FromB), Self::Error>
where Self: Sized + FallibleIterator<Item = (A, B)>,
FromA: Default + Extend<A>,
FromB: Default + Extend<B> { ... }
fn cloned<'a, T>(self) -> Cloned<Self>
where Self: Sized + FallibleIterator<Item = &'a T>,
T: 'a + Clone { ... }
fn cycle(self) -> Cycle<Self>
where Self: Sized + Clone { ... }
fn cmp<I>(self, other: I) -> Result<Ordering, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Item = Self::Item, Error = Self::Error>,
Self::Item: Ord { ... }
fn partial_cmp<I>(self, other: I) -> Result<Option<Ordering>, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error>,
Self::Item: PartialOrd<I::Item> { ... }
fn eq<I>(self, other: I) -> Result<bool, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error>,
Self::Item: PartialEq<I::Item> { ... }
fn ne<I>(self, other: I) -> Result<bool, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error>,
Self::Item: PartialEq<I::Item> { ... }
fn lt<I>(self, other: I) -> Result<bool, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error>,
Self::Item: PartialOrd<I::Item> { ... }
fn le<I>(self, other: I) -> Result<bool, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error>,
Self::Item: PartialOrd<I::Item> { ... }
fn gt<I>(self, other: I) -> Result<bool, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error>,
Self::Item: PartialOrd<I::Item> { ... }
fn ge<I>(self, other: I) -> Result<bool, Self::Error>
where Self: Sized,
I: IntoFallibleIterator<Error = Self::Error>,
Self::Item: PartialOrd<I::Item> { ... }
fn iterator(self) -> Iterator<Self> ⓘ
where Self: Sized { ... }
fn map_err<B, F>(self, f: F) -> MapErr<Self, F>
where F: FnMut(Self::Error) -> B,
Self: Sized { ... }
fn unwrap<T>(self) -> Unwrap<Self> ⓘ
where Self: Sized + FallibleIterator<Item = T>,
Self::Error: Debug { ... }
}
Expand description
An Iterator
-like trait that allows for calculation of items to fail.
Required Associated Types§
Required Methods§
Provided Methods§
Sourcefn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
Returns bounds on the remaining length of the iterator.
Specifically, the first half of the returned tuple is a lower bound and the second half is an upper bound.
For the upper bound, None
indicates that the upper bound is either
unknown or larger than can be represented as a usize
.
Both bounds assume that all remaining calls to next
succeed. That is,
next
could return an Err
in fewer calls than specified by the lower
bound.
The default implementation returns (0, None)
, which is correct for
any iterator.
Sourcefn count(self) -> Result<usize, Self::Error>where
Self: Sized,
fn count(self) -> Result<usize, Self::Error>where
Self: Sized,
Consumes the iterator, returning the number of remaining items.
Sourcefn last(self) -> Result<Option<Self::Item>, Self::Error>where
Self: Sized,
fn last(self) -> Result<Option<Self::Item>, Self::Error>where
Self: Sized,
Returns the last element of the iterator.
Sourcefn nth(&mut self, n: usize) -> Result<Option<Self::Item>, Self::Error>
fn nth(&mut self, n: usize) -> Result<Option<Self::Item>, Self::Error>
Returns the n
th element of the iterator.
Sourcefn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
fn step_by(self, step: usize) -> StepBy<Self>where
Self: Sized,
Returns an iterator starting at the same point, but stepping by the given amount at each iteration.
§Panics
Panics if step
is 0.
Sourcefn chain<I>(self, it: I) -> Chain<Self, I>
fn chain<I>(self, it: I) -> Chain<Self, I>
Returns an iterator which yields the elements of this iterator followed by another.
Sourcefn zip<I>(self, o: I) -> Zip<Self, I::IntoFallibleIter>
fn zip<I>(self, o: I) -> Zip<Self, I::IntoFallibleIter>
Returns an iterator that yields pairs of this iterator’s and another iterator’s values.
Sourcefn map<F, B>(self, f: F) -> Map<Self, F>
fn map<F, B>(self, f: F) -> Map<Self, F>
Returns an iterator which applies a fallible transform to the elements of the underlying iterator.
Sourcefn for_each<F>(self, f: F) -> Result<(), Self::Error>
fn for_each<F>(self, f: F) -> Result<(), Self::Error>
Calls a fallible closure on each element of an iterator.
Sourcefn filter<F>(self, f: F) -> Filter<Self, F>
fn filter<F>(self, f: F) -> Filter<Self, F>
Returns an iterator which uses a predicate to determine which values should be yielded. The predicate may fail; such failures are passed to the caller.
Sourcefn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
Returns an iterator which both filters and maps. The closure may fail; such failures are passed along to the consumer.
Sourcefn enumerate(self) -> Enumerate<Self>where
Self: Sized,
fn enumerate(self) -> Enumerate<Self>where
Self: Sized,
Returns an iterator which yields the current iteration count as well as the value.
Sourcefn peekable(self) -> Peekable<Self>where
Self: Sized,
fn peekable(self) -> Peekable<Self>where
Self: Sized,
Returns an iterator that can peek at the next element without consuming it.
Sourcefn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
Returns an iterator that skips elements based on a predicate.
Sourcefn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
Returns an iterator that yields elements based on a predicate.
Sourcefn skip(self, n: usize) -> Skip<Self>where
Self: Sized,
fn skip(self, n: usize) -> Skip<Self>where
Self: Sized,
Returns an iterator which skips the first n
values of this iterator.
Sourcefn take(self, n: usize) -> Take<Self>where
Self: Sized,
fn take(self, n: usize) -> Take<Self>where
Self: Sized,
Returns an iterator that yields only the first n
values of this
iterator.
Sourcefn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
Returns an iterator which applies a stateful map to values of this iterator.
Sourcefn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
Returns an iterator which maps this iterator’s elements to iterators, yielding those iterators’ values.
Sourcefn flatten(self) -> Flatten<Self>
fn flatten(self) -> Flatten<Self>
Returns an iterator which flattens an iterator of iterators, yielding those iterators’ values.
Sourcefn fuse(self) -> Fuse<Self>where
Self: Sized,
fn fuse(self) -> Fuse<Self>where
Self: Sized,
Returns an iterator which yields this iterator’s elements and ends after
the first Ok(None)
.
The behavior of calling next
after it has previously returned
Ok(None)
is normally unspecified. The iterator returned by this method
guarantees that Ok(None)
will always be returned.
Sourcefn inspect<F>(self, f: F) -> Inspect<Self, F>
fn inspect<F>(self, f: F) -> Inspect<Self, F>
Returns an iterator which passes each element to a closure before returning it.
Sourcefn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
fn by_ref(&mut self) -> &mut Selfwhere
Self: Sized,
Borrow an iterator rather than consuming it.
This is useful to allow the use of iterator adaptors that would otherwise consume the value.
Sourcefn collect<T>(self) -> Result<T, Self::Error>
fn collect<T>(self) -> Result<T, Self::Error>
Transforms the iterator into a collection.
An Err
will be returned if any invocation of next
returns Err
.
Sourcefn partition<B, F>(self, f: F) -> Result<(B, B), Self::Error>
fn partition<B, F>(self, f: F) -> Result<(B, B), Self::Error>
Transforms the iterator into two collections, partitioning elements by a closure.
Sourcefn fold<B, F>(self, init: B, f: F) -> Result<B, Self::Error>
fn fold<B, F>(self, init: B, f: F) -> Result<B, Self::Error>
Applies a function over the elements of the iterator, producing a single final value.
Sourcefn try_fold<B, E, F>(&mut self, init: B, f: F) -> Result<B, E>
fn try_fold<B, E, F>(&mut self, init: B, f: F) -> Result<B, E>
Applies a function over the elements of the iterator, producing a single final value.
This is used as the “base” of many methods on FallibleIterator
.
Sourcefn all<F>(&mut self, f: F) -> Result<bool, Self::Error>
fn all<F>(&mut self, f: F) -> Result<bool, Self::Error>
Determines if all elements of this iterator match a predicate.
Sourcefn any<F>(&mut self, f: F) -> Result<bool, Self::Error>
fn any<F>(&mut self, f: F) -> Result<bool, Self::Error>
Determines if any element of this iterator matches a predicate.
Sourcefn find<F>(&mut self, f: F) -> Result<Option<Self::Item>, Self::Error>
fn find<F>(&mut self, f: F) -> Result<Option<Self::Item>, Self::Error>
Returns the first element of the iterator that matches a predicate.
Sourcefn find_map<B, F>(&mut self, f: F) -> Result<Option<B>, Self::Error>
fn find_map<B, F>(&mut self, f: F) -> Result<Option<B>, Self::Error>
Applies a function to the elements of the iterator, returning the first non-None
result.
Sourcefn position<F>(&mut self, f: F) -> Result<Option<usize>, Self::Error>
fn position<F>(&mut self, f: F) -> Result<Option<usize>, Self::Error>
Returns the position of the first element of this iterator that matches a predicate. The predicate may fail; such failures are returned to the caller.
Sourcefn max(self) -> Result<Option<Self::Item>, Self::Error>
fn max(self) -> Result<Option<Self::Item>, Self::Error>
Returns the maximal element of the iterator.
Sourcefn max_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
fn max_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
Returns the element of the iterator which gives the maximum value from the function.
Sourcefn max_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
fn max_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
Returns the element that gives the maximum value with respect to the function.
Sourcefn min(self) -> Result<Option<Self::Item>, Self::Error>
fn min(self) -> Result<Option<Self::Item>, Self::Error>
Returns the minimal element of the iterator.
Sourcefn min_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
fn min_by_key<B, F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
Returns the element of the iterator which gives the minimum value from the function.
Sourcefn min_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
fn min_by<F>(self, f: F) -> Result<Option<Self::Item>, Self::Error>
Returns the element that gives the minimum value with respect to the function.
Sourcefn rev(self) -> Rev<Self>where
Self: Sized + DoubleEndedFallibleIterator,
fn rev(self) -> Rev<Self>where
Self: Sized + DoubleEndedFallibleIterator,
Returns an iterator that yields this iterator’s items in the opposite order.
Sourcefn unzip<A, B, FromA, FromB>(self) -> Result<(FromA, FromB), Self::Error>
fn unzip<A, B, FromA, FromB>(self) -> Result<(FromA, FromB), Self::Error>
Converts an iterator of pairs into a pair of containers.
Sourcefn cmp<I>(self, other: I) -> Result<Ordering, Self::Error>
fn cmp<I>(self, other: I) -> Result<Ordering, Self::Error>
Lexicographically compares the elements of this iterator to that of another.
Sourcefn partial_cmp<I>(self, other: I) -> Result<Option<Ordering>, Self::Error>
fn partial_cmp<I>(self, other: I) -> Result<Option<Ordering>, Self::Error>
Lexicographically compares the elements of this iterator to that of another.
Sourcefn eq<I>(self, other: I) -> Result<bool, Self::Error>
fn eq<I>(self, other: I) -> Result<bool, Self::Error>
Determines if the elements of this iterator are equal to those of another.
Sourcefn ne<I>(self, other: I) -> Result<bool, Self::Error>
fn ne<I>(self, other: I) -> Result<bool, Self::Error>
Determines if the elements of this iterator are not equal to those of another.
Sourcefn lt<I>(self, other: I) -> Result<bool, Self::Error>
fn lt<I>(self, other: I) -> Result<bool, Self::Error>
Determines if the elements of this iterator are lexicographically less than those of another.
Sourcefn le<I>(self, other: I) -> Result<bool, Self::Error>
fn le<I>(self, other: I) -> Result<bool, Self::Error>
Determines if the elements of this iterator are lexicographically less than or equal to those of another.
Sourcefn gt<I>(self, other: I) -> Result<bool, Self::Error>
fn gt<I>(self, other: I) -> Result<bool, Self::Error>
Determines if the elements of this iterator are lexicographically greater than those of another.
Sourcefn ge<I>(self, other: I) -> Result<bool, Self::Error>
fn ge<I>(self, other: I) -> Result<bool, Self::Error>
Determines if the elements of this iterator are lexicographically greater than or equal to those of another.
Sourcefn iterator(self) -> Iterator<Self> ⓘwhere
Self: Sized,
fn iterator(self) -> Iterator<Self> ⓘwhere
Self: Sized,
Returns a normal (non-fallible) iterator over Result<Item, Error>
.