Struct peruse::parsers::OneOfParser
[−]
[src]
pub struct OneOfParser<T: Parser> { /* fields omitted */ }
A Parser that takes a vector of parsers (of the exact same type) and returns the value from the first parser to return a non-error. This parser solely exists because doing a or b or c or d... ends up crushing rustc
Trait Implementations
impl<T: Clone + Parser> Clone for OneOfParser<T>
[src]
fn clone(&self) -> OneOfParser<T>
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0
Performs copy-assignment from source
. Read more
impl<T: Parser> Parser for OneOfParser<T>
[src]
type I = T::I
type O = T::O
fn parse<'a>(&self, data: &'a Self::I) -> ParseResult<&'a Self::I, Self::O>
impl<T: ParserCombinator> ParserCombinator for OneOfParser<T>
[src]
fn then<P: Parser<I = Self::I>>(&self, p: P) -> ChainedParser<Self, P>
Chain this parser with another parser, creating new parser that returns a tuple of their results Read more
fn then_r<P: ParserCombinator<I = Self::I>>(
&self,
p: P
) -> MapParser<Self::I, ChainedParser<Self, P>, P::O>
&self,
p: P
) -> MapParser<Self::I, ChainedParser<Self, P>, P::O>
Chain this parser with another parser, but toss the value from this parser
fn then_l<P: ParserCombinator<I = Self::I>>(
&self,
p: P
) -> MapParser<Self::I, ChainedParser<Self, P>, Self::O>
&self,
p: P
) -> MapParser<Self::I, ChainedParser<Self, P>, Self::O>
Chain this parser with another parser, but toss the value from the other parser
fn repeat(&self) -> RepeatParser<Self>
Create a new parser that will repeat this parser until it returns an error
fn map<T, F: 'static + Fn(Self::O) -> T>(
&self,
f: F
) -> MapParser<Self::I, Self, T>
&self,
f: F
) -> MapParser<Self::I, Self, T>
Map the value of this parser
fn or<P: Parser<I = Self::I, O = Self::O>>(&self, p: P) -> OrParser<Self, P>
Create a disjunction with another parser. If this parser produces an error, the other parser will be used