# Enum either::Either

``````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§

§

### Left(L)

A value of type `L`.

§

### Right(R)

A value of type `R`.

## Implementations§

source§

### impl<L, R> Either<L, R>

source

#### 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);``````
source

#### 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);``````
source

#### 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);``````
source

#### 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));``````
source

#### 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"));``````
source

#### 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));``````
source

#### pub fn as_pin_ref(self: Pin<&Self>) -> Either<Pin<&L>, Pin<&R>> ⓘ

Convert `Pin<&Either<L, R>>` to `Either<Pin<&L>, Pin<&R>>`, pinned projections of the inner variants.

source

#### pub fn as_pin_mut(self: Pin<&mut Self>) -> 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.

source

#### 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"));``````
source

#### 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));``````
source

#### 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));``````
source

#### pub fn map_either<F, G, M, S>(self, f: F, g: G) -> Either<M, S> ⓘwhere F: FnOnce(L) -> M, G: FnOnce(R) -> S,

Apply the functions `f` and `g` to the `Left` and `Right` variants respectively. This is equivalent to bimap in functional programming.

``````use either::*;

let f = |s: String| s.len();
let g = |u: u8| u.to_string();

let left: Either<String, u8> = Left("loopy".into());
assert_eq!(left.map_either(f, g), Left(5));

let right: Either<String, u8> = Right(42);
assert_eq!(right.map_either(f, g), Right("42".into()));``````
source

#### pub fn map_either_with<Ctx, F, G, M, S>( self, ctx: Ctx, f: F, g: G ) -> Either<M, S> ⓘwhere F: FnOnce(Ctx, L) -> M, G: FnOnce(Ctx, R) -> S,

Similar to [`map_either`], with an added context `ctx` accessible to both functions.

``````use either::*;

let mut sum = 0;

// Both closures want to update the same value, so pass it as context.
let mut f = |sum: &mut usize, s: String| { *sum += s.len(); s.to_uppercase() };
let mut g = |sum: &mut usize, u: usize| { *sum += u; u.to_string() };

let left: Either<String, usize> = Left("loopy".into());
assert_eq!(left.map_either_with(&mut sum, &mut f, &mut g), Left("LOOPY".into()));

let right: Either<String, usize> = Right(42);
assert_eq!(right.map_either_with(&mut sum, &mut f, &mut g), Right("42".into()));

assert_eq!(sum, 47);``````
source

#### 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);``````
source

#### 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]);``````
source

#### 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));``````
source

#### 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));``````
source

#### pub fn into_iter(self) -> Either<L::IntoIter, R::IntoIter> ⓘwhere L: IntoIterator, R: IntoIterator<Item = L::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]));``````
source

#### 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");``````
source

#### 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());``````
source

#### 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");``````
source

#### 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");``````
source

#### 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);``````
source

#### 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);``````
source

#### pub fn unwrap_left(self) -> Lwhere R: Debug,

Returns the left value

##### Examples
``````let left: Either<_, ()> = Left(3);
assert_eq!(left.unwrap_left(), 3);``````
##### Panics

When `Either` is a `Right` value

``````let right: Either<(), _> = Right(3);
right.unwrap_left();``````
source

#### pub fn unwrap_right(self) -> Rwhere L: Debug,

Returns the right value

##### Examples
``````let right: Either<(), _> = Right(3);
assert_eq!(right.unwrap_right(), 3);``````
##### Panics

When `Either` is a `Left` value

``````let left: Either<_, ()> = Left(3);
left.unwrap_right();``````
source

#### pub fn expect_left(self, msg: &str) -> Lwhere R: Debug,

Returns the left value

##### Examples
``````let left: Either<_, ()> = Left(3);
assert_eq!(left.expect_left("value was Right"), 3);``````
##### Panics

When `Either` is a `Right` value

``````let right: Either<(), _> = Right(3);
right.expect_left("value was Right");``````
source

#### pub fn expect_right(self, msg: &str) -> Rwhere L: Debug,

Returns the right value

