pub enum Either<L, R> {
    Left(L),
    Right(R),
}Expand description
The enum Either with variants Left and Right is a general purpose
sum type with two cases.
The Either type is symmetric and treats its variants the same way, without
preference.
(For representing success or error, use the regular Result enum instead.)
Variants§
Implementations§
source§impl<L, R> Either<L, R>
 
impl<L, R> Either<L, R>
sourcepub fn is_left(&self) -> bool
 
pub fn is_left(&self) -> bool
Return true if the value is the Left variant.
use either::*;
let values = [Left(1), Right("the right value")];
assert_eq!(values[0].is_left(), true);
assert_eq!(values[1].is_left(), false);sourcepub fn is_right(&self) -> bool
 
pub fn is_right(&self) -> bool
Return true if the value is the Right variant.
use either::*;
let values = [Left(1), Right("the right value")];
assert_eq!(values[0].is_right(), false);
assert_eq!(values[1].is_right(), true);sourcepub fn left(self) -> Option<L>
 
pub fn left(self) -> Option<L>
Convert the left side of Either<L, R> to an Option<L>.
use either::*;
let left: Either<_, ()> = Left("some value");
assert_eq!(left.left(),  Some("some value"));
let right: Either<(), _> = Right(321);
assert_eq!(right.left(), None);sourcepub fn right(self) -> Option<R>
 
pub fn right(self) -> Option<R>
Convert the right side of Either<L, R> to an Option<R>.
use either::*;
let left: Either<_, ()> = Left("some value");
assert_eq!(left.right(),  None);
let right: Either<(), _> = Right(321);
assert_eq!(right.right(), Some(321));sourcepub fn as_ref(&self) -> Either<&L, &R> ⓘ
 
pub fn as_ref(&self) -> Either<&L, &R> ⓘ
Convert &Either<L, R> to Either<&L, &R>.
use either::*;
let left: Either<_, ()> = Left("some value");
assert_eq!(left.as_ref(), Left(&"some value"));
let right: Either<(), _> = Right("some value");
assert_eq!(right.as_ref(), Right(&"some value"));sourcepub fn as_mut(&mut self) -> Either<&mut L, &mut R> ⓘ
 
pub fn as_mut(&mut self) -> Either<&mut L, &mut R> ⓘ
Convert &mut Either<L, R> to Either<&mut L, &mut R>.
use either::*;
fn mutate_left(value: &mut Either<u32, u32>) {
    if let Some(l) = value.as_mut().left() {
        *l = 999;
    }
}
let mut left = Left(123);
let mut right = Right(123);
mutate_left(&mut left);
mutate_left(&mut right);
assert_eq!(left, Left(999));
assert_eq!(right, Right(123));sourcepub fn as_pin_ref(self: Pin<&Either<L, R>>) -> Either<Pin<&L>, Pin<&R>> ⓘ
 
pub fn as_pin_ref(self: Pin<&Either<L, R>>) -> Either<Pin<&L>, Pin<&R>> ⓘ
Convert Pin<&Either<L, R>> to Either<Pin<&L>, Pin<&R>>,
pinned projections of the inner variants.
sourcepub fn as_pin_mut(
    self: Pin<&mut Either<L, R>>
) -> Either<Pin<&mut L>, Pin<&mut R>> ⓘ
 
pub fn as_pin_mut( self: Pin<&mut Either<L, R>> ) -> Either<Pin<&mut L>, Pin<&mut R>> ⓘ
Convert Pin<&mut Either<L, R>> to Either<Pin<&mut L>, Pin<&mut R>>,
pinned projections of the inner variants.
sourcepub fn flip(self) -> Either<R, L> ⓘ
 
pub fn flip(self) -> Either<R, L> ⓘ
Convert Either<L, R> to Either<R, L>.
use either::*;
let left: Either<_, ()> = Left(123);
assert_eq!(left.flip(), Right(123));
let right: Either<(), _> = Right("some value");
assert_eq!(right.flip(), Left("some value"));sourcepub fn map_left<F, M>(self, f: F) -> Either<M, R> ⓘwhere
    F: FnOnce(L) -> M,
 
pub fn map_left<F, M>(self, f: F) -> Either<M, R> ⓘwhere F: FnOnce(L) -> M,
Apply the function f on the value in the Left variant if it is present rewrapping the
result in Left.
use either::*;
let left: Either<_, u32> = Left(123);
assert_eq!(left.map_left(|x| x * 2), Left(246));
let right: Either<u32, _> = Right(123);
assert_eq!(right.map_left(|x| x * 2), Right(123));sourcepub fn map_right<F, S>(self, f: F) -> Either<L, S> ⓘwhere
    F: FnOnce(R) -> S,
 
pub fn map_right<F, S>(self, f: F) -> Either<L, S> ⓘwhere F: FnOnce(R) -> S,
Apply the function f on the value in the Right variant if it is present rewrapping the
result in Right.
use either::*;
let left: Either<_, u32> = Left(123);
assert_eq!(left.map_right(|x| x * 2), Left(123));
let right: Either<u32, _> = Right(123);
assert_eq!(right.map_right(|x| x * 2), Right(246));sourcepub fn either<F, G, T>(self, f: F, g: G) -> Twhere
    F: FnOnce(L) -> T,
    G: FnOnce(R) -> T,
 
pub fn either<F, G, T>(self, f: F, g: G) -> Twhere F: FnOnce(L) -> T, G: FnOnce(R) -> T,
Apply one of two functions depending on contents, unifying their result. If the value is
Left(L) then the first function f is applied; if it is Right(R) then the second
function g is applied.
use either::*;
fn square(n: u32) -> i32 { (n * n) as i32 }
fn negate(n: i32) -> i32 { -n }
let left: Either<u32, i32> = Left(4);
assert_eq!(left.either(square, negate), 16);
let right: Either<u32, i32> = Right(-4);
assert_eq!(right.either(square, negate), 4);sourcepub fn either_with<Ctx, F, G, T>(self, ctx: Ctx, f: F, g: G) -> Twhere
    F: FnOnce(Ctx, L) -> T,
    G: FnOnce(Ctx, R) -> T,
 
pub fn either_with<Ctx, F, G, T>(self, ctx: Ctx, f: F, g: G) -> Twhere F: FnOnce(Ctx, L) -> T, G: FnOnce(Ctx, R) -> T,
Like either, but provide some context to whichever of the
functions ends up being called.
// In this example, the context is a mutable reference
use either::*;
let mut result = Vec::new();
let values = vec![Left(2), Right(2.7)];
for value in values {
    value.either_with(&mut result,
                      |ctx, integer| ctx.push(integer),
                      |ctx, real| ctx.push(f64::round(real) as i32));
}
assert_eq!(result, vec![2, 3]);sourcepub fn left_and_then<F, S>(self, f: F) -> Either<S, R> ⓘwhere
    F: FnOnce(L) -> Either<S, R>,
 
pub fn left_and_then<F, S>(self, f: F) -> Either<S, R> ⓘwhere F: FnOnce(L) -> Either<S, R>,
Apply the function f on the value in the Left variant if it is present.
use either::*;
let left: Either<_, u32> = Left(123);
assert_eq!(left.left_and_then::<_,()>(|x| Right(x * 2)), Right(246));
let right: Either<u32, _> = Right(123);
assert_eq!(right.left_and_then(|x| Right::<(), _>(x * 2)), Right(123));sourcepub fn right_and_then<F, S>(self, f: F) -> Either<L, S> ⓘwhere
    F: FnOnce(R) -> Either<L, S>,
 
