# Enum pest_meta::optimizer::OptimizedExpr

source · [−]

    pub enum OptimizedExpr {
    Show 14 variants    Str(String),
        Insens(String),
        Range(String, String),
        Ident(String),
        PeekSlice(i32, Option<i32>),
        PosPred(Box<OptimizedExpr>),
        NegPred(Box<OptimizedExpr>),
        Seq(Box<OptimizedExpr>, Box<OptimizedExpr>),
        Choice(Box<OptimizedExpr>, Box<OptimizedExpr>),
        Opt(Box<OptimizedExpr>),
        Rep(Box<OptimizedExpr>),
        Skip(Vec<String>),
        Push(Box<OptimizedExpr>),
        RestoreOnErr(Box<OptimizedExpr>),
    }

Expand description

The optimized version of the pest AST’s `Expr`.

## Variants

### `Str(String)`

Matches an exact string, e.g. `"a"`

### `Insens(String)`

Matches an exact string, case insensitively (ASCII only), e.g. `^"a"`

### `Range(String, String)`

Matches one character in the range, e.g. `'a'..'z'`

### `Ident(String)`

Matches the rule with the given name, e.g. `a`

### `PeekSlice(i32, Option<i32>)`

Matches a custom part of the stack, e.g. `PEEK[..]`

### `PosPred(Box<OptimizedExpr>)`

Positive lookahead; matches expression without making progress, e.g. `&e`

### `NegPred(Box<OptimizedExpr>)`

Negative lookahead; matches if expression doesn’t match, without making progress, e.g. `!e`

### `Seq(Box<OptimizedExpr>, Box<OptimizedExpr>)`

Matches a sequence of two expressions, e.g. `e1 ~ e2`

### `Choice(Box<OptimizedExpr>, Box<OptimizedExpr>)`

Matches either of two expressions, e.g. `e1 | e2`

### `Opt(Box<OptimizedExpr>)`

Optionally matches an expression, e.g. `e?`

### `Rep(Box<OptimizedExpr>)`

Matches an expression zero or more times, e.g. `e*`

### `Skip(Vec<String>)`

Continues to match expressions until one of the strings in the `Vec` is found

### `Push(Box<OptimizedExpr>)`

Matches an expression and pushes it to the stack, e.g. `push(e)`

### `RestoreOnErr(Box<OptimizedExpr>)`

Restores an expression’s checkpoint

## Implementations

source

### impl OptimizedExpr

source

#### pub fn iter_top_down(&self) -> OptimizedExprTopDownIterator ⓘNotable traits for OptimizedExprTopDownIterator `impl Iterator for OptimizedExprTopDownIterator type Item = OptimizedExpr;`

Returns a top-down iterator over the `OptimizedExpr`.

source

#### pub fn map_top_down<F>(self, f: F) -> OptimizedExpr where
F: FnMut(OptimizedExpr) -> OptimizedExpr,

Applies `f` to the `OptimizedExpr` top-down.

source

#### pub fn map_bottom_up<F>(self, f: F) -> OptimizedExpr where
F: FnMut(OptimizedExpr) -> OptimizedExpr,

Applies `f` to the `OptimizedExpr` bottom-up.

## Trait Implementations

source

### impl Clone for OptimizedExpr

source

#### fn clone(&self) -> OptimizedExpr

Returns a copy of the value. Read more

1.0.0 · source

#### fn clone_from(&mut self, source: &Self)

Performs copy-assignment from `source`. Read more

source

### impl Debug for OptimizedExpr

source

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

Formats the value using the given formatter. Read more

source

### impl PartialEq<OptimizedExpr> for OptimizedExpr

source

#### fn eq(&self, other: &OptimizedExpr) -> bool

This method tests for `self` and `other` values to be equal, and is used by `==`. Read more

source

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

This method tests for `!=`.

source

### impl Eq for OptimizedExpr

source

### impl StructuralEq for OptimizedExpr

source

### impl StructuralPartialEq for OptimizedExpr

## Auto Trait Implementations

### impl RefUnwindSafe for OptimizedExpr

### impl Send for OptimizedExpr

### impl Sync for OptimizedExpr

### impl Unpin for OptimizedExpr

### impl UnwindSafe for OptimizedExpr

## 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,

const: unstable · source

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more

source

### impl<T> BorrowMut<T> for T where
T: ?Sized,

const: unstable · source

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more

source

### impl<T> From<T> for T

const: unstable · source

#### fn from(t: T) -> T

Returns the argument unchanged.

source

### impl<T, U> Into<U> for T where
U: From<T>,

const: unstable · 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> ToOwned for T where
T: Clone,

#### type Owned = T

The resulting type after obtaining ownership.

source

#### fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more

source

#### fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more

source

### impl<T, U> TryFrom<U> for T where
U: Into<T>,

#### type Error = Infallible

The type returned in the event of a conversion error.

const: unstable · 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>,

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

const: unstable · source

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.