Sha256: 5f3d829e8f4eeb7f014f5db5699e74c283a3aff2e49fc002594498d1ad0c720e

Contents?: true

Size: 1.13 KB

Versions: 12

Compression:

Stored size: 1.13 KB

Contents

use std::path::Path;
use wasi_common::WasiCtx;
use wasmtime::*;

pub fn create_instance(module_name: &str) -> (Store<WasiCtx>, Instance) {
    let wasi = deterministic_wasi_ctx::build_wasi_ctx();
    let engine = Engine::default();
    let mut linker = Linker::new(&engine);
    wasi_common::sync::add_to_linker(&mut linker, |s| s).unwrap();
    let module_path = Path::new("../../target/wasm32-wasi/debug").join(module_name);
    let module = Module::from_file(&engine, module_path).unwrap();
    let mut store = Store::new(&engine, wasi);
    linker.module(&mut store, "", &module).unwrap();
    let instance = linker.instantiate(&mut store, &module).unwrap();
    (store, instance)
}

pub fn invoke_func<Params, Results>(
    mut store: Store<WasiCtx>,
    instance: Instance,
    func_name: &str,
    params: Params,
) -> Results
where
    Params: WasmParams,
    Results: WasmResults,
{
    let answer = instance
        .get_func(&mut store, func_name)
        .unwrap_or_else(|| panic!("`{}` was not an exported function", func_name));
    let answer = answer.typed::<Params, Results>(&store).unwrap();
    answer.call(&mut store, params).unwrap()
}

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
wasmtime-28.0.0 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.28/tests/common/mod.rs
wasmtime-27.0.0 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.27/tests/common/mod.rs
wasmtime-26.0.0 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.26/tests/common/mod.rs
wasmtime-25.0.2 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.25/tests/common/mod.rs
wasmtime-25.0.1 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.25/tests/common/mod.rs
wasmtime-25.0.0 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.25/tests/common/mod.rs
wasmtime-24.0.0 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.24/tests/common/mod.rs
wasmtime-23.0.2 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.23/tests/common/mod.rs
wasmtime-22.0.0 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.22/tests/common/mod.rs
wasmtime-21.0.1 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.22/tests/common/mod.rs
wasmtime-20.0.2 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.21/tests/common/mod.rs
wasmtime-20.0.0 ./ext/cargo-vendor/deterministic-wasi-ctx-0.1.21/tests/common/mod.rs