##### Examples
``````let right: Either<(), _> = Right(3);
assert_eq!(right.expect_right("value was Left"), 3);``````
##### Panics

When `Either` is a `Left` value

``````let left: Either<_, ()> = Left(3);
left.expect_right("value was Right");``````
source

#### 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>>

source

#### 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>>

source

#### 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>>

source

#### 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)>

source

#### 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)>

source

#### 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>

source

#### 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);``````
source

#### pub fn map<F, M>(self, f: F) -> Either<M, M> ⓘwhere F: FnOnce(T) -> M,

Map `f` over the contained value and return the result in the corresponding variant.

``````use either::*;

let value: Either<_, i32> = Right(42);

let other = value.map(|x| x * 2);
assert_eq!(other, Right(84));``````

## Trait Implementations§

source§

### 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]

Converts this type into a mutable reference of the (usually inferred) input type.
source§

### impl<L, R> AsMut<CStr> for Either<L, R>where L: AsMut<CStr>, R: AsMut<CStr>,

Requires crate feature `use_std`.

source§

#### fn as_mut(&mut self) -> &mut CStr

Converts this type into a mutable reference of the (usually inferred) input type.
source§

### impl<L, R> AsMut<OsStr> for Either<L, R>where L: AsMut<OsStr>, R: AsMut<OsStr>,

Requires crate feature `use_std`.

source§

#### fn as_mut(&mut self) -> &mut OsStr

Converts this type into a mutable reference of the (usually inferred) input type.
source§

### impl<L, R> AsMut<Path> for Either<L, R>where L: AsMut<Path>, R: AsMut<Path>,

Requires crate feature `use_std`.

source§

#### fn as_mut(&mut self) -> &mut Path

Converts this type into a mutable reference of the (usually inferred) input type.
source§

### 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

Converts this type into a mutable reference of the (usually inferred) input type.
source§

### impl<L, R> AsMut<str> for Either<L, R>where L: AsMut<str>, R: AsMut<str>,

source§

#### fn as_mut(&mut self) -> &mut str

Converts this type into a mutable reference of the (usually inferred) input type.
source§

### impl<L, R, Target> AsRef<[Target]> for Either<L, R>where L: AsRef<[Target]>, R: AsRef<[Target]>,

source§

#### fn as_ref(&self) -> &[Target]

Converts this type into a shared reference of the (usually inferred) input type.
source§

### impl<L, R> AsRef<CStr> for Either<L, R>where L: AsRef<CStr>, R: AsRef<CStr>,

Requires crate feature `use_std`.

source§

#### fn as_ref(&self) -> &CStr

Converts this type into a shared reference of the (usually inferred) input type.
source§

### impl<L, R> AsRef<OsStr> for Either<L, R>where L: AsRef<OsStr>, R: AsRef<OsStr>,

Requires crate feature `use_std`.

source§

#### fn as_ref(&self) -> &OsStr

Converts this type into a shared reference of the (usually inferred) input type.
source§

### impl<L, R> AsRef<Path> for Either<L, R>where L: AsRef<Path>, R: AsRef<Path>,

Requires crate feature `use_std`.

source§

#### fn as_ref(&self) -> &Path

Converts this type into a shared reference of the (usually inferred) input type.
source§

### impl<L, R, Target> AsRef<Target> for Either<L, R>where L: AsRef<Target>, R: AsRef<Target>,

source§

#### fn as_ref(&self) -> &Target

Converts this type into a shared reference of the (usually inferred) input type.
source§

### impl<L, R> AsRef<str> for Either<L, R>where L: AsRef<str>, R: AsRef<str>,

source§

#### fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
source§

Requires crate feature `"use_std"`

source§

#### fn fill_buf(&mut self) -> Result<&[u8]>

Returns the contents of the internal buffer, filling it with more data from the inner reader if it is empty. Read more
source§

#### fn consume(&mut self, amt: usize)

Tells this buffer that `amt` bytes have been consumed from the buffer, so they should no longer be returned in calls to `read`. Read more
source§

#### fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize>

