Struct ModuleRef

Source
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>§

Source

pub fn globals(&self) -> Ref<'_, Vec<GlobalRef>>

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

Source

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

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>

Invoke exported function by a name using recycled stacks.

§Errors

Same as invoke_export.

Source

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.

Trait Implementations§

Source§

impl Clone for ModuleRef

Source§

fn clone(&self) -> ModuleRef

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ModuleRef

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Deref for ModuleRef

Source§

type Target = ModuleInstance

The resulting type after dereferencing.
Source§

fn deref(&self) -> &ModuleInstance

Dereferences the value.
Source§

impl ModuleImportResolver for ModuleRef

Source§

fn resolve_func( &self, field_name: &str, _signature: &Signature, ) -> Result<FuncRef, Error>

Resolve a function. Read more
Source§

fn resolve_global( &self, field_name: &str, _global_type: &GlobalDescriptor, ) -> Result<GlobalRef, Error>

Resolve a global variable. Read more
Source§

fn resolve_memory( &self, field_name: &str, _memory_type: &MemoryDescriptor, ) -> Result<MemoryRef, Error>

Resolve a memory. Read more
Source§

fn resolve_table( &self, field_name: &str, _table_type: &TableDescriptor, ) -> Result<TableRef, Error>

Resolve a table. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.