pub trait FunctionRuntime: Sealed {
// Required methods
unsafe fn find_upvalue(&self, level: TValue) -> VmErrorResult<UpVal>;
unsafe fn close(&self, level: TValue);
unsafe fn close_upvalue(&self, upvalue: UpVal, dead: bool);
unsafe fn record_hit(
&self,
caller: Closure,
target: Closure,
slot_id: u32,
) -> bool;
unsafe fn new_proto(&self) -> VmErrorResult<Proto>;
unsafe fn new_lua_closure(
&self,
element_count: i32,
environment: Option<Table>,
proto: Proto,
) -> VmErrorResult<Closure>;
unsafe fn new_native_closure(
&self,
element_count: i32,
environment: Option<Table>,
) -> VmErrorResult<Closure>;
unsafe fn free_proto(&self, proto: Proto, page: LuaPage);
unsafe fn free_closure(&self, closure: Closure, page: LuaPage);
unsafe fn free_upvalue(&self, upvalue: UpVal, page: LuaPage);
}Expand description
Unstable function-object allocation and lifetime capability.
§Safety
Function, upvalue, page, and stack handles must be live and belong to this thread’s VM. Counts and sizes must match their layouts, and callers must preserve rooting, open-upvalue ordering, and GC barriers.
Required Methods§
Sourceunsafe fn find_upvalue(&self, level: TValue) -> VmErrorResult<UpVal>
unsafe fn find_upvalue(&self, level: TValue) -> VmErrorResult<UpVal>
luaF_findupval
Sourceunsafe fn close_upvalue(&self, upvalue: UpVal, dead: bool)
unsafe fn close_upvalue(&self, upvalue: UpVal, dead: bool)
luaF_closeupval
Sourceunsafe fn record_hit(
&self,
caller: Closure,
target: Closure,
slot_id: u32,
) -> bool
unsafe fn record_hit( &self, caller: Closure, target: Closure, slot_id: u32, ) -> bool
luaF_recordhit
Sourceunsafe fn new_proto(&self) -> VmErrorResult<Proto>
unsafe fn new_proto(&self) -> VmErrorResult<Proto>
luaF_newproto
Sourceunsafe fn new_lua_closure(
&self,
element_count: i32,
environment: Option<Table>,
proto: Proto,
) -> VmErrorResult<Closure>
unsafe fn new_lua_closure( &self, element_count: i32, environment: Option<Table>, proto: Proto, ) -> VmErrorResult<Closure>
luaF_newLclosure
Sourceunsafe fn new_native_closure(
&self,
element_count: i32,
environment: Option<Table>,
) -> VmErrorResult<Closure>
unsafe fn new_native_closure( &self, element_count: i32, environment: Option<Table>, ) -> VmErrorResult<Closure>
luaF_newCclosure
Sourceunsafe fn free_proto(&self, proto: Proto, page: LuaPage)
unsafe fn free_proto(&self, proto: Proto, page: LuaPage)
luaF_freeproto
Sourceunsafe fn free_closure(&self, closure: Closure, page: LuaPage)
unsafe fn free_closure(&self, closure: Closure, page: LuaPage)
luaF_freeclosure
Sourceunsafe fn free_upvalue(&self, upvalue: UpVal, page: LuaPage)
unsafe fn free_upvalue(&self, upvalue: UpVal, page: LuaPage)
luaF_freeupval
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".