Read all bytes into `buf` until the delimiter `byte` or EOF is reached. Read more
source§

#### fn read_line(&mut self, buf: &mut String) -> Result<usize>

Read all bytes until a newline (the `0xA` byte) is reached, and append them to the provided `String` buffer. Read more
source§

#### fn has_data_left(&mut self) -> Result<bool, Error>

🔬This is a nightly-only experimental API. (`buf_read_has_data_left`)
Check if the underlying `Read` has any data left to be read. Read more
1.0.0 · source§

#### fn split(self, byte: u8) -> Split<Self>where Self: Sized,

Returns an iterator over the contents of this reader split on the byte `byte`. Read more
1.0.0 · source§

source§

### impl<L: Clone, R: Clone> Clone for Either<L, R>

source§

#### fn clone(&self) -> Self

Returns a copy of the value. Read more
source§

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more
source§

### impl<L: Debug, R: Debug> Debug for Either<L, R>

source§

#### fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

### impl<L, R> Deref for Either<L, R>where L: Deref, R: Deref<Target = L::Target>,

§

#### type Target = <L as Deref>::Target

The resulting type after dereferencing.
source§

#### fn deref(&self) -> &Self::Target

Dereferences the value.
source§

### impl<L, R> DerefMut for Either<L, R>where L: DerefMut, R: DerefMut<Target = L::Target>,

source§

#### fn deref_mut(&mut self) -> &mut Self::Target

Mutably dereferences the value.
source§

### impl<'de, L, R> Deserialize<'de> for Either<L, R>where L: Deserialize<'de>, R: Deserialize<'de>,

source§

#### fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

### impl<L, R> Display for Either<L, R>where L: Display, R: Display,

source§

#### fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

### impl<L, R> DoubleEndedIterator for Either<L, R>where L: DoubleEndedIterator, R: DoubleEndedIterator<Item = L::Item>,

source§

#### fn next_back(&mut self) -> Option<Self::Item>

Removes and returns an element from the end of the iterator. Read more
source§

#### fn rfold<Acc, G>(self, init: Acc, f: G) -> Accwhere G: FnMut(Acc, Self::Item) -> Acc,

An iterator method that reduces the iterator’s elements to a single, final value, starting from the back. Read more
source§

#### fn rfind<P>(&mut self, predicate: P) -> Option<Self::Item>where P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator from the back that satisfies a predicate. Read more
source§

#### fn advance_back_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (`iter_advance_by`)
Advances the iterator from the back by `n` elements. Read more
1.37.0 · source§

#### fn nth_back(&mut self, n: usize) -> Option<Self::Item>

Returns the `n`th element from the end of the iterator. Read more
1.27.0 · source§

#### fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> Rwhere Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Output = B>,

This is the reverse version of `Iterator::try_fold()`: it takes elements starting from the back of the iterator. Read more
source§

### impl<L, R> Error for Either<L, R>where L: Error, R: Error,

`Either` implements `Error` if both `L` and `R` implement it.

source§

#### fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

#### fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

#### fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

#### fn provide<'a>(&'a self, demand: &mut Demand<'a>)

🔬This is a nightly-only experimental API. (`error_generic_member_access`)
source§

### impl<L, R> ExactSizeIterator for Either<L, R>where L: ExactSizeIterator, R: ExactSizeIterator<Item = L::Item>,

source§

#### fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
source§

#### fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (`exact_size_is_empty`)
Returns `true` if the iterator is empty. Read more
source§

### 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>,

Extends a collection with the contents of an iterator. Read more
source§

#### fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (`extend_one`)
Extends a collection with exactly one element.
source§

#### fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (`extend_one`)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

### impl<L, R> From<Result<R, L>> for Either<L, R>

Convert from `Result` to `Either` with `Ok => Right` and `Err => Left`.

source§

#### fn from(r: Result<R, L>) -> Self

Converts to this type from the input type.
source§

### impl<L, R> Future for Either<L, R>where L: Future, R: Future<Output = L::Output>,

`Either<L, R>` is a future if both `L` and `R` are futures.

§

