pub struct Rule {
pub id: RuleId,
pub root_term: TermId,
pub args: Vec<Pattern>,
pub iflets: Vec<IfLet>,
pub rhs: Expr,
pub vars: Vec<BoundVar>,
pub prio: i64,
pub pos: Pos,
pub name: Option<Sym>,
}
Expand description
A term rewrite rule.
Fields§
§id: RuleId
This rule’s id.
root_term: TermId
The left-hand side pattern that this rule matches.
args: Vec<Pattern>
Patterns to test against the root term’s arguments.
iflets: Vec<IfLet>
Any subpattern “if-let” clauses.
rhs: Expr
The right-hand side expression that this rule evaluates upon successful match.
vars: Vec<BoundVar>
Variable names used in this rule, indexed by VarId.
prio: i64
The priority of this rule, defaulted to 0 if it was missing in the source.
pos: Pos
The source position where this rule is defined.
name: Option<Sym>
The optional name for this rule.
Implementations§
Source§impl Rule
impl Rule
Sourcepub fn visit<V: RuleVisitor>(
&self,
visitor: &mut V,
termenv: &TermEnv,
) -> V::Expr
pub fn visit<V: RuleVisitor>( &self, visitor: &mut V, termenv: &TermEnv, ) -> V::Expr
Recursively visit every pattern and expression in this rule. Returns the RuleVisitor::Expr that was returned from RuleVisitor::add_expr when that function was called on the rule’s right-hand side.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Rule
impl RefUnwindSafe for Rule
impl Send for Rule
impl Sync for Rule
impl Unpin for Rule
impl UnwindSafe for Rule
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more