Struct proc_macro_utils::TokenParser
source · pub struct TokenParser<T: Iterator<Item = TokenTree>> { /* private fields */ }
Expand description
Wrapper for TokenStream::into_iter
allowing not only to iterate on
tokens but also to parse simple structures like types or expressions, though
it does not make any claims about their correctness.
let mut token_parser = TokenParser::from(quote! {a + b, c});
assert_tokens!(token_parser.next_expression().unwrap(), { a + b });
Implementations§
source§impl<I> TokenParser<I>where
I: Iterator<Item = TokenTree>,
impl<I> TokenParser<I>where I: Iterator<Item = TokenTree>,
sourcepub fn new<T: IntoIterator<Item = TokenTree, IntoIter = I>>(value: T) -> Self
pub fn new<T: IntoIterator<Item = TokenTree, IntoIter = I>>(value: T) -> Self
Creates a new TokenParser
from a TokenTree
iterator.
source§impl<T: Iterator<Item = TokenTree>> TokenParser<T>
impl<T: Iterator<Item = TokenTree>> TokenParser<T>
Some Iterator utilities
sourcepub fn next_if(
&mut self,
test: impl FnOnce(&TokenTree) -> bool
) -> Option<TokenTree>
pub fn next_if( &mut self, test: impl FnOnce(&TokenTree) -> bool ) -> Option<TokenTree>
Returns the next token if it fulfills the condition otherwise returns None and doesn’t advance the parser
sourcepub fn next_if_each<P: Peeker<T>>(&mut self, tests: P) -> Option<TokenStream>
pub fn next_if_each<P: Peeker<T>>(&mut self, tests: P) -> Option<TokenStream>
Returns the next tokens (up to 3) if they fulfill the conditions otherwise returns None and doesn’t advance the parser
sourcepub fn next_while(
&mut self,
test: impl FnMut(&TokenTree) -> bool
) -> Option<TokenStream>
pub fn next_while( &mut self, test: impl FnMut(&TokenTree) -> bool ) -> Option<TokenStream>
Returns all tokens while test
evaluates to true.
Returns None
if empty or test(first_token) == false
sourcepub fn next_until(
&mut self,
test: impl FnMut(&TokenTree) -> bool
) -> Option<TokenStream>
pub fn next_until( &mut self, test: impl FnMut(&TokenTree) -> bool ) -> Option<TokenStream>
Returns all tokens while test
evaluates to false.
Returns None
if empty or test(first_token) == true
.
source§impl<T: Iterator<Item = TokenTree>> TokenParser<T>
impl<T: Iterator<Item = TokenTree>> TokenParser<T>
sourcepub fn into_token_stream(self) -> TokenStream
pub fn into_token_stream(self) -> TokenStream
Collects remaining tokens back into a TokenStream
sourcepub fn next_punctuation_group(&mut self) -> Option<TokenStream>
pub fn next_punctuation_group(&mut self) -> Option<TokenStream>
Returns the next group of punctuation with Punct::spacing
Spacing::Joint
sourcepub fn next_type(&mut self) -> Option<TokenStream>
pub fn next_type(&mut self) -> Option<TokenStream>
“Parses” a type expression
This just means it collects all the tokens that should belong to the type, until it reaches either:
- a
;
- a
,
or>
and all<>
pairs are closed - the end of the token stream
If the token stream is empty, or starts with ,
, >
or ;
None
is
returned otherwise, Some(TokenStream)
containing
every token up to but excluding the terminator.
let mut tokens = TokenParser::from(quote! {A<Test, B>, remainder});
assert_tokens!(tokens.next_type().unwrap(), { A<Test, B> });
assert!(tokens.next_type().is_none());
assert_tokens!(tokens, { , remainder });
sourcepub fn next_expression(&mut self) -> Option<TokenStream>
pub fn next_expression(&mut self) -> Option<TokenStream>
“Parses” an expression
This just means it collects all the tokens that should belong to the expression, until it reaches either:
- a
;
- a
,
outside a type - the end of the token stream
If the token stream is empty, or starts with ,
or ;
None
is
returned otherwise, Some(TokenStream)
containing
every token up to but excluding the terminator.
let mut tokens = TokenParser::from(quote! {A + c ::<a, b>::a < b, next_token});
assert_tokens!(tokens.next_expression().unwrap(), { A + c::<a, b>::a < b });
assert!(tokens.next_expression().is_none());
assert_tokens!(tokens, { , next_token });
sourcepub fn next_string(&mut self) -> Option<String>
pub fn next_string(&mut self) -> Option<String>
Returns the next string literal
source§impl<T: Iterator<Item = TokenTree>> TokenParser<T>
impl<T: Iterator<Item = TokenTree>> TokenParser<T>
sourcepub fn next_group(&mut self) -> Option<Group>
pub fn next_group(&mut self) -> Option<Group>
Returns the next token if it is a Group
sourcepub fn next_ident(&mut self) -> Option<Ident>
pub fn next_ident(&mut self) -> Option<Ident>
Returns the next token if it is an Ident
sourcepub fn next_punct(&mut self) -> Option<Punct>
pub fn next_punct(&mut self) -> Option<Punct>
Returns the next token if it is a Punct
sourcepub fn next_literal(&mut self) -> Option<Literal>
pub fn next_literal(&mut self) -> Option<Literal>
Returns the next token if it is a Literal
sourcepub fn next_parenthesized(&mut self) -> Option<TokenStream>
pub fn next_parenthesized(&mut self) -> Option<TokenStream>
Returns the next parenthesized group
sourcepub fn next_braced(&mut self) -> Option<TokenStream>
pub fn next_braced(&mut self) -> Option<TokenStream>
Returns the next braced group
sourcepub fn next_bracketed(&mut self) -> Option<TokenStream>
pub fn next_bracketed(&mut self) -> Option<TokenStream>
Returns the next bracketed group
source§impl<T: Iterator<Item = TokenTree>> TokenParser<T>
impl<T: Iterator<Item = TokenTree>> TokenParser<T>
For now the naming of the tokens follow the names used in the
rust reference
even though they diverge from the names used at TokenTreePunct
.
Note that they only match the token with correct spacing, i.e.
next_plus
will match + =
and +a
but not +=
.
sourcepub fn next_plus(&mut self) -> Option<TokenStream>
pub fn next_plus(&mut self) -> Option<TokenStream>
Returns the next token if it is a +
sourcepub fn next_minus(&mut self) -> Option<TokenStream>
pub fn next_minus(&mut self) -> Option<TokenStream>
Returns the next token if it is a -
sourcepub fn next_star(&mut self) -> Option<TokenStream>
pub fn next_star(&mut self) -> Option<TokenStream>
Returns the next token if it is a *
sourcepub fn next_slash(&mut self) -> Option<TokenStream>
pub fn next_slash(&mut self) -> Option<TokenStream>
Returns the next token if it is a /
sourcepub fn next_percent(&mut self) -> Option<TokenStream>
pub fn next_percent(&mut self) -> Option<TokenStream>
Returns the next token if it is a %
sourcepub fn next_caret(&mut self) -> Option<TokenStream>
pub fn next_caret(&mut self) -> Option<TokenStream>
Returns the next token if it is a ^
sourcepub fn next_not(&mut self) -> Option<TokenStream>
pub fn next_not(&mut self) -> Option<TokenStream>
Returns the next token if it is a !
sourcepub fn next_and(&mut self) -> Option<TokenStream>
pub fn next_and(&mut self) -> Option<TokenStream>
Returns the next token if it is a &
sourcepub fn next_or(&mut self) -> Option<TokenStream>
pub fn next_or(&mut self) -> Option<TokenStream>
Returns the next token if it is a |
sourcepub fn next_and_and(&mut self) -> Option<TokenStream>
pub fn next_and_and(&mut self) -> Option<TokenStream>
Returns the next token if it is a &&
sourcepub fn next_or_or(&mut self) -> Option<TokenStream>
pub fn next_or_or(&mut self) -> Option<TokenStream>
Returns the next token if it is a ||
sourcepub fn next_shl(&mut self) -> Option<TokenStream>
pub fn next_shl(&mut self) -> Option<TokenStream>
Returns the next token if it is a <<
sourcepub fn next_shr(&mut self) -> Option<TokenStream>
pub fn next_shr(&mut self) -> Option<TokenStream>
Returns the next token if it is a >>
sourcepub fn next_plus_eq(&mut self) -> Option<TokenStream>
pub fn next_plus_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a +=
sourcepub fn next_minus_eq(&mut self) -> Option<TokenStream>
pub fn next_minus_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a -=
sourcepub fn next_star_eq(&mut self) -> Option<TokenStream>
pub fn next_star_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a *=
sourcepub fn next_slash_eq(&mut self) -> Option<TokenStream>
pub fn next_slash_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a /=
sourcepub fn next_percent_eq(&mut self) -> Option<TokenStream>
pub fn next_percent_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a %=
sourcepub fn next_caret_eq(&mut self) -> Option<TokenStream>
pub fn next_caret_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a ^=
sourcepub fn next_and_eq(&mut self) -> Option<TokenStream>
pub fn next_and_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a &=
sourcepub fn next_or_eq(&mut self) -> Option<TokenStream>
pub fn next_or_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a |=
sourcepub fn next_shl_eq(&mut self) -> Option<TokenStream>
pub fn next_shl_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a <<=
sourcepub fn next_shr_eq(&mut self) -> Option<TokenStream>
pub fn next_shr_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a >>=
sourcepub fn next_eq(&mut self) -> Option<TokenStream>
pub fn next_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a =
sourcepub fn next_eq_eq(&mut self) -> Option<TokenStream>
pub fn next_eq_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a ==
sourcepub fn next_ne(&mut self) -> Option<TokenStream>
pub fn next_ne(&mut self) -> Option<TokenStream>
Returns the next token if it is a !=
sourcepub fn next_gt(&mut self) -> Option<TokenStream>
pub fn next_gt(&mut self) -> Option<TokenStream>
Returns the next token if it is a >
sourcepub fn next_lt(&mut self) -> Option<TokenStream>
pub fn next_lt(&mut self) -> Option<TokenStream>
Returns the next token if it is a <
sourcepub fn next_ge(&mut self) -> Option<TokenStream>
pub fn next_ge(&mut self) -> Option<TokenStream>
Returns the next token if it is a >=
sourcepub fn next_le(&mut self) -> Option<TokenStream>
pub fn next_le(&mut self) -> Option<TokenStream>
Returns the next token if it is a <=
sourcepub fn next_at(&mut self) -> Option<TokenStream>
pub fn next_at(&mut self) -> Option<TokenStream>
Returns the next token if it is a @
sourcepub fn next_dot(&mut self) -> Option<TokenStream>
pub fn next_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a .
sourcepub fn next_dot_dot(&mut self) -> Option<TokenStream>
pub fn next_dot_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a ..
sourcepub fn next_dot_dot_dot(&mut self) -> Option<TokenStream>
pub fn next_dot_dot_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a ...
sourcepub fn next_dot_dot_eq(&mut self) -> Option<TokenStream>
pub fn next_dot_dot_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a ..=
sourcepub fn next_comma(&mut self) -> Option<TokenStream>
pub fn next_comma(&mut self) -> Option<TokenStream>
Returns the next token if it is a ,
sourcepub fn next_semi(&mut self) -> Option<TokenStream>
pub fn next_semi(&mut self) -> Option<TokenStream>
Returns the next token if it is a ;
sourcepub fn next_colon(&mut self) -> Option<TokenStream>
pub fn next_colon(&mut self) -> Option<TokenStream>
Returns the next token if it is a :
sourcepub fn next_path_sep(&mut self) -> Option<TokenStream>
pub fn next_path_sep(&mut self) -> Option<TokenStream>
Returns the next token if it is a ::
sourcepub fn next_r_arrow(&mut self) -> Option<TokenStream>
pub fn next_r_arrow(&mut self) -> Option<TokenStream>
Returns the next token if it is a ->
sourcepub fn next_fat_arrow(&mut self) -> Option<TokenStream>
pub fn next_fat_arrow(&mut self) -> Option<TokenStream>
Returns the next token if it is a =>
sourcepub fn next_pound(&mut self) -> Option<TokenStream>
pub fn next_pound(&mut self) -> Option<TokenStream>
Returns the next token if it is a #
sourcepub fn next_dollar(&mut self) -> Option<TokenStream>
pub fn next_dollar(&mut self) -> Option<TokenStream>
Returns the next token if it is a $
sourcepub fn next_question(&mut self) -> Option<TokenStream>
pub fn next_question(&mut self) -> Option<TokenStream>
Returns the next token if it is a ?
sourcepub fn next_tilde(&mut self) -> Option<TokenStream>
pub fn next_tilde(&mut self) -> Option<TokenStream>
Returns the next token if it is a ~
Trait Implementations§
source§impl<T, I> From<T> for TokenParser<I>where
T: IntoIterator<Item = TokenTree, IntoIter = I>,
I: Iterator<Item = TokenTree>,
impl<T, I> From<T> for TokenParser<I>where T: IntoIterator<Item = TokenTree, IntoIter = I>, I: Iterator<Item = TokenTree>,
source§impl<I: Iterator<Item = TokenTree>> From<TokenParser<I>> for TokenStream
impl<I: Iterator<Item = TokenTree>> From<TokenParser<I>> for TokenStream
source§fn from(value: TokenParser<I>) -> Self
fn from(value: TokenParser<I>) -> Self
source§impl<T: Iterator<Item = TokenTree>> Iterator for TokenParser<T>
impl<T: Iterator<Item = TokenTree>> Iterator for TokenParser<T>
source§fn next(&mut self) -> Option<Self::Item>
fn next(&mut self) -> Option<Self::Item>
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 more1.0.0 · source§fn size_hint(&self) -> (usize, Option<usize>)
fn size_hint(&self) -> (usize, Option<usize>)
1.0.0 · source§fn count(self) -> usizewhere
Self: Sized,
fn count(self) -> usizewhere Self: Sized,
1.0.0 · source§fn last(self) -> Option<Self::Item>where
Self: Sized,
fn last(self) -> Option<Self::Item>where Self: Sized,
source§fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>
fn advance_by(&mut self, n: usize) -> Result<(), NonZeroUsize>
iter_advance_by
)n
elements. Read more1.0.0 · source§fn nth(&mut self, n: usize) -> Option<Self::Item>
fn nth(&mut self, n: usize) -> Option<Self::Item>
n
th element of the iterator. 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.21.0 · source§fn for_each<F>(self, f: F)where
Self: Sized,
F: FnMut(Self::Item),
fn for_each<F>(self, f: F)where Self: Sized, F: FnMut(Self::Item),
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,
1.0.0 · source§fn collect<B>(self) -> Bwhere
B: FromIterator<Self::Item>,
Self: Sized,
fn collect<B>(self) -> Bwhere B: FromIterator<Self::Item>, 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
)1.0.0 · source§fn partition<B, F>(self, f: F) -> (B, B)where
Self: Sized,
B: Default + Extend<Self::Item>,
F: FnMut(&Self::Item) -> bool,
fn partition<B, F>(self, f: F) -> (B, B)where Self: Sized, B: Default + Extend<Self::Item>, F: FnMut(&Self::Item) -> bool,
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.0.0 · source§fn fold<B, F>(self, init: B, f: F) -> Bwhere
Self: Sized,
F: FnMut(B, Self::Item) -> B,
fn fold<B, F>(self, init: B, f: F) -> Bwhere Self: Sized, F: FnMut(B, Self::Item) -> B,
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
)1.0.0 · source§fn all<F>(&mut self, f: F) -> boolwhere
Self: Sized,
F: FnMut(Self::Item) -> bool,
fn all<F>(&mut self, f: F) -> boolwhere Self: Sized, F: FnMut(Self::Item) -> bool,
1.0.0 · source§fn any<F>(&mut self, f: F) -> boolwhere
Self: Sized,
F: FnMut(Self::Item) -> bool,
fn any<F>(&mut self, f: F) -> boolwhere Self: Sized, F: FnMut(Self::Item) -> bool,
1.0.0 · source§fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where
Self: Sized,
P: FnMut(&Self::Item) -> bool,
fn find<P>(&mut self, predicate: P) -> Option<Self::Item>where Self: Sized, P: FnMut(&Self::Item) -> bool,
1.30.0 · source§fn find_map<B, F>(&mut self, f: F) -> Option<B>where
Self: Sized,
F: FnMut(Self::Item) -> Option<B>,
fn find_map<B, F>(&mut self, f: F) -> Option<B>where Self: Sized, F: FnMut(Self::Item) -> Option<B>,
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.0.0 · source§fn position<P>(&mut self, predicate: P) -> Option<usize>where
Self: Sized,
P: FnMut(Self::Item) -> bool,
fn position<P>(&mut self, predicate: P) -> Option<usize>where Self: Sized, P: FnMut(Self::Item) -> bool,
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
)