#### type Output = <L as Future>::Output

The type of value produced on completion.
source§

#### fn poll(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Self::Output>

Attempt to resolve the future to a final value, registering the current task for wakeup if the value is not yet available. Read more
source§

### impl<L: Hash, R: Hash> Hash for Either<L, R>

source§

#### fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given `Hasher`. Read more
1.3.0 · source§

#### fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given `Hasher`. Read more
source§

### impl<L, R> Into<Result<R, L>> for Either<L, R>

Convert from `Either` to `Result` with `Right => Ok` and `Left => Err`.

source§

#### fn into(self) -> Result<R, L>

Converts this type into the (usually inferred) input type.
source§

### impl<L, R> Iterator for Either<L, R>where L: Iterator, R: Iterator<Item = L::Item>,

`Either<L, R>` is an iterator if both `L` and `R` are iterators.

§

#### type Item = <L as Iterator>::Item

The type of the elements being iterated over.
source§

source§

#### fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
source§

#### fn fold<Acc, G>(self, init: Acc, f: G) -> Accwhere G: FnMut(Acc, Self::Item) -> Acc,

Folds every element into an accumulator by applying an operation, returning the final result. Read more
source§

#### fn for_each<F>(self, f: F)where F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
source§

#### fn count(self) -> usize

Consumes the iterator, counting the number of iterations and returning it. Read more
source§

#### fn last(self) -> Option<Self::Item>

Consumes the iterator, returning the last element. Read more
source§

#### fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the `n`th element of the iterator. Read more
source§

#### fn collect<B>(self) -> Bwhere B: FromIterator<Self::Item>,

Transforms an iterator into a collection. Read more
source§

#### fn partition<B, F>(self, f: F) -> (B, B)where B: Default + Extend<Self::Item>, F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

#### fn all<F>(&mut self, f: F) -> boolwhere F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
source§

#### fn any<F>(&mut self, f: F) -> boolwhere F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
source§

#### fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
source§

#### fn find_map<B, F>(&mut self, f: F) -> Option<B>where F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns the first non-none result. Read more
source§

#### fn position<P>(&mut self, predicate: P) -> Option<usize>where P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
source§

#### fn next_chunk<const N: usize>( &mut self ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>where Self: Sized,

🔬This is a nightly-only experimental API. (`iter_next_chunk`)
Advances the iterator and returns an array containing the next `N` values. Read more
source§

#### fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>

🔬This is a nightly-only experimental API. (`iter_advance_by`)
Advances the iterator by `n` elements. Read more
1.28.0 · source§

#### fn step_by(self, step: usize) -> StepBy<Self>where Self: Sized,

Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more
1.0.0 · source§

#### fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>where Self: Sized, U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

#### fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>where Self: Sized, U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

#### fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>where Self: Sized, G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (`iter_intersperse`)
Creates a new iterator which places an item generated by `separator` between adjacent items of the original iterator. Read more
1.0.0 · source§

#### fn map<B, F>(self, f: F) -> Map<Self, F>where Self: Sized, F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each element. Read more
1.0.0 · source§

#### fn filter<P>(self, predicate: P) -> Filter<Self, P>where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element should be yielded. Read more
1.0.0 · source§

#### fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>where Self: Sized, F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

#### fn enumerate(self) -> Enumerate<Self>where Self: Sized,

Creates an iterator which gives the current iteration count as well as the next value. Read more
1.0.0 · source§

#### fn peekable(self) -> Peekable<Self>where Self: Sized,

Creates an iterator which can use the `peek` and `peek_mut` methods to look at the next element of the iterator without consuming it. See their documentation for more information. Read more
1.0.0 · source§

#### fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator that `skip`s elements based on a predicate. Read more
1.0.0 · source§

#### fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

#### fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>where Self: Sized, P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

#### fn skip(self, n: usize) -> Skip<Self>where Self: Sized,

Creates an iterator that skips the first `n` elements. Read more
1.0.0 · source§

#### fn take(self, n: usize) -> Take<Self>where Self: Sized,

