Struct proc_macro_utils::TokenParser
source · pub struct TokenParser<I: Iterator<Item = TokenTree> = IntoIter, const PEEKER_LEN: usize = 6> { /* private fields */ }
parser
only.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::new(quote! {a + b, c});
assert_tokens!(token_parser.next_expression().unwrap(), { a + b });
Construction
In most cases use new()
to avoid specifying the
generics. To change the on-stack size of the peek-buffer use
new_generic()
or
From::from
.
Peeking
The TokenParser
allows peeking an arbitrary amount of tokens using
peek_n()
and the token specific variants. This uses a
SmallVec
with its capacity specified via PEEKER_LEN
(default is 6).
This means peeking up to 6
tokens ahead happens without heap allocation.
Token groups can need up to 3
tokens of additional space e.g.
peek_n_tt_dot_dot_eq()
can, with the default
allocation free be called with up to 3
, and
peek_n_tt_plus_eq()
up to 4
.
Warning: Setting PEEKER_LEN = 0
means even
is_empty()
and peek()
allocate, and a
value below 3
will make some of the
peek_{punctuation}
allocate
additionally. But do also refrain from setting PEEKER_LEN
too high, as
this is the stack allocation used.
Implementations§
source§impl TokenParser
impl TokenParser
sourcepub fn new<T, I>(value: T) -> TokenParser<I, 6> ⓘwhere
T: IntoIterator<Item = TokenTree, IntoIter = I>,
I: Iterator<Item = TokenTree>,
pub fn new<T, I>(value: T) -> TokenParser<I, 6> ⓘwhere T: IntoIterator<Item = TokenTree, IntoIter = I>, I: Iterator<Item = TokenTree>,
Creates a new TokenParser
from a TokenTree
iterator.
This sets the default length for the peeker buffer. Use
new_generic()
to change it.
sourcepub fn new_generic<const PEEKER_LEN: usize, T, I>(
value: T
) -> TokenParser<I, PEEKER_LEN> ⓘwhere
T: IntoIterator<Item = TokenTree, IntoIter = I>,
I: Iterator<Item = TokenTree>,
pub fn new_generic<const PEEKER_LEN: usize, T, I>( value: T ) -> TokenParser<I, PEEKER_LEN> ⓘwhere T: IntoIterator<Item = TokenTree, IntoIter = I>, I: Iterator<Item = TokenTree>,
Creates a new TokenParser
from a TokenTree
iterator, allowing
to specify the size of the peeker buffer.
See Peeking for implications.
source§impl<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where
I: Iterator<Item = TokenTree>,
impl<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where I: Iterator<Item = TokenTree>,
Some Iterator utilities
sourcepub fn is_empty(&mut self) -> bool
pub fn is_empty(&mut self) -> bool
Checks if there are remaining tokens
use proc_macro_utils::TokenParser;
use quote::quote;
let mut parser = TokenParser::new(quote!(token));
assert!(!parser.is_empty());
_ = parser.next();
assert!(parser.is_empty())
sourcepub fn peek(&mut self) -> Option<&TokenTree>
pub fn peek(&mut self) -> Option<&TokenTree>
Peeks the next token without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(token));
assert_tokens!(parser.peek().cloned(), { token });
_ = parser.next();
assert!(parser.peek().is_none())
sourcepub fn peek_n(&mut self, n: usize) -> Option<&TokenTree>
pub fn peek_n(&mut self, n: usize) -> Option<&TokenTree>
Peeks the n
th token without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(token , third));
assert_tokens!(parser.peek_n(2).cloned(), { third });
assert_tokens!(parser.peek_n(1).cloned(), { , });
assert!(parser.peek_n(3).is_none())
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
use proc_macro_utils::{assert_tokens, TokenParser, TokenTreePunct};
use quote::quote;
let mut parser = TokenParser::new(quote!(::));
assert!(parser.next_if(TokenTreePunct::is_alone).is_none());
_ = parser.next();
assert_tokens!(parser.next_if(TokenTreePunct::is_alone), { : });
sourcepub fn next_if_each<P: Peeker>(&mut self, tests: P) -> Option<TokenStream>
pub fn next_if_each<P: Peeker>(&mut self, tests: P) -> Option<TokenStream>
Returns the next tokens if they fulfill the conditions otherwise returns None and doesn’t advance the parser.
use proc_macro_utils::{assert_tokens, TokenParser, TokenTreePunct};
use quote::quote;
let mut parser = TokenParser::new(quote!( -->));
assert!(parser.next_if_each((TokenTreePunct::is_minus, TokenTreePunct::is_greater_than)).is_none());
_ = parser.next();
assert_tokens!(parser.next_if_each((TokenTreePunct::is_minus, TokenTreePunct::is_greater_than)).unwrap(), { -> });
sourcepub fn next_if_each_alone<P: Peeker>(&mut self, tests: P) -> Option<TokenStream>
pub fn next_if_each_alone<P: Peeker>(&mut self, tests: P) -> Option<TokenStream>
sourcepub fn peek_if_each<P: Peeker>(&mut self, tests: P) -> Option<TokenStream>
pub fn peek_if_each<P: Peeker>(&mut self, tests: P) -> Option<TokenStream>
Returns the next tokens if they fulfill the conditions otherwise returns None, without advancing the parser
sourcepub fn peek_n_if_each<P: Peeker>(
&mut self,
n: usize,
tests: P
) -> Option<TokenStream>
pub fn peek_n_if_each<P: Peeker>( &mut self, n: usize, tests: P ) -> Option<TokenStream>
Returns the next tokens from n
if they fulfill the
conditions otherwise returns None, without advancing the parser
sourcepub fn peek_n_if_each_alone<P: Peeker>(
&mut self,
n: usize,
tests: P
) -> Option<TokenStream>
pub fn peek_n_if_each_alone<P: Peeker>( &mut self, n: usize, tests: P ) -> Option<TokenStream>
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_while_alone(
&mut self,
test: impl FnMut(&TokenTree) -> bool
) -> Option<TokenStream>
pub fn next_while_alone( &mut self, test: impl FnMut(&TokenTree) -> bool ) -> Option<TokenStream>
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
.
sourcepub fn next_until_alone(
&mut self,
test: impl FnMut(&TokenTree) -> bool
) -> Option<TokenStream>
pub fn next_until_alone( &mut self, test: impl FnMut(&TokenTree) -> bool ) -> Option<TokenStream>
sourcepub fn next_n(&mut self, n: usize) -> Option<TokenStream>
pub fn next_n(&mut self, n: usize) -> Option<TokenStream>
Returns the next n
tokens.
Returns None
if the parser contains less then n
tokens.
Note: This should only be used for small n
ideally less than
PEEKER_LEN
. Otherwise something like this would be more performant:
use proc_macro2::TokenStream;
use proc_macro_utils::{TokenParser, assert_tokens};
use quote::quote;
let mut parser = TokenParser::new(quote!(1 2 3 /*...*/ 1000 1001 1002 1003));
let n = 1000;
// This does not ensure that `next_up_to_n` contains exactly n tokens
let next_up_to_n: TokenStream = parser.by_ref().take(n).collect();
assert_tokens!(next_up_to_n, { 1 2 3 /* ...*/ 1000 });
assert_tokens!(parser, { 1001 1002 1003 });
sourcepub fn next_n_alone(&mut self, n: usize) -> Option<TokenStream>
pub fn next_n_alone(&mut self, n: usize) -> Option<TokenStream>
Returns the next n
tokens. If the last token is a punct it’s
spacing
is set to Alone
.
Returns None
if the parser contains less then n
tokens.
Note: This should only be used for small n
ideally less than
PEEKER_LEN
. Otherwise something like this would be more performant:
use proc_macro2::TokenStream;
use proc_macro_utils::{TokenParser, assert_tokens, TokenTreePunct};
use quote::quote;
let mut parser = TokenParser::new(quote!(1 2 3 /*...*/ 1000 1001 1002 1003));
let n = 1000;
// This does not ensure that `next_up_to_n` contains exactly n tokens
let mut next_up_to_n: TokenStream = parser.by_ref().take(n - 1).collect();
next_up_to_n.extend(parser.next().map(TokenTreePunct::alone));
assert_tokens!(next_up_to_n, { 1 2 3 /* ...*/ 1000 });
assert_tokens!(parser, { 1001 1002 1003 });
sourcepub fn peek_range(
&mut self,
range: impl RangeBounds<usize>
) -> Option<TokenStream>
pub fn peek_range( &mut self, range: impl RangeBounds<usize> ) -> Option<TokenStream>
Returns the specified range
of tokens.
Returns None
if the parser does not contain this range
tokens.
Note: This should only be used for small and close to start range
s
ideally less than PEEKER_LEN
. Otherwise something like this could be
more performant:
use proc_macro2::TokenStream;
use proc_macro_utils::{TokenParser, assert_tokens};
use quote::quote;
let parser = TokenParser::new(quote!(0 1 2 3 /*...*/ 1000 1001 1002 1003));
let start = 1000;
let end = 1003;
// This does not ensure that `peeked_range` contains any tokens
let peeked_range: TokenStream = parser.clone().skip(start).take(end -
start).collect();
assert_tokens!(peeked_range, { 1000 1001 1002 });
assert_tokens!(parser, { 0 1 2 3 /*...*/ 1000 1001 1002 1003 });
Panics
Panics if used without upper bound i.e. start..
.
sourcepub fn peek_range_alone(
&mut self,
range: impl RangeBounds<usize>
) -> Option<TokenStream>
pub fn peek_range_alone( &mut self, range: impl RangeBounds<usize> ) -> Option<TokenStream>
Returns the specified range
of tokens. If the last token is a punct
it’s spacing
is set to
Alone
.
Returns None
if the parser does not contain this range
tokens.
Note: This should only be used for small and close to start range
s
ideally less than PEEKER_LEN
. Otherwise something like this could be
more performant:
use proc_macro2::TokenStream;
use proc_macro_utils::{assert_tokens, TokenParser, TokenTreePunct};
use quote::quote;
let parser = TokenParser::new(quote!(0 1 2 3 /*...*/ 1000 1001 1002 1003));
let start = 1000;
let end = 1003;
// This does not ensure that `peeked_range` contains any tokens
let mut cloned = parser.clone().skip(start);
let mut peeked_range: TokenStream = cloned.by_ref().take(end - start - 1).collect();
peeked_range.extend(cloned.next().map(TokenTreePunct::alone));
assert_tokens!(peeked_range, { 1000 1001 1002 });
assert_tokens!(parser, { 0 1 2 3 /*...*/ 1000 1001 1002 1003 });
Panics
Panics if used without upper bound i.e. start..
.
source§impl<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where
I: Iterator<Item = TokenTree>,
impl<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where I: Iterator<Item = TokenTree>,
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 peek_keyword<K: ?Sized>(&mut self, keyword: &K) -> Option<&Ident>where
Ident: PartialEq<K>,
pub fn peek_keyword<K: ?Sized>(&mut self, keyword: &K) -> Option<&Ident>where Ident: PartialEq<K>,
Returns the next ident if it matches the specified keyword without advancing the parser.
While this is called peek_keyword
it is not restricted to rust
keywords, it can be used with any ident.
let mut parser = TokenParser::new(quote!( in out ));
assert_eq!(parser.peek_keyword("in").unwrap().to_string(), "in");
assert_eq!(parser.peek_keyword("in").unwrap().to_string(), "in");
assert!(parser.peek_keyword("out").is_none());
parser.next().unwrap();
assert_eq!(parser.peek_keyword("out").unwrap().to_string(), "out");
sourcepub fn peek_n_keyword<K: ?Sized>(
&mut self,
n: usize,
keyword: &K
) -> Option<&Ident>where
Ident: PartialEq<K>,
pub fn peek_n_keyword<K: ?Sized>( &mut self, n: usize, keyword: &K ) -> Option<&Ident>where Ident: PartialEq<K>,
Returns the nth token if it matches the specified keyword without advancing the parser.
While this is called peek_n_keyword
it is not restricted to rust
keywords, it can be used with any ident.
let mut parser = TokenParser::new(quote!( in out ));
assert_eq!(parser.peek_keyword("in").unwrap().to_string(), "in");
assert_eq!(parser.peek_n_keyword(1, "out").unwrap().to_string(), "out");
assert!(parser.peek_keyword("out").is_none());
sourcepub fn next_keyword<K: ?Sized>(&mut self, keyword: &K) -> Option<Ident>where
Ident: PartialEq<K>,
pub fn next_keyword<K: ?Sized>(&mut self, keyword: &K) -> Option<Ident>where Ident: PartialEq<K>,
Returns the next ident if it matches the specified keyword.
While this is called next_keyword
it is not restricted to rust
keywords, it can be used with any ident.
let mut parser = TokenParser::new(quote!( in out ));
assert_eq!(parser.next_keyword("in").unwrap().to_string(), "in");
assert!(parser.next_keyword("in").is_none());
assert_eq!(parser.next_keyword("out").unwrap().to_string(), "out");
assert!(parser.next_keyword("anything").is_none());
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::new(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::new(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<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where
I: Iterator<Item = TokenTree>,
impl<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where I: Iterator<Item = TokenTree>,
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 peek_group(&mut self) -> Option<&Group>
pub fn peek_group(&mut self) -> Option<&Group>
Returns the next token if it is a Group
without advancing the parser.
sourcepub fn peek_ident(&mut self) -> Option<&Ident>
pub fn peek_ident(&mut self) -> Option<&Ident>
Returns the next token if it is an Ident
without advancing the parser.
sourcepub fn peek_punct(&mut self) -> Option<&Punct>
pub fn peek_punct(&mut self) -> Option<&Punct>
Returns the next token if it is a Punct
without advancing the parser.
sourcepub fn peek_literal(&mut self) -> Option<&Literal>
pub fn peek_literal(&mut self) -> Option<&Literal>
Returns the next token if it is a Literal
without advancing the parser.
sourcepub fn peek_n_group(&mut self, n: usize) -> Option<&Group>
pub fn peek_n_group(&mut self, n: usize) -> Option<&Group>
Returns the n
th token if it is a Group
without advancing the parser.
sourcepub fn peek_n_ident(&mut self, n: usize) -> Option<&Ident>
pub fn peek_n_ident(&mut self, n: usize) -> Option<&Ident>
Returns the n
th token if it is an Ident
without advancing the parser.
sourcepub fn peek_n_punct(&mut self, n: usize) -> Option<&Punct>
pub fn peek_n_punct(&mut self, n: usize) -> Option<&Punct>
Returns the n
th token if it is a Punct
without advancing the parser.
sourcepub fn peek_n_literal(&mut self, n: usize) -> Option<&Literal>
pub fn peek_n_literal(&mut self, n: usize) -> Option<&Literal>
Returns the n
th token if it is a Literal
without advancing the parser.
sourcepub fn next_parenthesized(&mut self) -> Option<Group>
pub fn next_parenthesized(&mut self) -> Option<Group>
Returns the next token if it is a parenthesized group.
sourcepub fn next_braced(&mut self) -> Option<Group>
pub fn next_braced(&mut self) -> Option<Group>
Returns the next token if it is a braced group.
sourcepub fn next_bracketed(&mut self) -> Option<Group>
pub fn next_bracketed(&mut self) -> Option<Group>
Returns the next token if it is a bracketed group.
sourcepub fn peek_parenthesized(&mut self) -> Option<&Group>
pub fn peek_parenthesized(&mut self) -> Option<&Group>
Returns the next token if it is aparenthesized group, without advancing the parser.
sourcepub fn peek_braced(&mut self) -> Option<&Group>
pub fn peek_braced(&mut self) -> Option<&Group>
Returns the next token if it is abraced group, without advancing the parser.
sourcepub fn peek_bracketed(&mut self) -> Option<&Group>
pub fn peek_bracketed(&mut self) -> Option<&Group>
Returns the next token if it is abracketed group, without advancing the parser.
sourcepub fn peek_n_parenthesized(&mut self, n: usize) -> Option<&Group>
pub fn peek_n_parenthesized(&mut self, n: usize) -> Option<&Group>
Returns the n
th token if it is a parenthesized group, without advancing the parser.
sourcepub fn peek_n_braced(&mut self, n: usize) -> Option<&Group>
pub fn peek_n_braced(&mut self, n: usize) -> Option<&Group>
Returns the n
th token if it is a braced group, without advancing the parser.
sourcepub fn peek_n_bracketed(&mut self, n: usize) -> Option<&Group>
pub fn peek_n_bracketed(&mut self, n: usize) -> Option<&Group>
Returns the n
th token if it is a bracketed group, without advancing the parser.
source§impl<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where
I: Iterator<Item = TokenTree>,
impl<I, const PEEKER_LEN: usize> TokenParser<I, PEEKER_LEN>where I: Iterator<Item = TokenTree>,
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_tt_plus(&mut self) -> Option<TokenStream>
pub fn next_tt_plus(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree +
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(+ 1 b));
assert_tokens!(parser.next_tt_plus().unwrap(), { + });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_plus(&mut self) -> Option<TokenStream>
pub fn peek_tt_plus(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree +
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(+ 1 b));
assert_tokens!(parser.peek_tt_plus().unwrap(), { + });
sourcepub fn peek_n_tt_plus(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_plus(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree +
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b + 1));
assert_tokens!(parser.peek_n_tt_plus(1).unwrap(), { + });
sourcepub fn next_tt_minus(&mut self) -> Option<TokenStream>
pub fn next_tt_minus(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree -
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(- 1 b));
assert_tokens!(parser.next_tt_minus().unwrap(), { - });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_minus(&mut self) -> Option<TokenStream>
pub fn peek_tt_minus(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree -
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(- 1 b));
assert_tokens!(parser.peek_tt_minus().unwrap(), { - });
sourcepub fn peek_n_tt_minus(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_minus(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree -
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b - 1));
assert_tokens!(parser.peek_n_tt_minus(1).unwrap(), { - });
sourcepub fn next_tt_star(&mut self) -> Option<TokenStream>
pub fn next_tt_star(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree *
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(* 1 b));
assert_tokens!(parser.next_tt_star().unwrap(), { * });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_star(&mut self) -> Option<TokenStream>
pub fn peek_tt_star(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree *
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(* 1 b));
assert_tokens!(parser.peek_tt_star().unwrap(), { * });
sourcepub fn peek_n_tt_star(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_star(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree *
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b * 1));
assert_tokens!(parser.peek_n_tt_star(1).unwrap(), { * });
sourcepub fn next_tt_slash(&mut self) -> Option<TokenStream>
pub fn next_tt_slash(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree /
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(/ 1 b));
assert_tokens!(parser.next_tt_slash().unwrap(), { / });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_slash(&mut self) -> Option<TokenStream>
pub fn peek_tt_slash(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree /
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(/ 1 b));
assert_tokens!(parser.peek_tt_slash().unwrap(), { / });
sourcepub fn peek_n_tt_slash(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_slash(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree /
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b / 1));
assert_tokens!(parser.peek_n_tt_slash(1).unwrap(), { / });
sourcepub fn next_tt_percent(&mut self) -> Option<TokenStream>
pub fn next_tt_percent(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree %
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(% 1 b));
assert_tokens!(parser.next_tt_percent().unwrap(), { % });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_percent(&mut self) -> Option<TokenStream>
pub fn peek_tt_percent(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree %
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(% 1 b));
assert_tokens!(parser.peek_tt_percent().unwrap(), { % });
sourcepub fn peek_n_tt_percent(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_percent(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree %
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b % 1));
assert_tokens!(parser.peek_n_tt_percent(1).unwrap(), { % });
sourcepub fn next_tt_caret(&mut self) -> Option<TokenStream>
pub fn next_tt_caret(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ^
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(^ 1 b));
assert_tokens!(parser.next_tt_caret().unwrap(), { ^ });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_caret(&mut self) -> Option<TokenStream>
pub fn peek_tt_caret(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ^
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(^ 1 b));
assert_tokens!(parser.peek_tt_caret().unwrap(), { ^ });
sourcepub fn peek_n_tt_caret(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_caret(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ^
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ^ 1));
assert_tokens!(parser.peek_n_tt_caret(1).unwrap(), { ^ });
sourcepub fn next_tt_not(&mut self) -> Option<TokenStream>
pub fn next_tt_not(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree !
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(! 1 b));
assert_tokens!(parser.next_tt_not().unwrap(), { ! });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_not(&mut self) -> Option<TokenStream>
pub fn peek_tt_not(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree !
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(! 1 b));
assert_tokens!(parser.peek_tt_not().unwrap(), { ! });
sourcepub fn peek_n_tt_not(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_not(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree !
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ! 1));
assert_tokens!(parser.peek_n_tt_not(1).unwrap(), { ! });
sourcepub fn next_tt_and(&mut self) -> Option<TokenStream>
pub fn next_tt_and(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree &
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(& 1 b));
assert_tokens!(parser.next_tt_and().unwrap(), { & });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_and(&mut self) -> Option<TokenStream>
pub fn peek_tt_and(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree &
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(& 1 b));
assert_tokens!(parser.peek_tt_and().unwrap(), { & });
sourcepub fn peek_n_tt_and(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_and(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree &
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b & 1));
assert_tokens!(parser.peek_n_tt_and(1).unwrap(), { & });
sourcepub fn next_tt_or(&mut self) -> Option<TokenStream>
pub fn next_tt_or(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree |
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(| 1 b));
assert_tokens!(parser.next_tt_or().unwrap(), { | });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_or(&mut self) -> Option<TokenStream>
pub fn peek_tt_or(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree |
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(| 1 b));
assert_tokens!(parser.peek_tt_or().unwrap(), { | });
sourcepub fn peek_n_tt_or(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_or(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree |
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b | 1));
assert_tokens!(parser.peek_n_tt_or(1).unwrap(), { | });
sourcepub fn next_tt_and_and(&mut self) -> Option<TokenStream>
pub fn next_tt_and_and(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree &&
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(&& 1 b));
assert_tokens!(parser.next_tt_and_and().unwrap(), { && });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_and_and(&mut self) -> Option<TokenStream>
pub fn peek_tt_and_and(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree &&
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(&& 1 b));
assert_tokens!(parser.peek_tt_and_and().unwrap(), { && });
sourcepub fn peek_n_tt_and_and(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_and_and(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree &&
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b && 1));
assert_tokens!(parser.peek_n_tt_and_and(1).unwrap(), { && });
sourcepub fn next_tt_or_or(&mut self) -> Option<TokenStream>
pub fn next_tt_or_or(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ||
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(|| 1 b));
assert_tokens!(parser.next_tt_or_or().unwrap(), { || });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_or_or(&mut self) -> Option<TokenStream>
pub fn peek_tt_or_or(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ||
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(|| 1 b));
assert_tokens!(parser.peek_tt_or_or().unwrap(), { || });
sourcepub fn peek_n_tt_or_or(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_or_or(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ||
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b || 1));
assert_tokens!(parser.peek_n_tt_or_or(1).unwrap(), { || });
sourcepub fn next_tt_shl(&mut self) -> Option<TokenStream>
pub fn next_tt_shl(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <<
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(<< 1 b));
assert_tokens!(parser.next_tt_shl().unwrap(), { << });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_shl(&mut self) -> Option<TokenStream>
pub fn peek_tt_shl(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <<
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(<< 1 b));
assert_tokens!(parser.peek_tt_shl().unwrap(), { << });
sourcepub fn peek_n_tt_shl(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_shl(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree <<
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b << 1));
assert_tokens!(parser.peek_n_tt_shl(1).unwrap(), { << });
sourcepub fn next_tt_shr(&mut self) -> Option<TokenStream>
pub fn next_tt_shr(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >>
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(>> 1 b));
assert_tokens!(parser.next_tt_shr().unwrap(), { >> });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_shr(&mut self) -> Option<TokenStream>
pub fn peek_tt_shr(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >>
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(>> 1 b));
assert_tokens!(parser.peek_tt_shr().unwrap(), { >> });
sourcepub fn peek_n_tt_shr(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_shr(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree >>
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b >> 1));
assert_tokens!(parser.peek_n_tt_shr(1).unwrap(), { >> });
sourcepub fn next_tt_plus_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_plus_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree +=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(+= 1 b));
assert_tokens!(parser.next_tt_plus_eq().unwrap(), { += });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_plus_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_plus_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree +=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(+= 1 b));
assert_tokens!(parser.peek_tt_plus_eq().unwrap(), { += });
sourcepub fn peek_n_tt_plus_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_plus_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree +=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b += 1));
assert_tokens!(parser.peek_n_tt_plus_eq(1).unwrap(), { += });
sourcepub fn next_tt_minus_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_minus_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree -=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(-= 1 b));
assert_tokens!(parser.next_tt_minus_eq().unwrap(), { -= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_minus_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_minus_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree -=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(-= 1 b));
assert_tokens!(parser.peek_tt_minus_eq().unwrap(), { -= });
sourcepub fn peek_n_tt_minus_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_minus_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree -=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b -= 1));
assert_tokens!(parser.peek_n_tt_minus_eq(1).unwrap(), { -= });
sourcepub fn next_tt_star_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_star_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree *=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(*= 1 b));
assert_tokens!(parser.next_tt_star_eq().unwrap(), { *= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_star_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_star_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree *=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(*= 1 b));
assert_tokens!(parser.peek_tt_star_eq().unwrap(), { *= });
sourcepub fn peek_n_tt_star_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_star_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree *=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b *= 1));
assert_tokens!(parser.peek_n_tt_star_eq(1).unwrap(), { *= });
sourcepub fn next_tt_slash_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_slash_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree /=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(/= 1 b));
assert_tokens!(parser.next_tt_slash_eq().unwrap(), { /= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_slash_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_slash_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree /=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(/= 1 b));
assert_tokens!(parser.peek_tt_slash_eq().unwrap(), { /= });
sourcepub fn peek_n_tt_slash_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_slash_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree /=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b /= 1));
assert_tokens!(parser.peek_n_tt_slash_eq(1).unwrap(), { /= });
sourcepub fn next_tt_percent_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_percent_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree %=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(%= 1 b));
assert_tokens!(parser.next_tt_percent_eq().unwrap(), { %= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_percent_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_percent_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree %=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(%= 1 b));
assert_tokens!(parser.peek_tt_percent_eq().unwrap(), { %= });
sourcepub fn peek_n_tt_percent_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_percent_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree %=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b %= 1));
assert_tokens!(parser.peek_n_tt_percent_eq(1).unwrap(), { %= });
sourcepub fn next_tt_caret_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_caret_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ^=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(^= 1 b));
assert_tokens!(parser.next_tt_caret_eq().unwrap(), { ^= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_caret_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_caret_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ^=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(^= 1 b));
assert_tokens!(parser.peek_tt_caret_eq().unwrap(), { ^= });
sourcepub fn peek_n_tt_caret_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_caret_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ^=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ^= 1));
assert_tokens!(parser.peek_n_tt_caret_eq(1).unwrap(), { ^= });
sourcepub fn next_tt_and_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_and_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree &=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(&= 1 b));
assert_tokens!(parser.next_tt_and_eq().unwrap(), { &= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_and_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_and_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree &=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(&= 1 b));
assert_tokens!(parser.peek_tt_and_eq().unwrap(), { &= });
sourcepub fn peek_n_tt_and_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_and_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree &=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b &= 1));
assert_tokens!(parser.peek_n_tt_and_eq(1).unwrap(), { &= });
sourcepub fn next_tt_or_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_or_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree |=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(|= 1 b));
assert_tokens!(parser.next_tt_or_eq().unwrap(), { |= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_or_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_or_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree |=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(|= 1 b));
assert_tokens!(parser.peek_tt_or_eq().unwrap(), { |= });
sourcepub fn peek_n_tt_or_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_or_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree |=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b |= 1));
assert_tokens!(parser.peek_n_tt_or_eq(1).unwrap(), { |= });
sourcepub fn next_tt_shl_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_shl_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <<=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(<<= 1 b));
assert_tokens!(parser.next_tt_shl_eq().unwrap(), { <<= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_shl_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_shl_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <<=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(<<= 1 b));
assert_tokens!(parser.peek_tt_shl_eq().unwrap(), { <<= });
sourcepub fn peek_n_tt_shl_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_shl_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree <<=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b <<= 1));
assert_tokens!(parser.peek_n_tt_shl_eq(1).unwrap(), { <<= });
sourcepub fn next_tt_shr_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_shr_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >>=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(>>= 1 b));
assert_tokens!(parser.next_tt_shr_eq().unwrap(), { >>= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_shr_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_shr_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >>=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(>>= 1 b));
assert_tokens!(parser.peek_tt_shr_eq().unwrap(), { >>= });
sourcepub fn peek_n_tt_shr_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_shr_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree >>=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b >>= 1));
assert_tokens!(parser.peek_n_tt_shr_eq(1).unwrap(), { >>= });
sourcepub fn next_tt_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree =
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(= 1 b));
assert_tokens!(parser.next_tt_eq().unwrap(), { = });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree =
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(= 1 b));
assert_tokens!(parser.peek_tt_eq().unwrap(), { = });
sourcepub fn peek_n_tt_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree =
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b = 1));
assert_tokens!(parser.peek_n_tt_eq(1).unwrap(), { = });
sourcepub fn next_tt_eq_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_eq_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ==
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(== 1 b));
assert_tokens!(parser.next_tt_eq_eq().unwrap(), { == });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_eq_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_eq_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ==
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(== 1 b));
assert_tokens!(parser.peek_tt_eq_eq().unwrap(), { == });
sourcepub fn peek_n_tt_eq_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_eq_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ==
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b == 1));
assert_tokens!(parser.peek_n_tt_eq_eq(1).unwrap(), { == });
sourcepub fn next_tt_ne(&mut self) -> Option<TokenStream>
pub fn next_tt_ne(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree !=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(!= 1 b));
assert_tokens!(parser.next_tt_ne().unwrap(), { != });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_ne(&mut self) -> Option<TokenStream>
pub fn peek_tt_ne(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree !=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(!= 1 b));
assert_tokens!(parser.peek_tt_ne().unwrap(), { != });
sourcepub fn peek_n_tt_ne(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_ne(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree !=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b != 1));
assert_tokens!(parser.peek_n_tt_ne(1).unwrap(), { != });
sourcepub fn next_tt_gt(&mut self) -> Option<TokenStream>
pub fn next_tt_gt(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(> 1 b));
assert_tokens!(parser.next_tt_gt().unwrap(), { > });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_gt(&mut self) -> Option<TokenStream>
pub fn peek_tt_gt(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(> 1 b));
assert_tokens!(parser.peek_tt_gt().unwrap(), { > });
sourcepub fn peek_n_tt_gt(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_gt(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree >
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b > 1));
assert_tokens!(parser.peek_n_tt_gt(1).unwrap(), { > });
sourcepub fn next_tt_lt(&mut self) -> Option<TokenStream>
pub fn next_tt_lt(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(< 1 b));
assert_tokens!(parser.next_tt_lt().unwrap(), { < });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_lt(&mut self) -> Option<TokenStream>
pub fn peek_tt_lt(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(< 1 b));
assert_tokens!(parser.peek_tt_lt().unwrap(), { < });
sourcepub fn peek_n_tt_lt(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_lt(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree <
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b < 1));
assert_tokens!(parser.peek_n_tt_lt(1).unwrap(), { < });
sourcepub fn next_tt_ge(&mut self) -> Option<TokenStream>
pub fn next_tt_ge(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(>= 1 b));
assert_tokens!(parser.next_tt_ge().unwrap(), { >= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_ge(&mut self) -> Option<TokenStream>
pub fn peek_tt_ge(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree >=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(>= 1 b));
assert_tokens!(parser.peek_tt_ge().unwrap(), { >= });
sourcepub fn peek_n_tt_ge(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_ge(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree >=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b >= 1));
assert_tokens!(parser.peek_n_tt_ge(1).unwrap(), { >= });
sourcepub fn next_tt_le(&mut self) -> Option<TokenStream>
pub fn next_tt_le(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(<= 1 b));
assert_tokens!(parser.next_tt_le().unwrap(), { <= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_le(&mut self) -> Option<TokenStream>
pub fn peek_tt_le(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree <=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(<= 1 b));
assert_tokens!(parser.peek_tt_le().unwrap(), { <= });
sourcepub fn peek_n_tt_le(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_le(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree <=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b <= 1));
assert_tokens!(parser.peek_n_tt_le(1).unwrap(), { <= });
sourcepub fn next_tt_at(&mut self) -> Option<TokenStream>
pub fn next_tt_at(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree @
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(@ 1 b));
assert_tokens!(parser.next_tt_at().unwrap(), { @ });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_at(&mut self) -> Option<TokenStream>
pub fn peek_tt_at(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree @
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(@ 1 b));
assert_tokens!(parser.peek_tt_at().unwrap(), { @ });
sourcepub fn peek_n_tt_at(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_at(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree @
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b @ 1));
assert_tokens!(parser.peek_n_tt_at(1).unwrap(), { @ });
sourcepub fn next_tt_dot(&mut self) -> Option<TokenStream>
pub fn next_tt_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree .
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(. 1 b));
assert_tokens!(parser.next_tt_dot().unwrap(), { . });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_dot(&mut self) -> Option<TokenStream>
pub fn peek_tt_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree .
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(. 1 b));
assert_tokens!(parser.peek_tt_dot().unwrap(), { . });
sourcepub fn peek_n_tt_dot(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_dot(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree .
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b . 1));
assert_tokens!(parser.peek_n_tt_dot(1).unwrap(), { . });
sourcepub fn next_tt_dot_dot(&mut self) -> Option<TokenStream>
pub fn next_tt_dot_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ..
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(.. 1 b));
assert_tokens!(parser.next_tt_dot_dot().unwrap(), { .. });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_dot_dot(&mut self) -> Option<TokenStream>
pub fn peek_tt_dot_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ..
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(.. 1 b));
assert_tokens!(parser.peek_tt_dot_dot().unwrap(), { .. });
sourcepub fn peek_n_tt_dot_dot(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_dot_dot(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ..
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b .. 1));
assert_tokens!(parser.peek_n_tt_dot_dot(1).unwrap(), { .. });
sourcepub fn next_tt_dot_dot_dot(&mut self) -> Option<TokenStream>
pub fn next_tt_dot_dot_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ...
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(... 1 b));
assert_tokens!(parser.next_tt_dot_dot_dot().unwrap(), { ... });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_dot_dot_dot(&mut self) -> Option<TokenStream>
pub fn peek_tt_dot_dot_dot(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ...
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(... 1 b));
assert_tokens!(parser.peek_tt_dot_dot_dot().unwrap(), { ... });
sourcepub fn peek_n_tt_dot_dot_dot(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_dot_dot_dot(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ...
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ... 1));
assert_tokens!(parser.peek_n_tt_dot_dot_dot(1).unwrap(), { ... });
sourcepub fn next_tt_dot_dot_eq(&mut self) -> Option<TokenStream>
pub fn next_tt_dot_dot_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ..=
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(..= 1 b));
assert_tokens!(parser.next_tt_dot_dot_eq().unwrap(), { ..= });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_dot_dot_eq(&mut self) -> Option<TokenStream>
pub fn peek_tt_dot_dot_eq(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ..=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(..= 1 b));
assert_tokens!(parser.peek_tt_dot_dot_eq().unwrap(), { ..= });
sourcepub fn peek_n_tt_dot_dot_eq(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_dot_dot_eq(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ..=
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ..= 1));
assert_tokens!(parser.peek_n_tt_dot_dot_eq(1).unwrap(), { ..= });
sourcepub fn next_tt_comma(&mut self) -> Option<TokenStream>
pub fn next_tt_comma(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ,
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(, 1 b));
assert_tokens!(parser.next_tt_comma().unwrap(), { , });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_comma(&mut self) -> Option<TokenStream>
pub fn peek_tt_comma(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ,
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(, 1 b));
assert_tokens!(parser.peek_tt_comma().unwrap(), { , });
sourcepub fn peek_n_tt_comma(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_comma(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ,
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b , 1));
assert_tokens!(parser.peek_n_tt_comma(1).unwrap(), { , });
sourcepub fn next_tt_semi(&mut self) -> Option<TokenStream>
pub fn next_tt_semi(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ;
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(; 1 b));
assert_tokens!(parser.next_tt_semi().unwrap(), { ; });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_semi(&mut self) -> Option<TokenStream>
pub fn peek_tt_semi(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ;
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(; 1 b));
assert_tokens!(parser.peek_tt_semi().unwrap(), { ; });
sourcepub fn peek_n_tt_semi(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_semi(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ;
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ; 1));
assert_tokens!(parser.peek_n_tt_semi(1).unwrap(), { ; });
sourcepub fn next_tt_colon(&mut self) -> Option<TokenStream>
pub fn next_tt_colon(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree :
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(: 1 b));
assert_tokens!(parser.next_tt_colon().unwrap(), { : });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_colon(&mut self) -> Option<TokenStream>
pub fn peek_tt_colon(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree :
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(: 1 b));
assert_tokens!(parser.peek_tt_colon().unwrap(), { : });
sourcepub fn peek_n_tt_colon(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_colon(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree :
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b : 1));
assert_tokens!(parser.peek_n_tt_colon(1).unwrap(), { : });
sourcepub fn next_tt_path_sep(&mut self) -> Option<TokenStream>
pub fn next_tt_path_sep(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ::
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(:: 1 b));
assert_tokens!(parser.next_tt_path_sep().unwrap(), { :: });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_path_sep(&mut self) -> Option<TokenStream>
pub fn peek_tt_path_sep(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ::
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(:: 1 b));
assert_tokens!(parser.peek_tt_path_sep().unwrap(), { :: });
sourcepub fn peek_n_tt_path_sep(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_path_sep(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ::
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b :: 1));
assert_tokens!(parser.peek_n_tt_path_sep(1).unwrap(), { :: });
sourcepub fn next_tt_r_arrow(&mut self) -> Option<TokenStream>
pub fn next_tt_r_arrow(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ->
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(-> 1 b));
assert_tokens!(parser.next_tt_r_arrow().unwrap(), { -> });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_r_arrow(&mut self) -> Option<TokenStream>
pub fn peek_tt_r_arrow(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ->
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(-> 1 b));
assert_tokens!(parser.peek_tt_r_arrow().unwrap(), { -> });
sourcepub fn peek_n_tt_r_arrow(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_r_arrow(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ->
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b -> 1));
assert_tokens!(parser.peek_n_tt_r_arrow(1).unwrap(), { -> });
sourcepub fn next_tt_fat_arrow(&mut self) -> Option<TokenStream>
pub fn next_tt_fat_arrow(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree =>
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(=> 1 b));
assert_tokens!(parser.next_tt_fat_arrow().unwrap(), { => });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_fat_arrow(&mut self) -> Option<TokenStream>
pub fn peek_tt_fat_arrow(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree =>
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(=> 1 b));
assert_tokens!(parser.peek_tt_fat_arrow().unwrap(), { => });
sourcepub fn peek_n_tt_fat_arrow(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_fat_arrow(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree =>
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b => 1));
assert_tokens!(parser.peek_n_tt_fat_arrow(1).unwrap(), { => });
sourcepub fn next_tt_pound(&mut self) -> Option<TokenStream>
pub fn next_tt_pound(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree #
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(# 1 b));
assert_tokens!(parser.next_tt_pound().unwrap(), { # });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_pound(&mut self) -> Option<TokenStream>
pub fn peek_tt_pound(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree #
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(# 1 b));
assert_tokens!(parser.peek_tt_pound().unwrap(), { # });
sourcepub fn peek_n_tt_pound(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_pound(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree #
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b # 1));
assert_tokens!(parser.peek_n_tt_pound(1).unwrap(), { # });
sourcepub fn next_tt_dollar(&mut self) -> Option<TokenStream>
pub fn next_tt_dollar(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree $
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!($ 1 b));
assert_tokens!(parser.next_tt_dollar().unwrap(), { $ });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_dollar(&mut self) -> Option<TokenStream>
pub fn peek_tt_dollar(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree $
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!($ 1 b));
assert_tokens!(parser.peek_tt_dollar().unwrap(), { $ });
sourcepub fn peek_n_tt_dollar(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_dollar(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree $
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b $ 1));
assert_tokens!(parser.peek_n_tt_dollar(1).unwrap(), { $ });
sourcepub fn next_tt_question(&mut self) -> Option<TokenStream>
pub fn next_tt_question(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ?
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(? 1 b));
assert_tokens!(parser.next_tt_question().unwrap(), { ? });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_question(&mut self) -> Option<TokenStream>
pub fn peek_tt_question(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ?
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(? 1 b));
assert_tokens!(parser.peek_tt_question().unwrap(), { ? });
sourcepub fn peek_n_tt_question(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_question(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ?
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ? 1));
assert_tokens!(parser.peek_n_tt_question(1).unwrap(), { ? });
sourcepub fn next_tt_tilde(&mut self) -> Option<TokenStream>
pub fn next_tt_tilde(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ~
following the same rules as macro_rule’s tt.
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(~ 1 b));
assert_tokens!(parser.next_tt_tilde().unwrap(), { ~ });
assert_tokens!(parser, { 1 b });
sourcepub fn peek_tt_tilde(&mut self) -> Option<TokenStream>
pub fn peek_tt_tilde(&mut self) -> Option<TokenStream>
Returns the next token if it is a punctuation token tree ~
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(~ 1 b));
assert_tokens!(parser.peek_tt_tilde().unwrap(), { ~ });
sourcepub fn peek_n_tt_tilde(&mut self, n: usize) -> Option<TokenStream>
pub fn peek_n_tt_tilde(&mut self, n: usize) -> Option<TokenStream>
Returns the n
th token if it is a punctuation token tree ~
following the same rules as macro_rule’s tt without advancing the parser
use proc_macro_utils::{assert_tokens, TokenParser};
use quote::quote;
let mut parser = TokenParser::new(quote!(b ~ 1));
assert_tokens!(parser.peek_n_tt_tilde(1).unwrap(), { ~ });
Trait Implementations§
source§impl<I: Clone + Iterator<Item = TokenTree>, const PEEKER_LEN: usize> Clone for TokenParser<I, PEEKER_LEN>
impl<I: Clone + Iterator<Item = TokenTree>, const PEEKER_LEN: usize> Clone for TokenParser<I, PEEKER_LEN>
source§impl<T, I, const PEEKER_LEN: usize> From<T> for TokenParser<I, PEEKER_LEN>where
T: IntoIterator<Item = TokenTree, IntoIter = I>,
I: Iterator<Item = TokenTree>,
impl<T, I, const PEEKER_LEN: usize> From<T> for TokenParser<I, PEEKER_LEN>where T: IntoIterator<Item = TokenTree, IntoIter = I>, I: Iterator<Item = TokenTree>,
source§impl<I, const PEEKER_LEN: usize> From<TokenParser<I, PEEKER_LEN>> for TokenStreamwhere
I: Iterator<Item = TokenTree>,
impl<I, const PEEKER_LEN: usize> From<TokenParser<I, PEEKER_LEN>> for TokenStreamwhere I: Iterator<Item = TokenTree>,
source§fn from(value: TokenParser<I, PEEKER_LEN>) -> Self
fn from(value: TokenParser<I, PEEKER_LEN>) -> Self
source§impl FromStr for TokenParser
impl FromStr for TokenParser
source§impl<I, const PEEKER_LEN: usize> Iterator for TokenParser<I, PEEKER_LEN>where
I: Iterator<Item = TokenTree>,
impl<I, const PEEKER_LEN: usize> Iterator for TokenParser<I, PEEKER_LEN>where I: Iterator<Item = TokenTree>,
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
)source§impl<I, const PEEKER_LEN: usize> ToTokens for TokenParser<I, PEEKER_LEN>where
I: Clone + Iterator<Item = TokenTree>,
Available on crate feature quote
only.
impl<I, const PEEKER_LEN: usize> ToTokens for TokenParser<I, PEEKER_LEN>where I: Clone + Iterator<Item = TokenTree>,
quote
only.