blob: 70de73e09e3ea5bb0cfb5bf50841ff3aabb919a9 (
plain)
#![no_main]
use tinywasm::{FuncContext, HostFunction, ModuleInstance};
#[link(wasm_import_module = "env")]
unsafe extern "C" {
fn printi32(x: i32);
}
#[unsafe(no_mangle)]
pub extern "C" fn hello() {
let _ = run();
}
fn run() -> tinywasm::Result<()> {
let module = tinywasm::parse_stream(&include_bytes!("./print.wasm")[..])?;
let mut store = tinywasm::Store::default();
let printi32 = HostFunction::from(&mut store, |_: FuncContext<'_>, v: i32| {
unsafe { printi32(v) }
Ok(())
});
let mut imports = tinywasm::Imports::new();
imports.define("env", "printi32", printi32);
let instance = ModuleInstance::instantiate(&mut store, &module, Some(imports))?;
let add_and_print = instance.func::<(i32, i32), ()>(&store, "add_and_print")?;
add_and_print.call(&mut store, (1, 2))?;
Ok(())
}
|