pub struct LazyVecUntil<T, S> {
pub vec: Vec<T>,
/* private fields */
}Expand description
A Vec<T> that is filled up to the first appearance of an terminating S. This S may
be a subset of T, thus parsing become lazy. Unlike LazyVec this variant does not consume
the final terminator. This is the same as Vec<Cons<Except<S>,T>>> but more convenient.
§Example
Parse anything until a ;.
let mut token_iter = "foo bar ; baz ;".to_token_iter();
type Example = LazyVecUntil<TokenTree, Semicolon>;
let _example = Example::parse(&mut token_iter).unwrap();
let _example = Semicolon::parse(&mut token_iter).unwrap();
let _example = Example::parse(&mut token_iter).unwrap();
let _example = Semicolon::parse(&mut token_iter).unwrap();Fields§
§vec: Vec<T>The vector of repeating T
Trait Implementations§
Source§impl<T, S> Clone for LazyVecUntil<T, S>
impl<T, S> Clone for LazyVecUntil<T, S>
Source§fn clone(&self) -> LazyVecUntil<T, S>
fn clone(&self) -> LazyVecUntil<T, S>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<T, S> Debug for LazyVecUntil<T, S>
impl<T, S> Debug for LazyVecUntil<T, S>
Source§impl<T, S> IntoIterator for LazyVecUntil<T, S>
impl<T, S> IntoIterator for LazyVecUntil<T, S>
Source§type IntoIter = IntoIter<<LazyVecUntil<T, S> as IntoIterator>::Item>
type IntoIter = IntoIter<<LazyVecUntil<T, S> as IntoIterator>::Item>
Which kind of iterator are we turning this into?
Source§fn into_iter(self) -> <LazyVecUntil<T, S> as IntoIterator>::IntoIter
fn into_iter(self) -> <LazyVecUntil<T, S> as IntoIterator>::IntoIter
Creates an iterator from a value. Read more
Source§impl<T, S> Parser for LazyVecUntil<T, S>
impl<T, S> Parser for LazyVecUntil<T, S>
Source§fn parser(tokens: &mut TokenIter) -> Result<LazyVecUntil<T, S>, Error>
fn parser(tokens: &mut TokenIter) -> Result<LazyVecUntil<T, S>, 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<T, S> RangedRepeats for LazyVecUntil<T, S>
impl<T, S> RangedRepeats for LazyVecUntil<T, S>
Source§fn parse_repeats(
tokens: &mut TokenIter,
min: usize,
max: usize,
) -> Result<LazyVecUntil<T, S>, Error>
fn parse_repeats( tokens: &mut TokenIter, min: usize, max: usize, ) -> Result<LazyVecUntil<T, S>, Error>
Parse at least
min and up to max (inclusive) elements.Source§fn 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.Source§impl<T, S> ToTokens for LazyVecUntil<T, S>
impl<T, S> ToTokens for LazyVecUntil<T, S>
Source§fn to_tokens(&self, tokens: &mut TokenStream)
fn to_tokens(&self, tokens: &mut TokenStream)
Source§fn into_token_iter(self) -> TokenIter ⓘwhere
Self: Sized,
fn into_token_iter(self) -> TokenIter ⓘ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<T, S> Freeze for LazyVecUntil<T, S>
impl<T, S> RefUnwindSafe for LazyVecUntil<T, S>where
S: RefUnwindSafe,
T: RefUnwindSafe,
impl<T, S> Send for LazyVecUntil<T, S>
impl<T, S> Sync for LazyVecUntil<T, S>
impl<T, S> Unpin for LazyVecUntil<T, S>
impl<T, S> UnwindSafe for LazyVecUntil<T, S>where
S: UnwindSafe,
T: 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> DynamicTokens for T
impl<T> DynamicTokens for T
Source§impl<T> Parse for Twhere
T: Parser,
impl<T> Parse for Twhere
T: Parser,
Source§fn parse(tokens: &mut TokenIter) -> Result<Self, Error>
fn parse(tokens: &mut TokenIter) -> 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 more