Creates an iterator that yields the first `n` elements, or fewer if the underlying iterator ends sooner. Read more
1.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>,

An iterator adapter which, like `fold`, holds internal state, but unlike `fold`, produces a new iterator. Read more
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,

Creates an iterator that works like map, but flattens nested structure. Read more
1.0.0 · source§

#### fn fuse(self) -> Fuse<Self>where Self: Sized,

Creates an iterator which ends after the first `None`. Read more
1.0.0 · source§

#### fn inspect<F>(self, f: F) -> Inspect<Self, F>where Self: Sized, F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

#### fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,

Borrows an iterator, rather than consuming it. Read more
source§

#### fn collect_into<E>(self, collection: &mut E) -> &mut Ewhere E: Extend<Self::Item>, Self: Sized,

🔬This is a nightly-only experimental API. (`iter_collect_into`)
Collects all the items from an iterator into a collection. Read more
source§

#### fn is_partitioned<P>(self, predicate: P) -> boolwhere Self: Sized, P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (`iter_is_partitioned`)
Checks if the elements of this iterator are partitioned according to the given predicate, such that all those that return `true` precede all those that return `false`. Read more
1.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>,

An iterator method that applies a function as long as it returns successfully, producing a single, final value. Read more
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 = ()>,

An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. Read more
1.51.0 · source§

#### fn reduce<F>(self, f: F) -> Option<Self::Item>where Self: Sized, F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing operation. Read more
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>>,

🔬This is a nightly-only experimental API. (`iterator_try_reduce`)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. Read more
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>>,

🔬This is a nightly-only experimental API. (`try_find`)
Applies function to the elements of iterator and returns the first true result or the first error. Read more
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,

Returns the element that gives the maximum value from the specified function. Read more
1.15.0 · source§

#### fn max_by<F>(self, compare: F) -> Option<Self::Item>where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the specified comparison function. Read more
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,

Returns the element that gives the minimum value from the specified function. Read more
1.15.0 · source§

#### fn min_by<F>(self, compare: F) -> Option<Self::Item>where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the specified comparison function. Read more
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)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

#### fn copied<'a, T>(self) -> Copied<Self>where T: 'a + Copy, Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

#### fn cloned<'a, T>(self) -> Cloned<Self>where T: 'a + Clone, Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which `clone`s all of its elements. Read more
source§

#### fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>where Self: Sized,

🔬This is a nightly-only experimental API. (`iter_array_chunks`)
Returns an iterator over `N` elements of the iterator at a time. Read more
1.11.0 · source§

#### fn sum<S>(self) -> Swhere Self: Sized, S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

#### fn product<P>(self) -> Pwhere Self: Sized, P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
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,

🔬This is a nightly-only experimental API. (`iter_order_by`)
Lexicographically compares the elements of this `Iterator` with those of another with respect to the specified comparison function. Read more
1.5.0 · source§

#### fn partial_cmp<I>(self, other: I) -> Option<Ordering>where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Lexicographically compares the `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 more
source§

#### 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>,

🔬This is a nightly-only experimental API. (`iter_order_by`)
Lexicographically compares the elements of this `Iterator` with those of another with respect to the specified comparison function. Read more
1.5.0 · source§

#### fn eq<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this `Iterator` are equal to those of another. Read more
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,

🔬This is a nightly-only experimental API. (`iter_order_by`)
Determines if the elements of this `Iterator` are equal to those of another with respect to the specified equality function. Read more
1.5.0 · source§

#### fn ne<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this `Iterator` are not equal to those of another. Read more
1.5.0 · source§

#### fn lt<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this `Iterator` are lexicographically less than those of another. Read more
1.5.0 · source§

#### fn le<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this `Iterator` are lexicographically less or equal to those of another. Read more
1.5.0 · source§

#### fn gt<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this `Iterator` are lexicographically greater than those of another. Read more
1.5.0 · source§

#### fn ge<I>(self, other: I) -> boolwhere I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this `Iterator` are lexicographically greater than or equal to those of another. Read more
source§

