```rust fn main() -> Result<(), Error> { let import_object = imports! { "env" => { "abort" => func!(abort), }, };
let mut instance = instantiate(&wasm[..], &import_object)?;
let add: Func<(i32, i32), i32> = instance.func("add")?;
// if add throws an exception abort is called
let value = add.call(42, 2)?;
assert_eq!(value, 44);
Ok(())
}
fn abort(ctx: &mut Ctx, message: i32, filename: i32, line: i32, col: i32) { let memory = ctx.memory(0); let message = ASReader::readstring(message, memory).unwrap(); let filename = ASReader::readstring(filename, memory).unwrap(); eprintln!("Error: {} at {}:{} col: {}", message, filename, line, col); } ```