[−][src]Struct libslide::grammar::mem::RcExpr
An reference-counted version of an expression.
NB: counted expressions are equivalent if they point to the same underlying expression, even though two counted expressions may have different spans.
Fields
expr: Arc<Expr>
The underlying expression.
span: Span
The original span of this expression from an input source code. Even though the expression may be shared, this span is distinct and serves as a backwards-mapping to where the expression originally came from.
Implementations
impl RcExpr
[src]
pub(crate) fn new<Sp>(expr: Expr, span: Sp) -> Self where
Sp: Into<Span>,
[src]
Sp: Into<Span>,
Creates a new reference-counted expression at a span.
Trait Implementations
impl AsRef<Expr> for RcExpr
[src]
impl Clone for RcExpr
[src]
impl Debug for RcExpr
[src]
impl Deref for RcExpr
[src]
type Target = Self::Inner
The resulting type after dereferencing.
fn deref(&self) -> &Self::Target
[src]
impl Display for RcExpr
[src]
impl Emit for RcExpr
[src]
fn emit_pretty(&self, config: EmitConfig) -> String
[src]
fn emit_s_expression(&self, config: EmitConfig) -> String
[src]
fn emit_latex(&self, config: EmitConfig) -> String
[src]
fn emit(&self, form: EmitFormat, config: EmitConfig) -> String
[src]
fn emit_debug(&self, _config: EmitConfig) -> String
[src]
fn emit_wrapped_latex(&self, config: EmitConfig) -> String
[src]
impl Eq for RcExpr
[src]
impl From<RcExpr> for StmtKind
[src]
impl Grammar for RcExpr
[src]
impl Hash for RcExpr
[src]
fn hash<H: Hasher>(&self, state: &mut H)
[src]
fn hash_slice<H>(data: &[Self], state: &mut H) where
H: Hasher,
1.3.0[src]
H: Hasher,
impl MatchRule<RcExpr> for PatternMatch<RcExpr>
[src]
fn match_rule(rule: RcExprPat, target: RcExpr) -> Option<PatternMatch<RcExpr>>
[src]
impl Ord for RcExpr
[src]
fn cmp(&self, other: &Self) -> Ordering
[src]
#[must_use]fn max(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn min(self, other: Self) -> Self
1.21.0[src]
#[must_use]fn clamp(self, min: Self, max: Self) -> Self
[src]
impl PartialEq<RcExpr> for RcExpr
[src]
impl PartialOrd<RcExpr> for RcExpr
[src]
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
[src]
#[must_use]fn lt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn le(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn gt(&self, other: &Rhs) -> bool
1.0.0[src]
#[must_use]fn ge(&self, other: &Rhs) -> bool
1.0.0[src]
impl RcExpression for RcExpr
[src]
type Inner = Expr
The type of expression held by Self.
fn is_const(&self) -> bool
[src]
fn is_var(&self) -> bool
[src]
fn paren(inner: RcExpr, span: Span) -> Self
[src]
fn bracket(inner: RcExpr, span: Span) -> Self
[src]
fn binary(expr: BinaryExpr<Self>, span: Span) -> Self
[src]
fn unary(expr: UnaryExpr<Self>, span: Span) -> Self
[src]
fn empty(span: Span) -> Self
[src]
fn span(&self) -> Span
[src]
impl Transformer<RcExpr, RcExpr> for Rule
[src]
fn transform(&self, target: RcExpr) -> RcExpr
[src]
Attempts to apply a rule on a target expression by
-
Applying the rule recursively on the target's subexpression to obtain a partially-transformed target expression.
-
Pattern matching the lhs of the rule with the partially-transformed target expression.
- If pattern matching is unsuccessful, no application is done and the original expression is returned.
- Expanding the rhs of the rule using the results of the pattern matching.
Examples:
"$x + 0 -> $x".try_apply("x + 0") // Some(x) "$x + 0 -> $x".try_apply("x + 1") // None "$x + 0 -> $x".try_apply("x") // None
impl Transformer<RcExprPat, RcExpr> for PatternMatch<RcExpr>
[src]
fn transform(&self, item: RcExprPat) -> RcExpr
[src]
Transforms a pattern expression into an expression by replacing patterns with target
expressions known by the PatternMatch
.
This transformation can be used to apply a rule on an expression by transforming the RHS using patterns matched between the LHS of the rule and the target expression.
Auto Trait Implementations
impl RefUnwindSafe for RcExpr
impl Send for RcExpr
impl Sync for RcExpr
impl Unpin for RcExpr
impl UnwindSafe for RcExpr
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
fn to_owned(&self) -> T
[src]
fn clone_into(&self, target: &mut T)
[src]
impl<T> ToString for T where
T: Display + ?Sized,
[src]
T: Display + ?Sized,
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,