Struct cranelift_isle::sema::Rule
source · 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,
}
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.
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.