Struct Transform

Source
pub struct Transform<R, R2, P: Parser<Result = R>, F: Fn(R) -> ParseResult<R2>> { /* private fields */ }
Expand description

Transform applies a function (which may fail) to the result of a parser. Transform only succeeds if the applied function succeeds, too.

Implementations§

Source§

impl<R, R2, P: Parser<Result = R>, F: Fn(R) -> ParseResult<R2>> Transform<R, R2, P, F>

Source

pub fn new(p: P, f: F) -> Transform<R, R2, P, F>

Create a new Transform parser using f.

Trait Implementations§

Source§

impl<R, R2, P: Parser<Result = R>, F: Fn(R) -> ParseResult<R2>> Parser for Transform<R, R2, P, F>

Source§

type Result = R2

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<R, R2, P, F> Freeze for Transform<R, R2, P, F>
where F: Freeze, P: Freeze,

§

impl<R, R2, P, F> RefUnwindSafe for Transform<R, R2, P, F>

§

impl<R, R2, P, F> Send for Transform<R, R2, P, F>
where F: Send, P: Send,

§

impl<R, R2, P, F> Sync for Transform<R, R2, P, F>
where F: Sync, P: Sync,

§

impl<R, R2, P, F> Unpin for Transform<R, R2, P, F>
where F: Unpin, P: Unpin,

§

impl<R, R2, P, F> UnwindSafe for Transform<R, R2, P, F>
where F: UnwindSafe, P: 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.