use anyhow::Result; wit_bindgen_wasmtime::export!("../../tests/runtime/smoke/imports.wit"); #[derive(Default)] pub struct MyImports { hit: bool, } impl imports::Imports for MyImports { fn thunk(&mut self) { self.hit = true; println!("in the host"); } } wit_bindgen_wasmtime::import!("../../tests/runtime/smoke/exports.wit"); fn run(wasm: &str) -> Result<()> { let (exports, mut store) = crate::instantiate( wasm, |linker| imports::add_to_linker(linker, |cx| -> &mut MyImports { &mut cx.imports }), |store, module, linker| { exports::Exports::instantiate(store, module, linker, |cx| &mut cx.exports) }, )?; exports.thunk(&mut store)?; assert!(store.data().imports.hit); Ok(()) }