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 Thunk::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