pub struct ModuleRef(/* private fields */);
Expand description
Reference to a ModuleInstance
.
This reference has a reference-counting semantics.
All ModuleInstance
have strong references to it’s components (i.e.
globals, memories, funcs, tables), however, this components have
weak references to it’s containing module. This might be a problem
at execution time.
So if have to make sure that all modules which might be needed at execution time should be retained.
Methods from Deref<Target = ModuleInstance>§
Sourcepub fn globals<'a>(&self) -> Ref<'_, Vec<GlobalRef>>
pub fn globals<'a>(&self) -> Ref<'_, Vec<GlobalRef>>
Access all globals. This is a non-standard API so it’s unlikely to be portable to other engines.
Sourcepub fn invoke_export<E: Externals>(
&self,
func_name: &str,
args: &[RuntimeValue],
externals: &mut E,
) -> Result<Option<RuntimeValue>, Error>
pub fn invoke_export<E: Externals>( &self, func_name: &str, args: &[RuntimeValue], externals: &mut E, ) -> Result<Option<RuntimeValue>, Error>
Invoke exported function by a name.
This function finds exported function by a name, and calls it with provided arguments and external state.
§Errors
Returns Err
if:
- there are no export with a given name or this export is not a function,
- given arguments doesn’t match to function signature,
- trap occurred at the execution time,
§Examples
Invoke a function that takes two numbers and returns sum of them.
assert_eq!(
instance.invoke_export(
"add",
&[RuntimeValue::I32(5), RuntimeValue::I32(3)],
&mut NopExternals,
).expect("failed to execute export"),
Some(RuntimeValue::I32(8)),
);
Sourcepub fn export_by_name(&self, name: &str) -> Option<ExternVal>
pub fn export_by_name(&self, name: &str) -> Option<ExternVal>
Find export by a name.
Returns None
if there is no export with such name.