pub fn right_and_then<F, S>(self, f: F) -> Either<L, S> ⓘwhere F: FnOnce(R) -> Either<L, S>,
Apply the function f on the value in the Right variant if it is present.
use either::*;
let left: Either<_, u32> = Left(123);
assert_eq!(left.right_and_then(|x| Right(x * 2)), Left(123));
let right: Either<u32, _> = Right(123);
assert_eq!(right.right_and_then(|x| Right(x * 2)), Right(246));sourcepub fn into_iter(
    self
) -> Either<<L as IntoIterator>::IntoIter, <R as IntoIterator>::IntoIter> ⓘwhere
    L: IntoIterator,
    R: IntoIterator<Item = <L as IntoIterator>::Item>,
 
pub fn into_iter( self ) -> Either<<L as IntoIterator>::IntoIter, <R as IntoIterator>::IntoIter> ⓘwhere L: IntoIterator, R: IntoIterator<Item = <L as IntoIterator>::Item>,
Convert the inner value to an iterator.
use either::*;
let left: Either<_, Vec<u32>> = Left(vec![1, 2, 3, 4, 5]);
let mut right: Either<Vec<u32>, _> = Right(vec![]);
right.extend(left.into_iter());
assert_eq!(right, Right(vec![1, 2, 3, 4, 5]));sourcepub fn left_or(self, other: L) -> L
 
pub fn left_or(self, other: L) -> L
Return left value or given value
Arguments passed to left_or are eagerly evaluated; if you are passing
the result of a function call, it is recommended to use left_or_else,
which is lazily evaluated.
Examples
let left: Either<&str, &str> = Left("left");
assert_eq!(left.left_or("foo"), "left");
let right: Either<&str, &str> = Right("right");
assert_eq!(right.left_or("left"), "left");sourcepub fn left_or_default(self) -> Lwhere
    L: Default,
 
pub fn left_or_default(self) -> Lwhere L: Default,
Return left or a default
Examples
let left: Either<String, u32> = Left("left".to_string());
assert_eq!(left.left_or_default(), "left");
let right: Either<String, u32> = Right(42);
assert_eq!(right.left_or_default(), String::default());sourcepub fn left_or_else<F>(self, f: F) -> Lwhere
    F: FnOnce(R) -> L,
 
pub fn left_or_else<F>(self, f: F) -> Lwhere F: FnOnce(R) -> L,
Returns left value or computes it from a closure
Examples
let left: Either<String, u32> = Left("3".to_string());
assert_eq!(left.left_or_else(|_| unreachable!()), "3");
let right: Either<String, u32> = Right(3);
assert_eq!(right.left_or_else(|x| x.to_string()), "3");sourcepub fn right_or(self, other: R) -> R
 
pub fn right_or(self, other: R) -> R
Return right value or given value
Arguments passed to right_or are eagerly evaluated; if you are passing
the result of a function call, it is recommended to use right_or_else,
which is lazily evaluated.
Examples
let right: Either<&str, &str> = Right("right");
assert_eq!(right.right_or("foo"), "right");
let left: Either<&str, &str> = Left("left");
assert_eq!(left.right_or("right"), "right");sourcepub fn right_or_default(self) -> Rwhere
    R: Default,
 
pub fn right_or_default(self) -> Rwhere R: Default,
Return right or a default
Examples
let left: Either<String, u32> = Left("left".to_string());
assert_eq!(left.right_or_default(), u32::default());
let right: Either<String, u32> = Right(42);
assert_eq!(right.right_or_default(), 42);sourcepub fn right_or_else<F>(self, f: F) -> Rwhere
    F: FnOnce(L) -> R,
 
pub fn right_or_else<F>(self, f: F) -> Rwhere F: FnOnce(L) -> R,
Returns right value or computes it from a closure
Examples
let left: Either<String, u32> = Left("3".to_string());
assert_eq!(left.right_or_else(|x| x.parse().unwrap()), 3);
let right: Either<String, u32> = Right(3);
assert_eq!(right.right_or_else(|_| unreachable!()), 3);sourcepub fn unwrap_left(self) -> Lwhere
    R: Debug,
 
pub fn unwrap_left(self) -> Lwhere R: Debug,
sourcepub fn unwrap_right(self) -> Rwhere
    L: Debug,
 
pub fn unwrap_right(self) -> Rwhere L: Debug,
sourcepub fn expect_left(self, msg: &str) -> Lwhere
    R: Debug,
 
pub fn expect_left(self, msg: &str) -> Lwhere R: Debug,
sourcepub fn expect_right(self, msg: &str) -> Rwhere
    L: Debug,
 
pub fn expect_right(self, msg: &str) -> Rwhere L: Debug,
sourcepub fn either_into<T>(self) -> Twhere
    L: Into<T>,
    R: Into<T>,
 
pub fn either_into<T>(self) -> Twhere L: Into<T>, R: Into<T>,
Convert the contained value into T
Examples
// Both u16 and u32 can be converted to u64.
let left: Either<u16, u32> = Left(3u16);
assert_eq!(left.either_into::<u64>(), 3u64);
let right: Either<u16, u32> = Right(7u32);
assert_eq!(right.either_into::<u64>(), 7u64);source§impl<L, R> Either<Option<L>, Option<R>>
 
impl<L, R> Either<Option<L>, Option<R>>
sourcepub fn factor_none(self) -> Option<Either<L, R>>
 
pub fn factor_none(self) -> Option<Either<L, R>>
Factors out None from an Either of Option.
use either::*;
let left: Either<_, Option<String>> = Left(Some(vec![0]));
assert_eq!(left.factor_none(), Some(Left(vec![0])));
let right: Either<Option<Vec<u8>>, _> = Right(Some(String::new()));
assert_eq!(right.factor_none(), Some(Right(String::new())));source§impl<L, R, E> Either<Result<L, E>, Result<R, E>>
 
impl<L, R, E> Either<Result<L, E>, Result<R, E>>
sourcepub fn factor_err(self) -> Result<Either<L, R>, E>
 
pub fn factor_err(self) -> Result<Either<L, R>, E>
Factors out a homogenous type from an Either of Result.
Here, the homogeneous type is the Err type of the Result.
use either::*;
let left: Either<_, Result<String, u32>> = Left(Ok(vec![0]));
assert_eq!(left.factor_err(), Ok(Left(vec![0])));
let right: Either<Result<Vec<u8>, u32>, _> = Right(Ok(String::new()));
assert_eq!(right.factor_err(), Ok(Right(String::new())));source§impl<T, L, R> Either<Result<T, L>, Result<T, R>>
 
impl<T, L, R> Either<Result<T, L>, Result<T, R>>
sourcepub fn factor_ok(self) -> Result<T, Either<L, R>>
 
pub fn factor_ok(self) -> Result<T, Either<L, R>>
Factors out a homogenous type from an Either of Result.
Here, the homogeneous type is the Ok type of the Result.
use either::*;
let left: Either<_, Result<u32, String>> = Left(Err(vec![0]));
assert_eq!(left.factor_ok(), Err(Left(vec![0])));
let right: Either<Result<u32, Vec<u8>>, _> = Right(Err(String::new()));
assert_eq!(right.factor_ok(), Err(Right(String::new())));source§impl<T, L, R> Either<(T, L), (T, R)>
 
impl<T, L, R> Either<(T, L), (T, R)>
sourcepub fn factor_first(self) -> (T, Either<L, R>)
 