#### fn is_sorted_by<F>(self, compare: F) -> boolwhere Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (`is_sorted`)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

#### fn is_sorted_by_key<F, K>(self, f: F) -> boolwhere Self: Sized, F: FnMut(Self::Item) -> K, K: PartialOrd<K>,

🔬This is a nightly-only experimental API. (`is_sorted`)
Checks if the elements of this iterator are sorted using the given key extraction function. Read more
source§

### impl<L: Ord, R: Ord> Ord for Either<L, R>

source§

#### fn cmp(&self, other: &Either<L, R>) -> Ordering

This method returns an `Ordering` between `self` and `other`. Read more
1.21.0 · source§

#### fn max(self, other: Self) -> Selfwhere Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

#### fn min(self, other: Self) -> Selfwhere Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

#### fn clamp(self, min: Self, max: Self) -> Selfwhere Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

### impl<L: PartialEq, R: PartialEq> PartialEq<Either<L, R>> for Either<L, R>

source§

#### fn eq(&self, other: &Either<L, R>) -> bool

This method tests for `self` and `other` values to be equal, and is used by `==`.
1.0.0 · source§

#### fn ne(&self, other: &Rhs) -> bool

This method tests for `!=`. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

### impl<L: PartialOrd, R: PartialOrd> PartialOrd<Either<L, R>> for Either<L, R>

source§

#### fn partial_cmp(&self, other: &Either<L, R>) -> Option<Ordering>

This method returns an ordering between `self` and `other` values if one exists. Read more
1.0.0 · source§

#### fn lt(&self, other: &Rhs) -> bool

This method tests less than (for `self` and `other`) and is used by the `<` operator. Read more
1.0.0 · source§

#### fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for `self` and `other`) and is used by the `<=` operator. Read more
1.0.0 · source§

#### fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for `self` and `other`) and is used by the `>` operator. Read more
1.0.0 · source§

#### fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for `self` and `other`) and is used by the `>=` operator. Read more
source§

`Either<L, R>` implements `Read` if both `L` and `R` do.

Requires crate feature `"use_std"`

source§

#### fn read(&mut self, buf: &mut [u8]) -> Result<usize>

Pull some bytes from this source into the specified buffer, returning how many bytes were read. Read more
source§

#### fn read_exact(&mut self, buf: &mut [u8]) -> Result<()>

Read the exact number of bytes required to fill `buf`. Read more
source§

#### fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>

Read all bytes until EOF in this source, placing them into `buf`. Read more
source§

#### fn read_to_string(&mut self, buf: &mut String) -> Result<usize>

Read all bytes until EOF in this source, appending them to `buf`. Read more
1.36.0 · source§

#### fn read_vectored(&mut self, bufs: &mut [IoSliceMut<'_>]) -> Result<usize, Error>

Like `read`, except that it reads into a slice of buffers. Read more
source§

🔬This is a nightly-only experimental API. (`can_vector`)
Determines if this `Read`er has an efficient `read_vectored` implementation. Read more
source§

#### fn read_buf(&mut self, buf: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (`read_buf`)
Pull some bytes from this source into the specified buffer. Read more
source§

#### fn read_buf_exact(&mut self, cursor: BorrowedCursor<'_>) -> Result<(), Error>

🔬This is a nightly-only experimental API. (`read_buf`)
Read the exact number of bytes required to fill `cursor`. Read more
1.0.0 · source§

#### fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,

Creates a “by reference” adaptor for this instance of `Read`. Read more
1.0.0 · source§

#### fn bytes(self) -> Bytes<Self>where Self: Sized,

Transforms this `Read` instance to an `Iterator` over its bytes. Read more
1.0.0 · source§

#### fn chain<R>(self, next: R) -> Chain<Self, R>where R: Read, Self: Sized,

Creates an adapter which will chain this stream with another. Read more
1.0.0 · source§

#### fn take(self, limit: u64) -> Take<Self>where Self: Sized,

Creates an adapter which will read at most `limit` bytes from it. Read more
source§

### impl<L, R> Seek for Either<L, R>where L: Seek, R: Seek,

