Struct peruse::parsers::BoxedParser
[−]
[src]
pub struct BoxedParser<I: ?Sized, O> { /* fields omitted */ }
this parser solely exists to avoid insanely long compile times in rustc. When you have a fairly large parser, it's best to box it. Yes we're introducing extra dynamic dispatch, but only on a small amount. In some cases this is the only way to get rustc to not take (literally) a million years!
Trait Implementations
impl<I: ?Sized, O> Parser for BoxedParser<I, O>
[src]
impl<I: ?Sized, O> ParserCombinator for BoxedParser<I, O>
[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
impl<I: ?Sized, O> Clone for BoxedParser<I, O>
[src]
fn clone(&self) -> Self
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