pub fn factor_first(self) -> (T, Either<L, R>)
Factor out a homogeneous type from an either of pairs.
Here, the homogeneous type is the first element of the pairs.
use either::*;
let left: Either<_, (u32, String)> = Left((123, vec![0]));
assert_eq!(left.factor_first().0, 123);
let right: Either<(u32, Vec<u8>), _> = Right((123, String::new()));
assert_eq!(right.factor_first().0, 123);source§impl<T, L, R> Either<(L, T), (R, T)>
 
impl<T, L, R> Either<(L, T), (R, T)>
sourcepub fn factor_second(self) -> (Either<L, R>, T)
 
pub fn factor_second(self) -> (Either<L, R>, T)
Factor out a homogeneous type from an either of pairs.
Here, the homogeneous type is the second element of the pairs.
use either::*;
let left: Either<_, (String, u32)> = Left((vec![0], 123));
assert_eq!(left.factor_second().1, 123);
let right: Either<(Vec<u8>, u32), _> = Right((String::new(), 123));
assert_eq!(right.factor_second().1, 123);source§impl<T> Either<T, T>
 
impl<T> Either<T, T>
sourcepub fn into_inner(self) -> T
 
pub fn into_inner(self) -> T
Extract the value of an either over two equivalent types.
use either::*;
let left: Either<_, u32> = Left(123);
assert_eq!(left.into_inner(), 123);
let right: Either<u32, _> = Right(123);
assert_eq!(right.into_inner(), 123);Trait Implementations§
source§impl<L, R, Target> AsMut<[Target]> for Either<L, R>where
    L: AsMut<[Target]>,
    R: AsMut<[Target]>,
 
impl<L, R, Target> AsMut<[Target]> for Either<L, R>where L: AsMut<[Target]>, R: AsMut<[Target]>,
source§impl<L, R, Target> AsMut<Target> for Either<L, R>where
    L: AsMut<Target>,
    R: AsMut<Target>,
 
impl<L, R, Target> AsMut<Target> for Either<L, R>where L: AsMut<Target>, R: AsMut<Target>,
source§fn as_mut(&mut self) -> &mut Target
 
fn as_mut(&mut self) -> &mut Target
source§impl<L, R, Target> AsRef<[Target]> for Either<L, R>where
    L: AsRef<[Target]>,
    R: AsRef<[Target]>,
 
impl<L, R, Target> AsRef<[Target]> for Either<L, R>where L: AsRef<[Target]>, R: AsRef<[Target]>,
source§impl<L, R> DerefMut for Either<L, R>where
    L: DerefMut,
    R: DerefMut<Target = <L as Deref>::Target>,
 
impl<L, R> DerefMut for Either<L, R>where L: DerefMut, R: DerefMut<Target = <L as Deref>::Target>,
source§impl<L, R> DoubleEndedIterator for Either<L, R>where
    L: DoubleEndedIterator,
    R: DoubleEndedIterator<Item = <L as Iterator>::Item>,
 
impl<L, R> DoubleEndedIterator for Either<L, R>where L: DoubleEndedIterator, R: DoubleEndedIterator<Item = <L as Iterator>::Item>,
source§fn next_back(&mut self) -> Option<<Either<L, R> as Iterator>::Item>
 
fn next_back(&mut self) -> Option<<Either<L, R> as Iterator>::Item>
source§fn rfold<Acc, G>(self, init: Acc, f: G) -> Accwhere
    G: FnMut(Acc, <Either<L, R> as Iterator>::Item) -> Acc,
 
fn rfold<Acc, G>(self, init: Acc, f: G) -> Accwhere G: FnMut(Acc, <Either<L, R> as Iterator>::Item) -> Acc,
source§fn rfind<P>(&mut self, predicate: P) -> Option<<Either<L, R> as Iterator>::Item>where
    P: FnMut(&<Either<L, R> as Iterator>::Item) -> bool,
 
fn rfind<P>(&mut self, predicate: P) -> Option<<Either<L, R> as Iterator>::Item>where P: FnMut(&<Either<L, R> as Iterator>::Item) -> bool,
source§fn advance_back_by(&mut self, n: usize) -> Result<(), usize>
 
fn advance_back_by(&mut self, n: usize) -> Result<(), usize>
iter_advance_by)n elements. Read moresource§impl<L, R> ExactSizeIterator for Either<L, R>where
    L: ExactSizeIterator,
    R: ExactSizeIterator<Item = <L as Iterator>::Item>,
 
impl<L, R> ExactSizeIterator for Either<L, R>where L: ExactSizeIterator, R: ExactSizeIterator<Item = <L as Iterator>::Item>,
source§impl<L, R, A> Extend<A> for Either<L, R>where
    L: Extend<A>,
    R: Extend<A>,
 
impl<L, R, A> Extend<A> for Either<L, R>where L: Extend<A>, R: Extend<A>,
source§fn extend<T>(&mut self, iter: T)where
    T: IntoIterator<Item = A>,
 
fn extend<T>(&mut self, iter: T)where T: IntoIterator<Item = A>,
source§fn extend_one(&mut self, item: A)
 
fn extend_one(&mut self, item: A)
extend_one)source§fn extend_reserve(&mut self, additional: usize)
 
fn extend_reserve(&mut self, additional: usize)
extend_one)source§impl<L, R> From<Result<R, L>> for Either<L, R>
 
impl<L, R> From<Result<R, L>> for Either<L, R>
Convert from Result to Either with Ok => Right and Err => Left.
source§impl<L, R> Future for Either<L, R>where
    L: Future,
    R: Future<Output = <L as Future>::Output>,
 
impl<L, R> Future for Either<L, R>where L: Future, R: Future<Output = <L as Future>::Output>,
Either<L, R> is a future if both L and R are futures.
source§impl<L, R> Into<Result<R, L>> for Either<L, R>
 
impl<L, R> Into<Result<R, L>> for Either<L, R>
Convert from Either to Result with Right => Ok and Left => Err.
source§impl<L, R> Iterator for Either<L, R>where
    L: Iterator,
    R: Iterator<Item = <L as Iterator>::Item>,
 
impl<L, R> Iterator for Either<L, R>where L: Iterator, R: Iterator<Item = <L as Iterator>::Item>,
Either<L, R> is an iterator if both L and R are iterators.
source§fn next(&mut self) -> Option<<Either<L, R> as Iterator>::Item>
 
fn next(&mut self) -> Option<<Either<L, R> as Iterator>::Item>
source§fn size_hint(&self) -> (usize, Option<usize>)
 
fn size_hint(&self) -> (usize, Option<usize>)
source§fn fold<Acc, G>(self, init: Acc, f: G) -> Accwhere
    G: FnMut(Acc, <Either<L, R> as Iterator>::Item) -> Acc,
 
fn fold<Acc, G>(self, init: Acc, f: G) -> Accwhere G: FnMut(Acc, <Either<L, R> as Iterator>::Item) -> Acc,
source§fn for_each<F>(self, f: F)where
    F: FnMut(<Either<L, R> as Iterator>::Item),
 
fn for_each<F>(self, f: F)where F: FnMut(<Either<L, R> as Iterator>::Item),
source§fn count(self) -> usize
 
fn count(self) -> usize
source§fn last(self) -> Option<<Either<L, R> as Iterator>::Item>
 
fn last(self) -> Option<<Either<L, R> as Iterator>::Item>
source§fn nth(&mut self, n: usize) -> Option<<Either<L, R> as Iterator>::Item>
 
fn nth(&mut self, n: usize) -> Option<<Either<L, R> as Iterator>::Item>
nth element of the iterator. Read moresource§fn collect<B>(self) -> Bwhere
    B: FromIterator<<Either<L, R> as Iterator>::Item>,
 
