pub struct TermEnv {
pub terms: Vec<Term>,
pub term_map: StableMap<Sym, TermId>,
pub rules: Vec<Rule>,
pub converters: StableMap<(TypeId, TypeId), TermId>,
}
Expand description
The term environment.
This is sort of a typed and reorganized AST that more directly reflects ISLE semantics than the input ISLE source code (where as the AST is the opposite).
Fields§
§terms: Vec<Term>
Arena of interned terms defined in this ISLE program.
This is indexed by TermId
.
term_map: StableMap<Sym, TermId>
A map from am interned Term
’s name to its TermId
.
rules: Vec<Rule>
Arena of interned rules defined in this ISLE program.
This is indexed by RuleId
.
converters: StableMap<(TypeId, TypeId), TermId>
Map from (inner_ty, outer_ty) pairs to term IDs, giving the defined implicit type-converter terms we can try to use to fit types together.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for TermEnv
impl RefUnwindSafe for TermEnv
impl Send for TermEnv
impl Sync for TermEnv
impl Unpin for TermEnv
impl UnwindSafe for TermEnv
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
)