RelationParsePair

Trait RelationParsePair 

Source
pub trait RelationParsePair: Sized {
    // Required methods
    fn rule() -> Rule;
    fn message() -> &'static str;
    fn parse_pair_with_context(
        extensions: &SimpleExtensions,
        pair: Pair<'_, Rule>,
        input_children: Vec<Box<Rel>>,
        input_field_count: usize,
    ) -> Result<(Self, usize), MessageParseError>;
    fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel;
}
Expand description

A trait for parsing relations with full context for tree building.

Required Methods§

Source

fn rule() -> Rule

Source

fn message() -> &'static str

Source

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Parse the grammar pair into this relation type and its output field count.

Returns (Self, usize) where usize is the output field count — computed during parsing when input_field_count is available.

Source

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Consume this parsed relation, apply the advanced extension, and produce the final Rel.

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.

Implementations on Foreign Types§

Source§

impl RelationParsePair for AggregateRel

Source§

fn rule() -> Rule

Source§

fn message() -> &'static str

Source§

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Source§

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, _input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Source§

impl RelationParsePair for FetchRel

Source§

fn rule() -> Rule

Source§

fn message() -> &'static str

Source§

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Source§

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Source§

impl RelationParsePair for FilterRel

Source§

fn rule() -> Rule

Source§

fn message() -> &'static str

Source§

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Source§

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Source§

impl RelationParsePair for JoinRel

Source§

fn rule() -> Rule

Source§

fn message() -> &'static str

Source§

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Source§

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Source§

impl RelationParsePair for ProjectRel

Source§

fn rule() -> Rule

Source§

fn message() -> &'static str

Source§

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Source§

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Source§

impl RelationParsePair for ReadRel

Source§

fn rule() -> Rule

Source§

fn message() -> &'static str

Source§

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Source§

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Source§

impl RelationParsePair for SortRel

Source§

fn rule() -> Rule

Source§

fn message() -> &'static str

Source§

fn into_rel(self, adv_ext: Option<AdvancedExtension>) -> Rel

Source§

fn parse_pair_with_context( extensions: &SimpleExtensions, pair: Pair<'_, Rule>, input_children: Vec<Box<Rel>>, input_field_count: usize, ) -> Result<(Self, usize), MessageParseError>

Implementors§