fn collect<B>(self) -> Bwhere B: FromIterator<<Either<L, R> as Iterator>::Item>,
source§fn partition<B, F>(self, f: F) -> (B, B)where
    B: Default + Extend<<Either<L, R> as Iterator>::Item>,
    F: FnMut(&<Either<L, R> as Iterator>::Item) -> bool,
 
fn partition<B, F>(self, f: F) -> (B, B)where B: Default + Extend<<Either<L, R> as Iterator>::Item>, F: FnMut(&<Either<L, R> as Iterator>::Item) -> bool,
source§fn all<F>(&mut self, f: F) -> boolwhere
    F: FnMut(<Either<L, R> as Iterator>::Item) -> bool,
 
fn all<F>(&mut self, f: F) -> boolwhere F: FnMut(<Either<L, R> as Iterator>::Item) -> bool,
source§fn any<F>(&mut self, f: F) -> boolwhere
    F: FnMut(<Either<L, R> as Iterator>::Item) -> bool,
 
fn any<F>(&mut self, f: F) -> boolwhere F: FnMut(<Either<L, R> as Iterator>::Item) -> bool,
source§fn find<P>(&mut self, predicate: P) -> Option<<Either<L, R> as Iterator>::Item>where
    P: FnMut(&<Either<L, R> as Iterator>::Item) -> bool,
 
fn find<P>(&mut self, predicate: P) -> Option<<Either<L, R> as Iterator>::Item>where P: FnMut(&<Either<L, R> as Iterator>::Item) -> bool,
source§fn find_map<B, F>(&mut self, f: F) -> Option<B>where
    F: FnMut(<Either<L, R> as Iterator>::Item) -> Option<B>,
 
fn find_map<B, F>(&mut self, f: F) -> Option<B>where F: FnMut(<Either<L, R> as Iterator>::Item) -> Option<B>,
source§fn position<P>(&mut self, predicate: P) -> Option<usize>where
    P: FnMut(<Either<L, R> as Iterator>::Item) -> bool,
 
fn position<P>(&mut self, predicate: P) -> Option<usize>where P: FnMut(<Either<L, R> as Iterator>::Item) -> bool,
source§fn next_chunk<const N: usize>(
    &mut self
) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where
    Self: Sized,
 
fn next_chunk<const N: usize>( &mut self ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where Self: Sized,
iter_next_chunk)N values. Read moresource§fn advance_by(&mut self, n: usize) -> Result<(), usize>
 
fn advance_by(&mut self, n: usize) -> Result<(), usize>
iter_advance_by)n elements. Read more1.28.0 · source§fn step_by(self, step: usize) -> StepBy<Self>where
    Self: Sized,
 
fn step_by(self, step: usize) -> StepBy<Self>where Self: Sized,
1.0.0 · source§fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where
    Self: Sized,
    U: IntoIterator<Item = Self::Item>,
 
fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where Self: Sized, U: IntoIterator<Item = Self::Item>,
1.0.0 · source§fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where
    Self: Sized,
    U: IntoIterator,
 
fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where Self: Sized, U: IntoIterator,
source§fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where
    Self: Sized,
    G: FnMut() -> Self::Item,
 
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where Self: Sized, G: FnMut() -> Self::Item,
iter_intersperse)separator
between adjacent items of the original iterator. Read more1.0.0 · source§fn map<B, F>(self, f: F) -> Map<Self, F>where
    Self: Sized,
    F: FnMut(Self::Item) -> B,
 
fn map<B, F>(self, f: F) -> Map<Self, F>where Self: Sized, F: FnMut(Self::Item) -> B,
1.0.0 · source§fn filter<P>(self, predicate: P) -> Filter<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
 
fn filter<P>(self, predicate: P) -> Filter<Self, P>where Self: Sized, P: FnMut(&Self::Item) -> bool,
1.0.0 · source§fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where
    Self: Sized,
    F: FnMut(Self::Item) -> Option<B>,
 
fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where Self: Sized, F: FnMut(Self::Item) -> Option<B>,
1.0.0 · source§fn enumerate(self) -> Enumerate<Self>where
    Self: Sized,
 
fn enumerate(self) -> Enumerate<Self>where Self: Sized,
1.0.0 · source§fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
 
fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where Self: Sized, P: FnMut(&Self::Item) -> bool,
1.0.0 · source§fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where
    Self: Sized,
    P: FnMut(&Self::Item) -> bool,
 
fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where Self: Sized, P: FnMut(&Self::Item) -> bool,
1.57.0 · source§fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where
    Self: Sized,
    P: FnMut(Self::Item) -> Option<B>,
 
fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where Self: Sized, P: FnMut(Self::Item) -> Option<B>,
1.0.0 · source§fn skip(self, n: usize) -> Skip<Self>where
    Self: Sized,
 
fn skip(self, n: usize) -> Skip<Self>where Self: Sized,
n elements. Read more1.0.0 · source§fn take(self, n: usize) -> Take<Self>where
    Self: Sized,
 
fn take(self, n: usize) -> Take<Self>where Self: Sized,
n elements, or fewer
if the underlying iterator ends sooner. Read more1.0.0 · source§fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where
    Self: Sized,
    F: FnMut(&mut St, Self::Item) -> Option<B>,
 
fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>where Self: Sized, F: FnMut(&mut St, Self::Item) -> Option<B>,
1.0.0 · source§fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where
    Self: Sized,
    U: IntoIterator,
    F: FnMut(Self::Item) -> U,
 
fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>where Self: Sized, U: IntoIterator, F: FnMut(Self::Item) -> U,
1.0.0 · source§fn inspect<F>(self, f: F) -> Inspect<Self, F>where
    Self: Sized,
    F: FnMut(&Self::Item),
 
fn inspect<F>(self, f: F) -> Inspect<Self, F>where Self: Sized, F: FnMut(&Self::Item),
1.0.0 · source§fn by_ref(&mut self) -> &mut Selfwhere
    Self: Sized,
 
fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,
source§fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere
    E: Extend<Self::Item>,
    Self: Sized,
 
fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere E: Extend<Self::Item>, Self: Sized,
iter_collect_into)source§fn is_partitioned<P>(self, predicate: P) -> boolwhere
    Self: Sized,
    P: FnMut(Self::Item) -> bool,
 
fn is_partitioned<P>(self, predicate: P) -> boolwhere Self: Sized, P: FnMut(Self::Item) -> bool,
iter_is_partitioned)true precede all those that return false. Read more1.27.0 · source§fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(B, Self::Item) -> R,
    R: Try<Output = B>,
 
fn try_fold<B, F, R>(&mut self, init: B, f: F) -> Rwhere Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Output = B>,
1.27.0 · source§fn try_for_each<F, R>(&mut self, f: F) -> Rwhere
    Self: Sized,
    F: FnMut(Self::Item) -> R,
    R: Try<Output = ()>,
 
