pub struct ModuleContext<'a> {
pub schemas: &'a TypeSchemaRegistry,
pub invoke_callable: Option<&'a dyn Fn(&ValueWord, &[ValueWord]) -> Result<ValueWord, String>>,
pub raw_invoker: Option<RawCallableInvoker>,
pub function_hashes: Option<&'a [Option<[u8; 32]>]>,
pub vm_state: Option<&'a dyn VmStateAccessor>,
pub granted_permissions: Option<PermissionSet>,
pub scope_constraints: Option<ScopeConstraints>,
pub set_pending_resume: Option<&'a dyn Fn(ValueWord)>,
pub set_pending_frame_resume: Option<&'a dyn Fn(usize, Vec<ValueWord>)>,
}Expand description
Execution context available to module functions during a VM call.
The VM constructs this before each module function dispatch and passes it by reference.
Fields§
§schemas: &'a TypeSchemaRegistryType schema registry — lookup types by name or ID.
invoke_callable: Option<&'a dyn Fn(&ValueWord, &[ValueWord]) -> Result<ValueWord, String>>Invoke a Shape callable (function/closure) from host code.
raw_invoker: Option<RawCallableInvoker>Raw invoker for extensions that need to capture a callable invoker beyond the borrow lifetime (e.g., CFFI callback userdata). Valid only for the duration of the current module function call.
function_hashes: Option<&'a [Option<[u8; 32]>]>Content-addressed function hashes indexed by function ID.
Provided by the VM when content-addressed metadata is available.
Uses raw [u8; 32] to avoid a dependency on shape-vm’s FunctionHash.
vm_state: Option<&'a dyn VmStateAccessor>Read-only access to VM state (call frames, locals, etc.). Provided by the VM when state introspection is needed.
granted_permissions: Option<PermissionSet>Permissions granted to the current execution context.
When Some, module functions check this before performing I/O.
When None, all operations are allowed (backwards compatible).
scope_constraints: Option<ScopeConstraints>Scope constraints for the current execution context. Narrows permissions to specific paths, hosts, etc.
set_pending_resume: Option<&'a dyn Fn(ValueWord)>Callback for state.resume() to request full VM state restoration.
The module function stores the snapshot; the dispatch loop applies it
after the current instruction completes.
set_pending_frame_resume: Option<&'a dyn Fn(usize, Vec<ValueWord>)>Callback for state.resume_frame() to request mid-function resume.
Stores (ip_offset, locals) so the dispatch loop can override the
call frame set up by invoke_callable.
Auto Trait Implementations§
impl<'a> Freeze for ModuleContext<'a>
impl<'a> !RefUnwindSafe for ModuleContext<'a>
impl<'a> !Send for ModuleContext<'a>
impl<'a> !Sync for ModuleContext<'a>
impl<'a> Unpin for ModuleContext<'a>
impl<'a> UnsafeUnpin for ModuleContext<'a>
impl<'a> !UnwindSafe for ModuleContext<'a>
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
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>
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