[][src]Macro wasmer_runtime_near::func

macro_rules! func {
    ($func:expr) => { ... };
}

Helper macro to create a new Func object using the provided function pointer.

Usage

Function pointers or closures are supported. Closures can capture their environment (with move). The first parameter is likely to be of kind vm::Ctx, though it can be optional.


// A function that has access to `vm::Ctx`.
fn func_with_vmctx(_: &mut vm::Ctx, n: i32) -> i32 {
    n
}

// A function that cannot access `vm::Ctx`.
fn func(n: i32) -> i32 {
    n
}

let i = 7;

let import_object = imports! {
    "env" => {
        "foo" => func!(func_with_vmctx),
        "bar" => func!(func),
        // A closure with a captured environment, and an access to `vm::Ctx`.
        "baz" => func!(move |_: &mut vm::Ctx, n: i32| -> i32 {
            n + i
        }),
        // A closure without a captured environment, and no access to `vm::Ctx`.
        "qux" => func!(|n: i32| -> i32 {
            n
        }),
    },
};