fn try_for_each<F, R>(&mut self, f: F) -> Rwhere Self: Sized, F: FnMut(Self::Item) -> R, R: Try<Output = ()>,
1.51.0 · source§fn reduce<F>(self, f: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(Self::Item, Self::Item) -> Self::Item,
 
fn reduce<F>(self, f: F) -> Option<Self::Item>where Self: Sized, F: FnMut(Self::Item, Self::Item) -> Self::Item,
source§fn try_reduce<F, R>(
    &mut self,
    f: F
) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere
    Self: Sized,
    F: FnMut(Self::Item, Self::Item) -> R,
    R: Try<Output = Self::Item>,
    <R as Try>::Residual: Residual<Option<Self::Item>>,
 
fn try_reduce<F, R>( &mut self, f: F ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryTypewhere Self: Sized, F: FnMut(Self::Item, Self::Item) -> R, R: Try<Output = Self::Item>, <R as Try>::Residual: Residual<Option<Self::Item>>,
iterator_try_reduce)source§fn try_find<F, R>(
    &mut self,
    f: F
) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere
    Self: Sized,
    F: FnMut(&Self::Item) -> R,
    R: Try<Output = bool>,
    <R as Try>::Residual: Residual<Option<Self::Item>>,
 
fn try_find<F, R>( &mut self, f: F ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryTypewhere Self: Sized, F: FnMut(&Self::Item) -> R, R: Try<Output = bool>, <R as Try>::Residual: Residual<Option<Self::Item>>,
try_find)1.6.0 · source§fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where
    B: Ord,
    Self: Sized,
    F: FnMut(&Self::Item) -> B,
 
fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>where B: Ord, Self: Sized, F: FnMut(&Self::Item) -> B,
1.15.0 · source§fn max_by<F>(self, compare: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Ordering,
 
fn max_by<F>(self, compare: F) -> Option<Self::Item>where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.6.0 · source§fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where
    B: Ord,
    Self: Sized,
    F: FnMut(&Self::Item) -> B,
 
fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>where B: Ord, Self: Sized, F: FnMut(&Self::Item) -> B,
1.15.0 · source§fn min_by<F>(self, compare: F) -> Option<Self::Item>where
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Ordering,
 
fn min_by<F>(self, compare: F) -> Option<Self::Item>where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,
1.0.0 · source§fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where
    FromA: Default + Extend<A>,
    FromB: Default + Extend<B>,
    Self: Sized + Iterator<Item = (A, B)>,
 
fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)where FromA: Default + Extend<A>, FromB: Default + Extend<B>, Self: Sized + Iterator<Item = (A, B)>,
1.36.0 · source§fn copied<'a, T>(self) -> Copied<Self>where
    T: 'a + Copy,
    Self: Sized + Iterator<Item = &'a T>,
 
fn copied<'a, T>(self) -> Copied<Self>where T: 'a + Copy, Self: Sized + Iterator<Item = &'a T>,
1.0.0 · source§fn cloned<'a, T>(self) -> Cloned<Self>where
    T: 'a + Clone,
    Self: Sized + Iterator<Item = &'a T>,
 
fn cloned<'a, T>(self) -> Cloned<Self>where T: 'a + Clone, Self: Sized + Iterator<Item = &'a T>,
source§fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where
    Self: Sized,
 
fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where Self: Sized,
iter_array_chunks)N elements of the iterator at a time. Read more1.11.0 · source§fn sum<S>(self) -> Swhere
    Self: Sized,
    S: Sum<Self::Item>,
 
fn sum<S>(self) -> Swhere Self: Sized, S: Sum<Self::Item>,
1.11.0 · source§fn product<P>(self) -> Pwhere
    Self: Sized,
    P: Product<Self::Item>,
 
fn product<P>(self) -> Pwhere Self: Sized, P: Product<Self::Item>,
source§fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
 
fn cmp_by<I, F>(self, other: I, cmp: F) -> Orderingwhere Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
iter_order_by)Iterator with those
of another with respect to the specified comparison function. Read more1.5.0 · source§fn partial_cmp<I>(self, other: I) -> Option<Ordering>where
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn partial_cmp<I>(self, other: I) -> Option<Ordering>where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,
PartialOrd elements of
this Iterator with those of another. The comparison works like short-circuit
evaluation, returning a result without comparing the remaining elements.
As soon as an order can be determined, the evaluation stops and a result is returned. Read moresource§fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
 
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
iter_order_by)Iterator with those
of another with respect to the specified comparison function. Read more1.5.0 · source§fn eq<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialEq<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn eq<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,
source§fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere
    Self: Sized,
    I: IntoIterator,
    F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
 
fn eq_by<I, F>(self, other: I, eq: F) -> boolwhere Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
iter_order_by)1.5.0 · source§fn ne<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialEq<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn ne<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,
1.5.0 · source§fn lt<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn lt<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,
Iterator are lexicographically
less than those of another. Read more1.5.0 · source§fn le<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn le<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,
Iterator are lexicographically
less or equal to those of another. Read more1.5.0 · source§fn gt<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn gt<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,
Iterator are lexicographically
greater than those of another. Read more1.5.0 · source§fn ge<I>(self, other: I) -> boolwhere
    I: IntoIterator,
    Self::Item: PartialOrd<<I as IntoIterator>::Item>,
    Self: Sized,
 
fn ge<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,
Iterator are lexicographically
greater than or equal to those of another. Read moresource§fn is_sorted_by<F>(self, compare: F) -> boolwhere
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
 
fn is_sorted_by<F>(self, compare: F) -> boolwhere Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,
is_sorted)source§fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere
    Self: Sized,
    F: FnMut(Self::Item) -> K,
    K: PartialOrd<K>,
 
fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere Self: Sized, F: FnMut(Self::Item) -> K, K: PartialOrd<K>,
is_sorted)source§impl<L, R> Ord for Either<L, R>where
    L: Ord,
    R: Ord,
 
impl<L, R> Ord for Either<L, R>where L: Ord, R: Ord,
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
    Self: Sized,
 
fn max(self, other: Self) -> Selfwhere Self: Sized,
source§impl<L, R> PartialEq<Either<L, R>> for Either<L, R>where
    L: PartialEq<L>,
    R: PartialEq<R>,
 
impl<L, R> PartialEq<Either<L, R>> for Either<L, R>where L: PartialEq<L>, R: PartialEq<R>,
source§impl<L, R> PartialOrd<Either<L, R>> for Either<L, R>where
    L: PartialOrd<L>,
    R: PartialOrd<R>,
 
impl<L, R> PartialOrd<Either<L, R>> for Either<L, R>where L: PartialOrd<L>, R: PartialOrd<R>,
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
 
fn le(&self, other: &Rhs) -> bool
self and other) and is used by the <=
operator. Read moreimpl<L, R> Copy for Either<L, R>where L: Copy, R: Copy,
impl<L, R> Eq for Either<L, R>where L: Eq, R: Eq,
impl<L, R> FusedIterator for Either<L, R>where L: FusedIterator, R: FusedIterator<Item = <L as Iterator>::Item>,
impl<L, R> StructuralEq for Either<L, R>
impl<L, R> StructuralPartialEq for Either<L, R>
Auto Trait Implementations§
impl<L, R> RefUnwindSafe for Either<L, R>where L: RefUnwindSafe, R: RefUnwindSafe,
impl<L, R> Send for Either<L, R>where L: Send, R: Send,
impl<L, R> Sync for Either<L, R>where L: Sync, R: Sync,
impl<L, R> Unpin for Either<L, R>where L: Unpin, R: Unpin,
impl<L, R> UnwindSafe for Either<L, R>where L: UnwindSafe, R: UnwindSafe,
Blanket Implementations§
source§impl<F> IntoFuture for Fwhere
    F: Future,
 
impl<F> IntoFuture for Fwhere F: Future,
§type IntoFuture = F
 
type IntoFuture = F
source§fn into_future(self) -> <F as IntoFuture>::IntoFuture
 
fn into_future(self) -> <F as IntoFuture>::IntoFuture
source§impl<I> IntoIterator for Iwhere
    I: Iterator,
 