`Either<L, R>` implements `Seek` if both `L` and `R` do.

Requires crate feature `"use_std"`

source§

#### fn seek(&mut self, pos: SeekFrom) -> Result<u64>

Seek to an offset, in bytes, in a stream. Read more
1.55.0 · source§

#### fn rewind(&mut self) -> Result<(), Error>

Rewind to the beginning of a stream. Read more
source§

#### fn stream_len(&mut self) -> Result<u64, Error>

🔬This is a nightly-only experimental API. (`seek_stream_len`)
Returns the length of this stream (in bytes). Read more
1.51.0 · source§

#### fn stream_position(&mut self) -> Result<u64, Error>

Returns the current seek position from the start of the stream. Read more
source§

### impl<L, R> Serialize for Either<L, R>where L: Serialize, R: Serialize,

source§

#### fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

### impl<L, R> Write for Either<L, R>where L: Write, R: Write,

`Either<L, R>` implements `Write` if both `L` and `R` do.

Requires crate feature `"use_std"`

source§

#### fn write(&mut self, buf: &[u8]) -> Result<usize>

Write a buffer into this writer, returning how many bytes were written. Read more
source§

#### fn write_all(&mut self, buf: &[u8]) -> Result<()>

Attempts to write an entire buffer into this writer. Read more
source§

#### fn write_fmt(&mut self, fmt: Arguments<'_>) -> Result<()>

Writes a formatted string into this writer, returning any error encountered. Read more
source§

#### fn flush(&mut self) -> Result<()>

Flush this output stream, ensuring that all intermediately buffered contents reach their destination. Read more
1.36.0 · source§

#### fn write_vectored(&mut self, bufs: &[IoSlice<'_>]) -> Result<usize, Error>

Like `write`, except that it writes from a slice of buffers. Read more
source§

#### fn is_write_vectored(&self) -> bool

🔬This is a nightly-only experimental API. (`can_vector`)
Determines if this `Write`r has an efficient `write_vectored` implementation. Read more
source§

#### fn write_all_vectored(&mut self, bufs: &mut [IoSlice<'_>]) -> Result<(), Error>

🔬This is a nightly-only experimental API. (`write_all_vectored`)
Attempts to write multiple buffers into this writer. Read more
1.0.0 · source§

#### fn by_ref(&mut self) -> &mut Selfwhere Self: Sized,

Creates a “by reference” adapter for this instance of `Write`. Read more
source§

source§

source§

source§

source§

§

§

§

§

§

## Blanket Implementations§

source§

### impl<T> Any for Twhere T: 'static + ?Sized,

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
source§

### impl<T> Borrow<T> for Twhere T: ?Sized,

source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

### impl<T> From<T> for T

source§

#### fn from(t: T) -> T

Returns the argument unchanged.

source§

### impl<T, U> Into<U> for Twhere U: From<T>,

source§

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source§

### impl<F> IntoFuture for Fwhere F: Future,

§

#### type Output = <F as Future>::Output

The output that the future will produce on completion.
§

#### type IntoFuture = F

Which kind of future are we turning this into?
source§

#### fn into_future(self) -> <F as IntoFuture>::IntoFuture

Creates a future from a value. Read more
source§

### impl<I> IntoIterator for Iwhere I: Iterator,

§

#### type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

#### type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

#### fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

### impl<E> Provider for Ewhere E: Error + ?Sized,

source§

#### fn provide<'a>(&'a self, demand: &mut Demand<'a>)

🔬This is a nightly-only experimental API. (`provide_any`)
Data providers should implement this method to provide all values they are able to provide by using `demand`. Read more
source§

### impl<T> ToOwned for Twhere T: Clone,

§

#### type Owned = T

The resulting type after obtaining ownership.
source§

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

### impl<T> ToString for Twhere T: Display + ?Sized,

source§

#### default fn to_string(&self) -> String

Converts the given value to a `String`. Read more
source§

### impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

#### type Error = Infallible

The type returned in the event of a conversion error.
source§

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

### impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§