Struct Then

Source
pub struct Then<A: Parser, B: Parser> { /* private fields */ }
Expand description

Applies one parser, discards the result, and returns the second parser’s results if the first one succeeded. To skip the input consumed by several parsers, use a Sequence combinators as A.

Implementations§

Source§

impl<A: Parser, B: Parser> Then<A, B>

Source

pub fn new(first: A, second: B) -> Then<A, B>

Trait Implementations§

Source§

impl<A: Parser, B: Parser> Parser for Then<A, B>

Source§

type Result = <B as Parser>::Result

Source§

fn parse( &mut self, st: &mut ParseState<impl Iterator<Item = char>>, ) -> ParseResult<Self::Result>

parse consumes input from st and returns a result or an error. Read more
Source§

fn apply<R2, F: Fn(Self::Result) -> ParseResult<R2>>( self, f: F, ) -> Transform<Self::Result, R2, Self, F>
where Self: Sized,

apply transforms the result of this parser using a Transform combinator.
Source§

fn then<R2, P: Parser<Result = R2>>(self, p: P) -> Then<Self, P>
where Self: Sized,

then attempts to parse input, and if it succeeds, executes parser p, only returning p’s result. This is useful for chaining parsers of which the results are not need.

Auto Trait Implementations§

§

impl<A, B> Freeze for Then<A, B>
where A: Freeze, B: Freeze,

§

impl<A, B> RefUnwindSafe for Then<A, B>

§

impl<A, B> Send for Then<A, B>
where A: Send, B: Send,

§

impl<A, B> Sync for Then<A, B>
where A: Sync, B: Sync,

§

impl<A, B> Unpin for Then<A, B>
where A: Unpin, B: Unpin,

§

impl<A, B> UnwindSafe for Then<A, B>
where A: UnwindSafe, B: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.