[][src]Struct wasmer_runtime::ImportObject

pub struct ImportObject {
    pub allow_missing_functions: bool,
    // some fields omitted
}

All of the import data used when instantiating.

It's suggested that you use the imports! macro instead of creating an ImportObject by hand.

Usage:

let import_object = imports! {
    "env" => {
        "foo" => func!(foo),
    },
};

fn foo(_: &mut Ctx, n: i32) -> i32 {
    n
}

Fields

allow_missing_functions: bool

Allow missing functions to be generated and instantiation to continue when required functions are not provided.

Implementations

impl ImportObject[src]

pub fn new() -> ImportObject[src]

Create a new ImportObject.

pub fn new_with_data<F>(state_creator: F) -> ImportObject where
    F: Fn() -> (*mut c_void, fn(*mut c_void)) + 'static + Send + Sync
[src]

Create a new ImportObject which generates data from the provided state creator.

pub fn register<S, N>(
    &mut self,
    name: S,
    namespace: N
) -> Option<Box<dyn LikeNamespace + 'static>> where
    N: LikeNamespace + Send + 'static,
    S: Into<String>, 
[src]

Register anything that implements LikeNamespace as a namespace.

Usage:

fn register(instance: Instance, namespace: Namespace) {
    let mut import_object = ImportObject::new();

    import_object.register("namespace0", instance);
    import_object.register("namespace1", namespace);
    // ...
}

pub fn with_namespace<Func, InnerRet>(
    &self,
    namespace: &str,
    f: Func
) -> Option<InnerRet> where
    Func: FnOnce(&(dyn LikeNamespace + Send)) -> InnerRet, 
[src]

Apply a function on the namespace if it exists If your function can fail, consider using maybe_with_namespace

pub fn maybe_with_namespace<Func, InnerRet>(
    &self,
    namespace: &str,
    f: Func
) -> Option<InnerRet> where
    Func: FnOnce(&(dyn LikeNamespace + Send)) -> Option<InnerRet>, 
[src]

The same as with_namespace but takes a function that may fail

Usage:

fn get_export(imports: &ImportObject, namespace: &str, name: &str) -> Option<Export> {
    imports.maybe_with_namespace(namespace, |ns| ns.get_export(name))
}

pub fn contains_namespace(&self, name: &str) -> bool[src]

Returns true if the ImportObject contains namespace with the provided name.

Trait Implementations

impl Clone for ImportObject[src]

impl Extend<(String, String, Export)> for ImportObject[src]

impl IntoIterator for ImportObject[src]

type IntoIter = ImportObjectIterator

Which kind of iterator are we turning this into?

type Item = (String, String, Export)

The type of the elements being iterated over.

Auto Trait Implementations

Blanket Implementations

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

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

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

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

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

impl<I> IntoIterator for I where
    I: Iterator
[src]

type Item = <I as Iterator>::Item

The type of the elements being iterated over.

type IntoIter = I

Which kind of iterator are we turning this into?

impl<T> Same<T> for T

type Output = T

Should always be Self

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.