pub trait Parser<Input> {
type Output;
type Error: ParseError<Input>;
// Required method
fn process<OM>(
&mut self,
input: Input,
) -> Result<(Input, <<OM as OutputMode>::Output as Mode>::Output<Self::Output>), Err<Self::Error, <<OM as OutputMode>::Error as Mode>::Output<Self::Error>>>
where OM: OutputMode;
// Provided methods
fn parse(
&mut self,
input: Input,
) -> Result<(Input, Self::Output), Err<Self::Error>> { ... }
fn parse_complete(
&mut self,
input: Input,
) -> Result<(Input, Self::Output), Err<Self::Error>> { ... }
fn map<G, O2>(self, g: G) -> Map<Self, G>
where G: FnMut(Self::Output) -> O2,
Self: Sized { ... }
fn map_res<G, O2, E2>(self, g: G) -> MapRes<Self, G>
where G: FnMut(Self::Output) -> Result<O2, E2>,
Self::Error: FromExternalError<Input, E2>,
Self: Sized { ... }
fn map_opt<G, O2>(self, g: G) -> MapOpt<Self, G>
where G: FnMut(Self::Output) -> Option<O2>,
Self: Sized { ... }
fn flat_map<G, H>(self, g: G) -> FlatMap<Self, G>
where G: FnMut(Self::Output) -> H,
H: Parser<Input, Error = Self::Error>,
Self: Sized { ... }
fn and_then<G>(self, g: G) -> AndThen<Self, G>
where G: Parser<Self::Output, Error = Self::Error>,
Self: Sized { ... }
fn and<G, O2>(self, g: G) -> And<Self, G>
where G: Parser<Input, Output = O2, Error = Self::Error>,
Self: Sized { ... }
fn or<G>(self, g: G) -> Or<Self, G>
where G: Parser<Input, Output = Self::Output, Error = Self::Error>,
Self: Sized { ... }
fn into<O2, E2>(self) -> Into<Self, O2, E2>
where O2: From<Self::Output>,
E2: From<Self::Error>,
Self: Sized { ... }
}
Expand description
All nom parsers implement this trait
Required Associated Types§
Sourcetype Error: ParseError<Input>
type Error: ParseError<Input>
Error type of this parser
Required Methods§
Sourcefn process<OM>(
&mut self,
input: Input,
) -> Result<(Input, <<OM as OutputMode>::Output as Mode>::Output<Self::Output>), Err<Self::Error, <<OM as OutputMode>::Error as Mode>::Output<Self::Error>>>where
OM: OutputMode,
fn process<OM>(
&mut self,
input: Input,
) -> Result<(Input, <<OM as OutputMode>::Output as Mode>::Output<Self::Output>), Err<Self::Error, <<OM as OutputMode>::Error as Mode>::Output<Self::Error>>>where
OM: OutputMode,
A parser takes in input type, and returns a Result
containing
either the remaining input and the output value, or an error
Provided Methods§
Sourcefn parse(
&mut self,
input: Input,
) -> Result<(Input, Self::Output), Err<Self::Error>>
fn parse( &mut self, input: Input, ) -> Result<(Input, Self::Output), Err<Self::Error>>
A parser takes in input type, and returns a Result
containing
either the remaining input and the output value, or an error
Sourcefn parse_complete(
&mut self,
input: Input,
) -> Result<(Input, Self::Output), Err<Self::Error>>
fn parse_complete( &mut self, input: Input, ) -> Result<(Input, Self::Output), Err<Self::Error>>
A parser takes in input type, and returns a Result
containing
either the remaining input and the output value, or an error
Sourcefn map_res<G, O2, E2>(self, g: G) -> MapRes<Self, G>
fn map_res<G, O2, E2>(self, g: G) -> MapRes<Self, G>
Applies a function returning a Result
over the result of a parser.
Sourcefn map_opt<G, O2>(self, g: G) -> MapOpt<Self, G>
fn map_opt<G, O2>(self, g: G) -> MapOpt<Self, G>
Applies a function returning an Option
over the result of a parser.
Sourcefn flat_map<G, H>(self, g: G) -> FlatMap<Self, G>
fn flat_map<G, H>(self, g: G) -> FlatMap<Self, G>
Creates a second parser from the output of the first one, then apply over the rest of the input
Sourcefn and_then<G>(self, g: G) -> AndThen<Self, G>
fn and_then<G>(self, g: G) -> AndThen<Self, G>
Applies a second parser over the output of the first one
Sourcefn and<G, O2>(self, g: G) -> And<Self, G>
fn and<G, O2>(self, g: G) -> And<Self, G>
Applies a second parser after the first one, return their results as a tuple
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.