[][src]Struct metered_wasmi::ModuleRef

pub struct ModuleRef(_);

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>

pub fn func_by_index(&self, idx: u32) -> Option<FuncRef>[src]

pub fn globals<'a>(&self) -> Ref<Vec<GlobalRef>>[src]

Access all globals. This is a non-standard API so it's unlikely to be portable to other engines.

pub fn invoke_export<E: Externals>(
    &self,
    func_name: &str,
    args: &[RuntimeValue],
    externals: &mut E
) -> Result<Option<RuntimeValue>, Error>
[src]

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)),
);

pub fn invoke_export_with_stack<E: Externals>(
    &self,
    func_name: &str,
    args: &[RuntimeValue],
    externals: &mut E,
    stack_recycler: &mut StackRecycler
) -> Result<Option<RuntimeValue>, Error>
[src]

Invoke exported function by a name using recycled stacks.

Errors

Same as invoke_export.

pub fn export_by_name(&self, name: &str) -> Option<ExternVal>[src]

Find export by a name.

Returns None if there is no export with such name.

Trait Implementations

impl ModuleImportResolver for ModuleRef[src]

impl Clone for ModuleRef[src]

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Deref for ModuleRef[src]

type Target = ModuleInstance

The resulting type after dereferencing.

Auto Trait Implementations

impl !Send for ModuleRef

impl Unpin for ModuleRef

impl !Sync for ModuleRef

impl !UnwindSafe for ModuleRef

impl !RefUnwindSafe for ModuleRef

Blanket Implementations

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]