Struct Maybe

Source
pub struct Maybe<Inner: Parser> { /* private fields */ }
Expand description

Maybe is a combinator returning Option for a parser returning T, meaning it does not stop parsing if an optional input was not encountered. It is very similar to a Repeat parser with RepeatSpec::Max(1).

Implementations§

Source§

impl<Inner: Parser> Maybe<Inner>

Source

pub fn new(p: Inner) -> Maybe<Inner>

Trait Implementations§

Source§

impl<R, P: Parser<Result = R>> Parser for Maybe<P>

Source§

type Result = Option<R>

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<Inner> Freeze for Maybe<Inner>
where Inner: Freeze,

§

impl<Inner> RefUnwindSafe for Maybe<Inner>
where Inner: RefUnwindSafe,

§

impl<Inner> Send for Maybe<Inner>
where Inner: Send,

§

impl<Inner> Sync for Maybe<Inner>
where Inner: Sync,

§

impl<Inner> Unpin for Maybe<Inner>
where Inner: Unpin,

§

impl<Inner> UnwindSafe for Maybe<Inner>
where Inner: 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.