wasm_test/src/main.rs

32 lines
840 B
Rust

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(())
}