pub struct VMThunk {
pub state: Rc<Cell<Option<ThunkState>>>,
}Expand description
A lazy thunk with memoization and blackhole detection.
Fields§
§state: Rc<Cell<Option<ThunkState>>>Implementations§
Source§impl VMThunk
impl VMThunk
Sourcepub fn new_done(value: VMValue) -> Self
pub fn new_done(value: VMValue) -> Self
Create a thunk that is already evaluated (optimization).
Sourcepub fn new_native<F>(callback: F) -> Self
pub fn new_native<F>(callback: F) -> Self
Create a native callback thunk from a Rust closure.
The callback is invoked lazily the first time the thunk is forced, and the result is memoized. Used by the builtin bridge to wrap tree-walker computations that should be deferred.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for VMThunk
impl !Send for VMThunk
impl !Sync for VMThunk
impl !UnwindSafe for VMThunk
impl Freeze for VMThunk
impl Unpin for VMThunk
impl UnsafeUnpin for VMThunk
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.