32 lines
840 B
Rust
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(())
|
|
}
|