Enum Expr

Source
pub enum Expr<Atom, Operator> {
    Atom(Atom),
    UnExpr {
        item: Box<Expr<Atom, Operator>>,
        op: Operator,
    },
    BinExpr {
        left: Box<Expr<Atom, Operator>>,
        op: Operator,
        right: Box<Expr<Atom, Operator>>,
    },
    TreExpr {
        left: Box<Expr<Atom, Operator>>,
        lop: Operator,
        middle: Box<Expr<Atom, Operator>>,
        rop: Operator,
        right: Box<Expr<Atom, Operator>>,
    },
}
Expand description

A parsed expression

Variants§

§

Atom(Atom)

An atom is whatever the return type of the atom parser returns

§

UnExpr

UnExpr is a unary expression for example -10

Fields

§item: Box<Expr<Atom, Operator>>

Item is the sub expression that the operator applies to. It is not called lhs because it can be either postfix or prefix

§op: Operator

Operator token

§

BinExpr

BinExpr is a binary expression for example 10 * 10

Fields

§left: Box<Expr<Atom, Operator>>

Left hand side sub expression

§op: Operator

Operator token

§right: Box<Expr<Atom, Operator>>

Right hand side sub expression

§

TreExpr

TreExpr is a trenary expression such as true ? 2 : 3

Fields

§left: Box<Expr<Atom, Operator>>

Left side sub expression

§lop: Operator

First operator token

§middle: Box<Expr<Atom, Operator>>

Middle sub expression

§rop: Operator

Right operator token

§right: Box<Expr<Atom, Operator>>

Right side sub expression

Trait Implementations§

Source§

impl<Atom, Operator> Debug for Expr<Atom, Operator>
where Atom: Debug, Operator: Debug,

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<Atom: PartialEq, Operator: PartialEq> PartialEq for Expr<Atom, Operator>

Source§

fn eq(&self, other: &Expr<Atom, Operator>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl<Atom, Operator> StructuralPartialEq for Expr<Atom, Operator>

Auto Trait Implementations§

§

impl<Atom, Operator> Freeze for Expr<Atom, Operator>
where Atom: Freeze, Operator: Freeze,

§

impl<Atom, Operator> RefUnwindSafe for Expr<Atom, Operator>
where Atom: RefUnwindSafe, Operator: RefUnwindSafe,

§

impl<Atom, Operator> Send for Expr<Atom, Operator>
where Atom: Send, Operator: Send,

§

impl<Atom, Operator> Sync for Expr<Atom, Operator>
where Atom: Sync, Operator: Sync,

§

impl<Atom, Operator> Unpin for Expr<Atom, Operator>
where Atom: Unpin, Operator: Unpin,

§

impl<Atom, Operator> UnwindSafe for Expr<Atom, Operator>
where Atom: UnwindSafe, Operator: 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.