use anyhow::Result; use wasmtime::*; fn main() -> Result<()> { let engine = Engine::default (); let module = Module::from_file (&engine, "wasm_guest/pkg/wasm_guest_bg.wasm")?; let linker = Linker::new (&engine); let mut store = Store::new (&engine, ()); let instance = linker.instantiate (&mut store, &module)?; { let malloc = instance.get_typed_func::<(i32), (i32), _> (&mut store, "our_malloc")?; let parse_string = instance.get_typed_func::<(i32, i32), (f64), _> (&mut store, "parse_string")?; let memory = instance.get_memory (&mut store, "memory").unwrap (); let s = "{\"bogus\": 42}"; let ptr = malloc.call (&mut store, (s.len () as i32))?; dbg! (ptr); memory.write (&mut store, ptr as usize, s.as_bytes ()); dbg! (parse_string.call (&mut store, (ptr, s.len () as i32))?); } Ok(()) }