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