enum ThunkRepr {
Suspended {
lambda: Rc<Lambda>,
upvalues: Rc<Upvalues>,
span: Span,
},
Native(SuspendedNative),
Blackhole {
forced_at: Span,
suspended_at: Option<Span>,
content_span: Option<Span>,
},
Evaluated(Value),
}
Expand description
Internal representation of the different states of a thunk.
Upvalues must be finalised before leaving the initial state
(Suspended or RecursiveClosure). The [value()
] function may
not be called until the thunk is in the final state (Evaluated).
Variants§
Suspended
Thunk is closed over some values, suspended and awaiting execution.
Native(SuspendedNative)
Thunk is a suspended native computation.
Blackhole
Thunk currently under-evaluation; encountering a blackhole value means that infinite recursion has occured.
Fields
Evaluated(Value)
Fully evaluated thunk.
Implementations§
Trait Implementations§
Auto Trait Implementations§
impl Freeze for ThunkRepr
impl !RefUnwindSafe for ThunkRepr
impl !Send for ThunkRepr
impl !Sync for ThunkRepr
impl Unpin for ThunkRepr
impl !UnwindSafe for ThunkRepr
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> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more