pub enum ReifyResume {
IfTrueDone {
c: RcExp,
env: Env,
f: RcExp,
},
IfFalseDone {
c: RcExp,
t: RcExp,
},
RunStaged {
b: RcExp,
},
RunNowInner {
env: Env,
},
LiftRefDone {
s1: RcExp,
},
TopLevel,
}Expand description
Discriminator for what shape of staged Exp to assemble when a reify scope completes. Each reify scope in the recursive code corresponds to one of these — the resume action knows what surrounding Exp the reified body slots into.
Variants§
IfTrueDone
Exp::If(c, t, f) with c=Code: t was being reified; f still
needs reifying. Push a fresh ReifyCExit { resume: IfFalseDone }
scope when this fires.
Fields
IfFalseDone
Both branches reified; reflect the staged If(c, t, f).
RunStaged
Exp::Run(b, e) with b=Code: reify e, reflect Run(b, e’).
RunNowInner
Exp::Run(b, e) run-now path: inner reifyc completed, now do
outer reifyv.
LiftRefDone
Exp::LiftRef(e1, e2) with e1=Code: reify e2, reflect LiftRef.
TopLevel
Resume from evalmsg-style top-level reifyv. The result is
returned directly (no surrounding staged Exp).
Auto Trait Implementations§
impl Freeze for ReifyResume
impl RefUnwindSafe for ReifyResume
impl !Send for ReifyResume
impl !Sync for ReifyResume
impl Unpin for ReifyResume
impl UnwindSafe for ReifyResume
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