pub trait RangedRepeats: Sized {
// Required method
fn parse_repeats(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
min: usize,
max: usize,
) -> Result<Self, Error>;
// Provided methods
fn parse_any(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error> { ... }
fn parse_many(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error> { ... }
fn parse_optional(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error> { ... }
fn parse_exactly(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
n: usize,
) -> Result<Self, Error> { ... }
fn parse_at_most(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
n: usize,
) -> Result<Self, Error> { ... }
fn parse_at_least(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
n: usize,
) -> Result<Self, Error> { ... }
}Expand description
A trait for parsing a repeating T with a minimum and maximum limit.
Sometimes the number of elements to be parsed is determined at runtime eg. a number of
header items needs a matching number of values.
§Example
Parse at table with a number of headers followed by values.
let mut token_iter = "
foo: bar:
foo_value bar_value
".to_token_iter();
let headers = Vec::<Cons<Ident,Colon>>::parse(&mut token_iter).unwrap();
let values = Vec::<Ident>::parse_exactly(&mut token_iter, headers.len()).unwrap();Required Methods§
Sourcefn parse_repeats(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
min: usize,
max: usize,
) -> Result<Self, Error>
fn parse_repeats( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, min: usize, max: usize, ) -> Result<Self, Error>
Parse at least min and up to max (inclusive) elements.
Provided Methods§
Sourcefn parse_any(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error>
fn parse_any( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, ) -> Result<Self, Error>
Parse any number of elements.
Sourcefn parse_many(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error>
fn parse_many( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, ) -> Result<Self, Error>
Parse at least one element.
Sourcefn parse_optional(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
) -> Result<Self, Error>
fn parse_optional( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, ) -> Result<Self, Error>
Parse zero or one element.
Sourcefn parse_exactly(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
n: usize,
) -> Result<Self, Error>
fn parse_exactly( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, n: usize, ) -> Result<Self, Error>
Parse exactly n elements.
Sourcefn parse_at_most(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
n: usize,
) -> Result<Self, Error>
fn parse_at_most( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, n: usize, ) -> Result<Self, Error>
Parse at most n elements.
Sourcefn parse_at_least(
tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>,
n: usize,
) -> Result<Self, Error>
fn parse_at_least( tokens: &mut ShadowCountedIter<'_, <TokenStream as IntoIterator>::IntoIter>, n: usize, ) -> Result<Self, Error>
Parse at least n elements.
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.