pub trait RangedRepeats: Sized {
// Required method
fn parse_repeats(
tokens: &mut TokenIter,
min: usize,
max: usize,
) -> Result<Self, Error>;
// Provided methods
fn parse_any(tokens: &mut TokenIter) -> Result<Self, Error> { ... }
fn parse_many(tokens: &mut TokenIter) -> Result<Self, Error> { ... }
fn parse_optional(tokens: &mut TokenIter) -> Result<Self, Error> { ... }
fn parse_exactly(tokens: &mut TokenIter, n: usize) -> Result<Self, Error> { ... }
fn parse_at_most(tokens: &mut TokenIter, n: usize) -> Result<Self, Error> { ... }
fn parse_at_least(tokens: &mut TokenIter, 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§
Provided Methods§
Sourcefn parse_many(tokens: &mut TokenIter) -> Result<Self, Error>
fn parse_many(tokens: &mut TokenIter) -> Result<Self, Error>
Parse at least one element.
Sourcefn parse_optional(tokens: &mut TokenIter) -> Result<Self, Error>
fn parse_optional(tokens: &mut TokenIter) -> Result<Self, Error>
Parse zero or one element.
Sourcefn parse_exactly(tokens: &mut TokenIter, n: usize) -> Result<Self, Error>
fn parse_exactly(tokens: &mut TokenIter, n: usize) -> Result<Self, Error>
Parse exactly 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.