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.
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)