pub enum Cont {
Show 25 variants
Prim1Finish {
op: Prim1,
},
Prim2Right {
env: Env,
op: Prim2,
e2: RcExp,
},
Prim2Finish {
op: Prim2,
v1: Val,
},
AppArgs {
env: Env,
args: Box<[RcExp]>,
done: Vec<Val>,
},
ApplyArgs {
env: Env,
args: RcExp,
},
ApplyFinish {
f: Val,
},
LiftFunClo {
env: Env,
f: RcExp,
},
LiftFunGo {
arity: u16,
},
OpArgs {
idx: u16,
env: Env,
args: Vec<RcExp>,
next: usize,
done: Vec<Val>,
},
IfDispatch {
env: Env,
then_: RcExp,
else_: RcExp,
},
LetBody {
env: Env,
body: RcExp,
},
CatchExit {
saved: Scope,
},
ThrowFinish,
LiftFinish,
ForceCode {
mode: ForceMode,
then: Then,
},
LiftCloFinish {
arity: u16,
then: Then,
},
ReifyVExit {
saved: Scope,
},
RunNowExit {
saved_level: usize,
},
LiftRefDispatch {
env: Env,
e2: RcExp,
},
LiftRefPersist,
RunDispatch {
env: Env,
e: RcExp,
},
IsCodeRight {
env: Env,
e2: RcExp,
},
IsCodeFinish {
v1: Val,
},
EvalmsRight {
env: Env,
e2: RcExp,
},
EvalmsFinish {
env_val: Val,
},
}Variants§
Prim1Finish
Prim2Right
Prim2Finish
AppArgs
The operator goes into done alongside the arguments because that is
the frame the callee is entered under - a closure binds itself first.
So an empty done means the operator is still being evaluated, which is
how receives tells operator position from argument position.
ApplyArgs
ApplyFinish
LiftFunClo
LiftFunGo
OpArgs
IfDispatch
LetBody
CatchExit
Carries the staging state to roll back to, so an abandoned region leaves no half-built block behind.
ThrowFinish
LiftFinish
ForceCode
The iterative form of the reference’s force-code, so a closure
η-expansion grows the continuation stack rather than Rust’s.
LiftCloFinish
ReifyVExit
A block that stayed empty means nothing staged, so the value passes through unchanged.
RunNowExit
LiftRefDispatch
LiftRefPersist
RunDispatch
IsCodeRight
IsCodeFinish
EvalmsRight
EvalmsFinish
Auto Trait Implementations§
impl Freeze for Cont
impl !RefUnwindSafe for Cont
impl Send for Cont
impl Sync for Cont
impl Unpin for Cont
impl !UnwindSafe for Cont
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