Cont

Enum Cont 

Source
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

Fields

§

Prim2Right

Fields

§env: Env
§

Prim2Finish

Fields

§v1: Val
§

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.

Fields

§env: Env
§args: Box<[RcExp]>
§done: Vec<Val>
§

ApplyArgs

Fields

§env: Env
§args: RcExp
§

ApplyFinish

Fields

§

LiftFunClo

Fields

§env: Env
§

LiftFunGo

Fields

§arity: u16
§

OpArgs

Fields

§idx: u16
§env: Env
§args: Vec<RcExp>
§next: usize
§done: Vec<Val>
§

IfDispatch

Fields

§env: Env
§then_: RcExp
§else_: RcExp
§

LetBody

Fields

§env: Env
§body: RcExp
§

CatchExit

Carries the staging state to roll back to, so an abandoned region leaves no half-built block behind.

Fields

§saved: Scope
§

ThrowFinish

§

LiftFinish

§

ForceCode

The iterative form of the reference’s force-code, so a closure η-expansion grows the continuation stack rather than Rust’s.

Fields

§then: Then
§

LiftCloFinish

Fields

§arity: u16
§then: Then
§

ReifyVExit

A block that stayed empty means nothing staged, so the value passes through unchanged.

Fields

§saved: Scope
§

RunNowExit

Fields

§saved_level: usize
§

LiftRefDispatch

Fields

§env: Env
§

LiftRefPersist

§

RunDispatch

Fields

§env: Env
§

IsCodeRight

Fields

§env: Env
§

IsCodeFinish

Fields

§v1: Val
§

EvalmsRight

Fields

§env: Env
§

EvalmsFinish

Fields

§env_val: Val

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.