pub struct VMClosure {
pub chunk: Rc<Chunk>,
pub upvalues: Vec<NanBox>,
pub arity: u16,
pub name: Option<String>,
pub formals: Vec<(String, bool)>,
}Expand description
A compiled closure: the function’s bytecode chunk plus captured values.
Fields§
§chunk: Rc<Chunk>The function’s compiled bytecode.
upvalues: Vec<NanBox>Captured upvalues (values from enclosing scopes).
Stored as NanBox (the runtime frame representation) so that closure
capture and invocation are Rc-refcount clones, not deep VMValue<->NanBox
round-trips. The runtime CallFrame already holds Vec<NanBox>.
arity: u16Number of parameters this closure expects (1 for Nix lambdas, but pattern-match destructuring may set multiple locals).
name: Option<String>Name hint for error messages (e.g., the parameter name).
formals: Vec<(String, bool)>Formal parameter names and whether they have defaults.
Populated for pattern-destructuring lambdas ({ a, b ? 1 }: ...).
Empty for simple ident-param lambdas (x: ...).
Used by builtins.functionArgs.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for VMClosure
impl !Send for VMClosure
impl !Sync for VMClosure
impl !UnwindSafe for VMClosure
impl Freeze for VMClosure
impl Unpin for VMClosure
impl UnsafeUnpin for VMClosure
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.