impl<I> IntoIterator for Iwhere I: Iterator,
source§impl<T> Itertools for Twhere
    T: Iterator + ?Sized,
 
impl<T> Itertools for Twhere T: Iterator + ?Sized,
source§fn interleave<J>(self, other: J) -> Interleave<Self, J::IntoIter> ⓘwhere
    J: IntoIterator<Item = Self::Item>,
    Self: Sized,
 
fn interleave<J>(self, other: J) -> Interleave<Self, J::IntoIter> ⓘwhere J: IntoIterator<Item = Self::Item>, Self: Sized,
source§fn interleave_shortest<J>(
    self,
    other: J
) -> InterleaveShortest<Self, J::IntoIter> ⓘwhere
    J: IntoIterator<Item = Self::Item>,
    Self: Sized,
 
fn interleave_shortest<J>( self, other: J ) -> InterleaveShortest<Self, J::IntoIter> ⓘwhere J: IntoIterator<Item = Self::Item>, Self: Sized,
source§fn intersperse(self, element: Self::Item) -> Intersperse<Self> ⓘwhere
    Self: Sized,
    Self::Item: Clone,
 
fn intersperse(self, element: Self::Item) -> Intersperse<Self> ⓘwhere Self: Sized, Self::Item: Clone,
source§fn zip_longest<J>(self, other: J) -> ZipLongest<Self, J::IntoIter> ⓘwhere
    J: IntoIterator,
    Self: Sized,
 
fn zip_longest<J>(self, other: J) -> ZipLongest<Self, J::IntoIter> ⓘwhere J: IntoIterator, Self: Sized,
source§fn zip_eq<J>(self, other: J) -> ZipEq<Self, J::IntoIter> ⓘwhere
    J: IntoIterator,
    Self: Sized,
 
fn zip_eq<J>(self, other: J) -> ZipEq<Self, J::IntoIter> ⓘwhere J: IntoIterator, Self: Sized,
source§fn batching<B, F>(self, f: F) -> Batching<Self, F> ⓘwhere
    F: FnMut(&mut Self) -> Option<B>,
    Self: Sized,
 
fn batching<B, F>(self, f: F) -> Batching<Self, F> ⓘwhere F: FnMut(&mut Self) -> Option<B>, Self: Sized,
source§fn group_by<K, F>(self, key: F) -> GroupBy<K, Self, F>where
    Self: Sized,
    F: FnMut(&Self::Item) -> K,
    K: PartialEq,
 
fn group_by<K, F>(self, key: F) -> GroupBy<K, Self, F>where Self: Sized, F: FnMut(&Self::Item) -> K, K: PartialEq,
source§fn chunks(self, size: usize) -> IntoChunks<Self>where
    Self: Sized,
 
fn chunks(self, size: usize) -> IntoChunks<Self>where Self: Sized,
source§fn tuple_windows<T>(self) -> TupleWindows<Self, T> ⓘwhere
    Self: Sized + Iterator<Item = T::Item>,
    T: HomogeneousTuple,
    T::Item: Clone,
 
fn tuple_windows<T>(self) -> TupleWindows<Self, T> ⓘwhere Self: Sized + Iterator<Item = T::Item>, T: HomogeneousTuple, T::Item: Clone,
source§fn tuples<T>(self) -> Tuples<Self, T> ⓘwhere
    Self: Sized + Iterator<Item = T::Item>,
    T: HomogeneousTuple,
 
fn tuples<T>(self) -> Tuples<Self, T> ⓘwhere Self: Sized + Iterator<Item = T::Item>, T: HomogeneousTuple,
source§fn tee(self) -> (Tee<Self>, Tee<Self>)where
    Self: Sized,
    Self::Item: Clone,
 
fn tee(self) -> (Tee<Self>, Tee<Self>)where Self: Sized, Self::Item: Clone,
source§fn step(self, n: usize) -> Step<Self> ⓘwhere
    Self: Sized,
 
fn step(self, n: usize) -> Step<Self> ⓘwhere Self: Sized,
n elements in the base iterator
for each iteration. Read moresource§fn map_into<R>(self) -> MapInto<Self, R> ⓘwhere
    Self: Sized,
    Self::Item: Into<R>,
 
fn map_into<R>(self) -> MapInto<Self, R> ⓘwhere Self: Sized, Self::Item: Into<R>,
Into trait. Read moresource§fn map_results<F, T, U, E>(self, f: F) -> MapResults<Self, F> ⓘwhere
    Self: Iterator<Item = Result<T, E>> + Sized,
    F: FnMut(T) -> U,
 
fn map_results<F, T, U, E>(self, f: F) -> MapResults<Self, F> ⓘwhere Self: Iterator<Item = Result<T, E>> + Sized, F: FnMut(T) -> U,
Result::Ok value. Result::Err values are
unchanged. Read moresource§fn merge<J>(self, other: J) -> Merge<Self, J::IntoIter>where
    Self: Sized,
    Self::Item: PartialOrd,
    J: IntoIterator<Item = Self::Item>,
 
fn merge<J>(self, other: J) -> Merge<Self, J::IntoIter>where Self: Sized, Self::Item: PartialOrd, J: IntoIterator<Item = Self::Item>,
source§fn merge_by<J, F>(self, other: J, is_first: F) -> MergeBy<Self, J::IntoIter, F> ⓘwhere
    Self: Sized,
    J: IntoIterator<Item = Self::Item>,
    F: FnMut(&Self::Item, &Self::Item) -> bool,
 
fn merge_by<J, F>(self, other: J, is_first: F) -> MergeBy<Self, J::IntoIter, F> ⓘwhere Self: Sized, J: IntoIterator<Item = Self::Item>, F: FnMut(&Self::Item, &Self::Item) -> bool,
.merge() but allows for a custom ordering. Read moresource§fn merge_join_by<J, F>(
    self,
    other: J,
    cmp_fn: F
) -> MergeJoinBy<Self, J::IntoIter, F> ⓘwhere
    J: IntoIterator,
    F: FnMut(&Self::Item, &J::Item) -> Ordering,
    Self: Sized,
 
fn merge_join_by<J, F>( self, other: J, cmp_fn: F ) -> MergeJoinBy<Self, J::IntoIter, F> ⓘwhere J: IntoIterator, F: FnMut(&Self::Item, &J::Item) -> Ordering, Self: Sized,
source§fn kmerge(self) -> KMerge<<Self::Item as IntoIterator>::IntoIter>where
    Self: Sized,
    Self::Item: IntoIterator,
    <Self::Item as IntoIterator>::Item: PartialOrd,
 
fn kmerge(self) -> KMerge<<Self::Item as IntoIterator>::IntoIter>where Self: Sized, Self::Item: IntoIterator, <Self::Item as IntoIterator>::Item: PartialOrd,
source§fn kmerge_by<F>(
    self,
    first: F
) -> KMergeBy<<Self::Item as IntoIterator>::IntoIter, F> ⓘwhere
    Self: Sized,
    Self::Item: IntoIterator,
    F: FnMut(&<Self::Item as IntoIterator>::Item, &<Self::Item as IntoIterator>::Item) -> bool,
 
fn kmerge_by<F>( self, first: F ) -> KMergeBy<<Self::Item as IntoIterator>::IntoIter, F> ⓘwhere Self: Sized, Self::Item: IntoIterator, F: FnMut(&<Self::Item as IntoIterator>::Item, &<Self::Item as IntoIterator>::Item) -> bool,
source§fn cartesian_product<J>(self, other: J) -> Product<Self, J::IntoIter> ⓘwhere
    Self: Sized,
    Self::Item: Clone,
    J: IntoIterator,
    J::IntoIter: Clone,
 
