pub enum CoreFrame<A> {
Var(VarId),
Lit(Literal),
App {
fun: A,
arg: A,
},
Lam {
binder: VarId,
body: A,
},
LetNonRec {
binder: VarId,
rhs: A,
body: A,
},
LetRec {
bindings: Vec<(VarId, A)>,
body: A,
},
Case {
scrutinee: A,
binder: VarId,
alts: Vec<Alt<A>>,
},
Con {
tag: DataConId,
fields: Vec<A>,
},
Join {
label: JoinId,
params: Vec<VarId>,
rhs: A,
body: A,
},
Jump {
label: JoinId,
args: Vec<A>,
},
PrimOp {
op: PrimOpKind,
args: Vec<A>,
},
}Expand description
A single node in the Core expression tree.
Parameterized over A to support both direct recursion and flat-vector indices.
Variants§
Trait Implementations§
impl<A: Eq> Eq for CoreFrame<A>
impl<A> StructuralPartialEq for CoreFrame<A>
Auto Trait Implementations§
impl<A> Freeze for CoreFrame<A>where
A: Freeze,
impl<A> RefUnwindSafe for CoreFrame<A>where
A: RefUnwindSafe,
impl<A> Send for CoreFrame<A>where
A: Send,
impl<A> Sync for CoreFrame<A>where
A: Sync,
impl<A> Unpin for CoreFrame<A>where
A: Unpin,
impl<A> UnsafeUnpin for CoreFrame<A>where
A: UnsafeUnpin,
impl<A> UnwindSafe for CoreFrame<A>where
A: UnwindSafe,
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