pub struct Repeats<const MIN: usize, const MAX: usize, T, D = Nothing>(pub Vec<Delimited<T, D>>);
Expand description
Like DelimitedVec<T,D>
but with a minimum and maximum (inclusive) number of elements.
Parsing will succeed when at least the minimum number of elements is reached and stop at
the maximum number. The delimiter D
defaults to Nothing
to parse sequences which
don’t have delimiters.
Tuple Fields§
§0: Vec<Delimited<T, D>>
Trait Implementations§
Source§impl<const MIN: usize, const MAX: usize, T, D> From<Repeats<MIN, MAX, T, D>> for Vec<T>
Converts a [Repeats<MIN, MAX, T, D>
] into a Vec<T>
.
As with DelimitedVec
this loses the potentially stateful delimiters.
impl<const MIN: usize, const MAX: usize, T, D> From<Repeats<MIN, MAX, T, D>> for Vec<T>
Converts a [Repeats<MIN, MAX, T, D>
] into a Vec<T>
.
As with DelimitedVec
this loses the potentially stateful delimiters.
Source§impl<const MIN: usize, const MAX: usize, T, D> IntoIterator for Repeats<MIN, MAX, T, D>
impl<const MIN: usize, const MAX: usize, T, D> IntoIterator for Repeats<MIN, MAX, T, D>
Source§impl<const MIN: usize, const MAX: usize, T, D> Parser for Repeats<MIN, MAX, T, D>
impl<const MIN: usize, const MAX: usize, T, D> Parser for Repeats<MIN, MAX, T, D>
Source§fn parser(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Repeats<MIN, MAX, T, D>, Error>
fn parser( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, ) -> Result<Repeats<MIN, MAX, T, D>, Error>
The actual parsing function that must be implemented. This mutates the
tokens
iterator directly. It should not be called from user code except for implementing
parsers itself and then only when the rules below are followed. Read moreSource§impl<const MIN: usize, const MAX: usize, T, D> ToTokens for Repeats<MIN, MAX, T, D>
impl<const MIN: usize, const MAX: usize, T, D> ToTokens for Repeats<MIN, MAX, T, D>
Source§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
Write
&self
to the given TokenStream
.Source§fn to_token_iter(
&self,
) -> ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter> ⓘ
fn to_token_iter( &self, ) -> ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter> ⓘ
Convert
&self
into a TokenIter
object.Source§fn into_token_iter<'a>(
self,
) -> ShadowCountedIter<'a, <TokenStream as IntoIterator>::IntoIter> ⓘwhere
Self: Sized,
fn into_token_iter<'a>(
self,
) -> ShadowCountedIter<'a, <TokenStream as IntoIterator>::IntoIter> ⓘwhere
Self: Sized,
Convert
self
into a TokenIter
object.Source§fn to_token_stream(&self) -> TokenStream
fn to_token_stream(&self) -> TokenStream
Convert
&self
into a TokenStream
object.Source§fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
fn into_token_stream(self) -> TokenStreamwhere
Self: Sized,
Convert
self
into a TokenStream
object.Auto Trait Implementations§
impl<const MIN: usize, const MAX: usize, T, D> Freeze for Repeats<MIN, MAX, T, D>
impl<const MIN: usize, const MAX: usize, T, D> RefUnwindSafe for Repeats<MIN, MAX, T, D>where
T: RefUnwindSafe,
D: RefUnwindSafe,
impl<const MIN: usize, const MAX: usize, T, D> Send for Repeats<MIN, MAX, T, D>
impl<const MIN: usize, const MAX: usize, T, D> Sync for Repeats<MIN, MAX, T, D>
impl<const MIN: usize, const MAX: usize, T, D> Unpin for Repeats<MIN, MAX, T, D>
impl<const MIN: usize, const MAX: usize, T, D> UnwindSafe for Repeats<MIN, MAX, T, D>where
T: UnwindSafe,
D: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Parse for Twhere
T: Parser,
impl<T> Parse for Twhere
T: Parser,
Source§fn parse(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error>
fn parse( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, ) -> Result<Self, Error>
This is the user facing API to parse grammatical entities. Calls a
parser()
within a
transaction. Commits changes on success and returns the parsed value. Read moreSource§fn parse_all(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error>
fn parse_all( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, ) -> Result<Self, Error>
Exhaustive parsing within a transaction. This is a convenience method that implies a
EndOfStream
at the end. Thus it will error if parsing is not exhaustive. Read moreSource§fn parse_with<T>(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
f: impl FnOnce(Self, &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>) -> Result<T, Error>,
) -> Result<T, Error>
fn parse_with<T>( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, f: impl FnOnce(Self, &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>) -> Result<T, Error>, ) -> Result<T, Error>
Parse a value in a transaction, pass it to a
FnOnce(Self, &mut TokenIter) -> Result<T>
closure which
creates a new result or returns an Error. Read more