Trait from_pest::FromPest

source ·
pub trait FromPest<'pest>: Sized {
    type Rule: RuleType;
    type FatalError;

    // Required method
    fn from_pest(
        pest: &mut Pairs<'pest, Self::Rule>
    ) -> Result<Self, ConversionError<Self::FatalError>>;
}
Expand description

Potentially borrowing conversion from a pest parse tree.

Required Associated Types§

source

type Rule: RuleType

The rule type for the parse tree this type corresponds to.

source

type FatalError

A fatal error during conversion.

Required Methods§

source

fn from_pest( pest: &mut Pairs<'pest, Self::Rule> ) -> Result<Self, ConversionError<Self::FatalError>>

Convert from a Pest parse tree.

Return type semantics
  • Err(ConversionError::NoMatch) => node not at head of the cursor, cursor unchanged
  • Err(ConversionError::Malformed) => fatal error; node at head of the cursor but malformed
  • Ok => success; the cursor has been updated past this node

Implementations on Foreign Types§

source§

impl<'pest, Rule: RuleType, T: FromPest<'pest, Rule = Rule>> FromPest<'pest> for Option<T>

Convert an optional production.

§

type Rule = Rule

§

type FatalError = <T as FromPest<'pest>>::FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<T::FatalError>>

source§

impl<'pest, Rule: RuleType> FromPest<'pest> for Pair<'pest, Rule>

Consume a production without doing any processing.

§

type Rule = Rule

§

type FatalError = Void

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<Void>>

source§

impl<'pest, D, Rule: RuleType, FatalError> FromPest<'pest> for (D,)where D: FromPest<'pest, Rule = Rule, FatalError = FatalError>,

§

type Rule = Rule

§

type FatalError = FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<FatalError>>

source§

impl<'pest, Rule: RuleType, T: FromPest<'pest, Rule = Rule>> FromPest<'pest> for Vec<T>

Convert many productions. (If <T as FromPest> is non-advancing, this will be non-terminating.)

§

type Rule = Rule

§

type FatalError = <T as FromPest<'pest>>::FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<T::FatalError>>

source§

impl<'pest, B, C, D, Rule: RuleType, FatalError> FromPest<'pest> for (B, C, D)where B: FromPest<'pest, Rule = Rule, FatalError = FatalError>, C: FromPest<'pest, Rule = Rule, FatalError = FatalError>, D: FromPest<'pest, Rule = Rule, FatalError = FatalError>,

§

type Rule = Rule

§

type FatalError = FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<FatalError>>

source§

impl<'pest, C, D, Rule: RuleType, FatalError> FromPest<'pest> for (C, D)where C: FromPest<'pest, Rule = Rule, FatalError = FatalError>, D: FromPest<'pest, Rule = Rule, FatalError = FatalError>,

§

type Rule = Rule

§

type FatalError = FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<FatalError>>

source§

impl<'pest, Rule: RuleType, T: FromPest<'pest, Rule = Rule>> FromPest<'pest> for Box<T>

For recursive grammars.

§

type Rule = Rule

§

type FatalError = <T as FromPest<'pest>>::FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<T::FatalError>>

source§

impl<'pest, A, B, C, D, Rule: RuleType, FatalError> FromPest<'pest> for (A, B, C, D)where A: FromPest<'pest, Rule = Rule, FatalError = FatalError>, B: FromPest<'pest, Rule = Rule, FatalError = FatalError>, C: FromPest<'pest, Rule = Rule, FatalError = FatalError>, D: FromPest<'pest, Rule = Rule, FatalError = FatalError>,

§

type Rule = Rule

§

type FatalError = FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<FatalError>>

source§

impl<'pest, Rule: RuleType, T: FromPest<'pest, Rule = Rule>> FromPest<'pest> for PhantomData<T>

Convert a production without storing it.

§

type Rule = Rule

§

type FatalError = <T as FromPest<'pest>>::FatalError

source§

fn from_pest( pest: &mut Pairs<'pest, Rule> ) -> Result<Self, ConversionError<T::FatalError>>

Implementors§