diff --git a/crates/misc/rust/macro/src/lib.rs b/crates/misc/rust/macro/src/lib.rs index be1c1b4783..76e9c1d0bc 100644 --- a/crates/misc/rust/macro/src/lib.rs +++ b/crates/misc/rust/macro/src/lib.rs @@ -66,7 +66,7 @@ fn generate_load(item: &syn::ItemTrait) -> syn::Result { let mut imports: Vec = Vec::new(); if let Some(module_name) = data.find_wasi_module_name() { - let wasi_instance = wasmtime_wasi::create_wasi_instance(&store, &[], &[], &[]) + let wasi_instance = #root::wasmtime_wasi::create_wasi_instance(&store, &[], &[], &[]) .map_err(|e| format_err!("wasm instantiation error: {:?}", e))?; for i in module.borrow().imports().iter() { if i.module().as_str() != module_name { @@ -112,6 +112,14 @@ fn generate_methods(item: &syn::ItemTrait) -> syn::Result { if let Some(t) = &method.sig.asyncness { bail!(t, "cannot be `async`"); } + match &method.sig.inputs.first() { + Some(syn::FnArg::Receiver(_)) => {} + Some(t) => bail!(t, "first arugment needs to be \"self\""), + None => bail!( + method.sig, + "trait method requires at least one argument which needs to be \"self\"" + ), + } let mut args = Vec::new(); for arg in method.sig.inputs.iter() { diff --git a/crates/misc/rust/src/lib.rs b/crates/misc/rust/src/lib.rs index 4e3ce43098..027076958e 100644 --- a/crates/misc/rust/src/lib.rs +++ b/crates/misc/rust/src/lib.rs @@ -7,6 +7,7 @@ pub mod __rt { pub use wasmtime_api; pub use wasmtime_interface_types; pub use wasmtime_jit; + pub use wasmtime_wasi; use std::convert::{TryFrom, TryInto}; use wasmtime_interface_types::Value;