fn cartesian_product<J>(self, other: J) -> Product<Self, J::IntoIter> ⓘwhere Self: Sized, Self::Item: Clone, J: IntoIterator, J::IntoIter: Clone,
self and J. Read moresource§fn multi_cartesian_product(
    self
) -> MultiProduct<<Self::Item as IntoIterator>::IntoIter> ⓘwhere
    Self: Iterator + Sized,
    Self::Item: IntoIterator,
    <Self::Item as IntoIterator>::IntoIter: Clone,
    <Self::Item as IntoIterator>::Item: Clone,
 
fn multi_cartesian_product( self ) -> MultiProduct<<Self::Item as IntoIterator>::IntoIter> ⓘwhere Self: Iterator + Sized, Self::Item: IntoIterator, <Self::Item as IntoIterator>::IntoIter: Clone, <Self::Item as IntoIterator>::Item: Clone,
self. Read moresource§fn coalesce<F>(self, f: F) -> Coalesce<Self, F> ⓘwhere
    Self: Sized,
    F: FnMut(Self::Item, Self::Item) -> Result<Self::Item, (Self::Item, Self::Item)>,
 
fn coalesce<F>(self, f: F) -> Coalesce<Self, F> ⓘwhere Self: Sized, F: FnMut(Self::Item, Self::Item) -> Result<Self::Item, (Self::Item, Self::Item)>,
source§fn dedup(self) -> Dedup<Self>where
    Self: Sized,
    Self::Item: PartialEq,
 
fn dedup(self) -> Dedup<Self>where Self: Sized, Self::Item: PartialEq,
source§fn dedup_by<Cmp>(self, cmp: Cmp) -> DedupBy<Self, Cmp> ⓘwhere
    Self: Sized,
    Cmp: FnMut(&Self::Item, &Self::Item) -> bool,
 
fn dedup_by<Cmp>(self, cmp: Cmp) -> DedupBy<Self, Cmp> ⓘwhere Self: Sized, Cmp: FnMut(&Self::Item, &Self::Item) -> bool,
source§fn unique(self) -> Unique<Self> ⓘwhere
    Self: Sized,
    Self::Item: Clone + Eq + Hash,
 
fn unique(self) -> Unique<Self> ⓘwhere Self: Sized, Self::Item: Clone + Eq + Hash,
source§fn unique_by<V, F>(self, f: F) -> UniqueBy<Self, V, F> ⓘwhere
    Self: Sized,
    V: Eq + Hash,
    F: FnMut(&Self::Item) -> V,
 
fn unique_by<V, F>(self, f: F) -> UniqueBy<Self, V, F> ⓘwhere Self: Sized, V: Eq + Hash, F: FnMut(&Self::Item) -> V,
source§fn peeking_take_while<F>(&mut self, accept: F) -> PeekingTakeWhile<'_, Self, F> ⓘwhere
    Self: Sized + PeekingNext,
    F: FnMut(&Self::Item) -> bool,
 
fn peeking_take_while<F>(&mut self, accept: F) -> PeekingTakeWhile<'_, Self, F> ⓘwhere Self: Sized + PeekingNext, F: FnMut(&Self::Item) -> bool,
accept returns true. Read moresource§fn take_while_ref<F>(&mut self, accept: F) -> TakeWhileRef<'_, Self, F> ⓘwhere
    Self: Clone,
    F: FnMut(&Self::Item) -> bool,
 
fn take_while_ref<F>(&mut self, accept: F) -> TakeWhileRef<'_, Self, F> ⓘwhere Self: Clone, F: FnMut(&Self::Item) -> bool,
Clone-able iterator
to only pick off elements while the predicate accept returns true. Read moresource§fn while_some<A>(self) -> WhileSome<Self> ⓘwhere
    Self: Sized + Iterator<Item = Option<A>>,
 
fn while_some<A>(self) -> WhileSome<Self> ⓘwhere Self: Sized + Iterator<Item = Option<A>>,
Option<A> iterator elements
and produces A. Stops on the first None encountered. Read moresource§fn tuple_combinations<T>(self) -> TupleCombinations<Self, T> ⓘwhere
    Self: Sized + Clone,
    Self::Item: Clone,
    T: HasCombination<Self>,
 
fn tuple_combinations<T>(self) -> TupleCombinations<Self, T> ⓘwhere Self: Sized + Clone, Self::Item: Clone, T: HasCombination<Self>,
source§fn combinations(self, k: usize) -> Combinations<Self> ⓘwhere
    Self: Sized,
    Self::Item: Clone,
 
fn combinations(self, k: usize) -> Combinations<Self> ⓘwhere Self: Sized, Self::Item: Clone,
k-length combinations of
the elements from an iterator. Read moresource§fn combinations_with_replacement(
    self,
    k: usize
) -> CombinationsWithReplacement<Self> ⓘwhere
    Self: Sized,
    Self::Item: Clone,
 
fn combinations_with_replacement( self, k: usize ) -> CombinationsWithReplacement<Self> ⓘwhere Self: Sized, Self::Item: Clone,
k-length combinations of
the elements from an iterator, with replacement. Read moresource§fn permutations(self, k: usize) -> Permutations<Self> ⓘwhere
    Self: Sized,
    Self::Item: Clone,
 
fn permutations(self, k: usize) -> Permutations<Self> ⓘwhere Self: Sized, Self::Item: Clone,
source§fn pad_using<F>(self, min: usize, f: F) -> PadUsing<Self, F> ⓘwhere
    Self: Sized,
    F: FnMut(usize) -> Self::Item,
 
fn pad_using<F>(self, min: usize, f: F) -> PadUsing<Self, F> ⓘwhere Self: Sized, F: FnMut(usize) -> Self::Item,
min by filling missing elements using a closure f. Read moresource§fn with_position(self) -> WithPosition<Self> ⓘwhere
    Self: Sized,
 
fn with_position(self) -> WithPosition<Self> ⓘwhere Self: Sized,
Position to
ease special-case handling of the first or last elements. Read moresource§fn positions<P>(self, predicate: P) -> Positions<Self, P> ⓘwhere
    Self: Sized,
    P: FnMut(Self::Item) -> bool,
 
fn positions<P>(self, predicate: P) -> Positions<Self, P> ⓘwhere Self: Sized, P: FnMut(Self::Item) -> bool,
source§fn update<F>(self, updater: F) -> Update<Self, F> ⓘwhere
    Self: Sized,
    F: FnMut(&mut Self::Item),
 
fn update<F>(self, updater: F) -> Update<Self, F> ⓘwhere Self: Sized, F: FnMut(&mut Self::Item),
source§fn next_tuple<T>(&mut self) -> Option<T>where
    Self: Sized + Iterator<Item = T::Item>,
    T: HomogeneousTuple,
 
fn next_tuple<T>(&mut self) -> Option<T>where Self: Sized + Iterator<Item = T::Item>, T: HomogeneousTuple,
source§fn collect_tuple<T>(self) -> Option<T>where
    Self: Sized + Iterator<Item = T::Item>,
    T: HomogeneousTuple,
 
fn collect_tuple<T>(self) -> Option<T>where Self: Sized + Iterator<Item = T::Item>, T: HomogeneousTuple,
source§fn find_position<P>(&mut self, pred: P) -> Option<(usize, Self::Item)>where
    P: FnMut(&Self::Item) -> bool,
 
fn find_position<P>(&mut self, pred: P) -> Option<(usize, Self::Item)>where P: FnMut(&Self::Item) -> bool,
source§fn all_equal(&mut self) -> boolwhere
    Self: Sized,
    Self::Item: PartialEq,
 
fn all_equal(&mut self) -> boolwhere Self: Sized, Self::Item: PartialEq,
source§fn dropping(self, n: usize) -> Selfwhere
    Self: Sized,
 
fn dropping(self, n: usize) -> Selfwhere Self: Sized,
n elements from the iterator eagerly,
and return the same iterator again. Read moresource§fn dropping_back(self, n: usize) -> Selfwhere
    Self: Sized + DoubleEndedIterator,
 
fn dropping_back(self, n: usize) -> Selfwhere Self: Sized + DoubleEndedIterator,
n elements from the iterator eagerly,
and return the same iterator again. Read moresource§fn foreach<F>(self, f: F)where
    F: FnMut(Self::Item),
    Self: Sized,
 
fn foreach<F>(self, f: F)where F: FnMut(Self::Item), Self: Sized,
f eagerly on each element of the iterator. Read moresource§fn concat(self) -> Self::Itemwhere
    Self: Sized,
    Self::Item: Extend<<<Self as Iterator>::Item as IntoIterator>::Item> + IntoIterator + Default,
 
fn concat(self) -> Self::Itemwhere Self: Sized, Self::Item: Extend<<<Self as Iterator>::Item as IntoIterator>::Item> + IntoIterator + Default,
Extend. Read moresource§fn collect_vec(self) -> Vec<Self::Item>where
    Self: Sized,
 
fn collect_vec(self) -> Vec<Self::Item>where Self: Sized,
.collect_vec() is simply a type specialization of .collect(),
for convenience.source§fn try_collect<T, U, E>(self) -> Result<U, E>where
    Self: Sized + Iterator<Item = Result<T, E>>,
    Result<U, E>: FromIterator<Result<T, E>>,
 
fn try_collect<T, U, E>(self) -> Result<U, E>where Self: Sized + Iterator<Item = Result<T, E>>, Result<U, E>: FromIterator<Result<T, E>>,
source§fn set_from<'a, A: 'a, J>(&mut self, from: J) -> usizewhere
    Self: Iterator<Item = &'a mut A>,
    J: IntoIterator<Item = A>,
 
fn set_from<'a, A: 'a, J>(&mut self, from: J) -> usizewhere Self: Iterator<Item = &'a mut A>, J: IntoIterator<Item = A>,
self from the from iterator,
stopping at the shortest of the two iterators. Read moresource§fn join(&mut self, sep: &str) -> Stringwhere
    Self::Item: Display,
 
fn join(&mut self, sep: &str) -> Stringwhere Self::Item: Display,
sep. Read moresource§fn format(self, sep: &str) -> Format<'_, Self>where
    Self: Sized,
 
fn format(self, sep: &str) -> Format<'_, Self>where Self: Sized,
sep. Read moresource§fn format_with<F>(self, sep: &str, format: F) -> FormatWith<'_, Self, F>where
    Self: Sized,
    F: FnMut(Self::Item, &mut dyn FnMut(&dyn Display) -> Result) -> Result,
 
fn format_with<F>(self, sep: &str, format: F) -> FormatWith<'_, Self, F>where Self: Sized, F: FnMut(Self::Item, &mut dyn FnMut(&dyn Display) -> Result) -> Result,
sep. Read moresource§fn fold_results<A, E, B, F>(&mut self, start: B, f: F) -> Result<B, E>where
    Self: Iterator<Item = Result<A, E>>,
    F: FnMut(B, A) -> B,
 
fn fold_results<A, E, B, F>(&mut self, start: B, f: F) -> Result<B, E>where Self: Iterator<Item = Result<A, E>>, F: FnMut(B, A) -> B,
Result values from an iterator. Read moresource§fn fold_options<A, B, F>(&mut self, start: B, f: F) -> Option<B>where
    Self: Iterator<Item = Option<A>>,
    F: FnMut(B, A) -> B,
 
fn fold_options<A, B, F>(&mut self, start: B, f: F) -> Option<B>where Self: Iterator<Item = Option<A>>, F: FnMut(B, A) -> B,
Option values from an iterator. Read moresource§fn fold1<F>(self, f: F) -> Option<Self::Item>where
    F: FnMut(Self::Item, Self::Item) -> Self::Item,
    Self: Sized,
 
fn fold1<F>(self, f: F) -> Option<Self::Item>where F: FnMut(Self::Item, Self::Item) -> Self::Item, Self: Sized,
source§fn tree_fold1<F>(self, f: F) -> Option<Self::Item>where
    F: FnMut(Self::Item, Self::Item) -> Self::Item,
    Self: Sized,
 
fn tree_fold1<F>(self, f: F) -> Option<Self::Item>where F: FnMut(Self::Item, Self::Item) -> Self::Item, Self: Sized,
source§fn fold_while<B, F>(&mut self, init: B, f: F) -> FoldWhile<B>where
    Self: Sized,
    F: FnMut(B, Self::Item) -> FoldWhile<B>,
 
fn fold_while<B, F>(&mut self, init: B, f: F) -> FoldWhile<B>where Self: Sized, F: FnMut(B, Self::Item) -> FoldWhile<B>,
source§fn sum1<S>(self) -> Option<S>where
    Self: Sized,
    S: Sum<Self::Item>,
 
fn sum1<S>(self) -> Option<S>where Self: Sized, S: Sum<Self::Item>,
source§fn product1<P>(self) -> Option<P>where
    Self: Sized,
    P: Product<Self::Item>,
 
fn product1<P>(self) -> Option<P>where Self: Sized, P: Product<Self::Item>,
source§fn sorted(self) -> IntoIter<Self::Item>where
    Self: Sized,
    Self::Item: Ord,
 
fn sorted(self) -> IntoIter<Self::Item>where Self: Sized, Self::Item: Ord,
source§fn sorted_by<F>(self, cmp: F) -> IntoIter<Self::Item>where
    Self: Sized,
    F: FnMut(&Self::Item, &Self::Item) -> Ordering,
 
fn sorted_by<F>(self, cmp: F) -> IntoIter<Self::Item>where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,
source§fn sorted_by_key<K, F>(self, f: F) -> IntoIter<Self::Item>where
    Self: Sized,
    K: Ord,
    F: FnMut(&Self::Item) -> K,
 
fn sorted_by_key<K, F>(self, f: F) -> IntoIter<Self::Item>where Self: Sized, K: Ord, F: FnMut(&Self::Item) -> K,
source§fn partition_map<A, B, F, L, R>(self, predicate: F) -> (A, B)where
    Self: Sized,
    F: FnMut(Self::Item) -> Either<L, R>,
    A: Default + Extend<L>,
    B: Default + Extend<R>,
 
fn partition_map<A, B, F, L, R>(self, predicate: F) -> (A, B)where Self: Sized, F: FnMut(Self::Item) -> Either<L, R>, A: Default + Extend<L>, B: Default + Extend<R>,
Iterator::partition, each partition may
have a distinct type. Read moresource§fn into_group_map<K, V>(self) -> HashMap<K, Vec<V>>where
    Self: Iterator<Item = (K, V)> + Sized,
    K: Hash + Eq,
 
fn into_group_map<K, V>(self) -> HashMap<K, Vec<V>>where Self: Iterator<Item = (K, V)> + Sized, K: Hash + Eq,
HashMap of keys mapped to Vecs of values. Keys and values
are taken from (Key, Value) tuple pairs yielded by the input iterator. Read more