pub fn add_to_linker<T>(linker: &mut Linker<T>) -> Result<()>where
T: WasiView + 'static,
Available on crate feature
p3
only.Expand description
Add all WASI interfaces from this module into the linker
provided.
This function will add all interfaces implemented by this module to the
Linker
, which corresponds to the wasi:cli/imports
world supported by
this module.
ยงExample
use wasmtime::{Engine, Result, Store, Config};
use wasmtime::component::{Linker, ResourceTable};
use wasmtime_wasi::{WasiCtx, WasiCtxView, WasiView};
fn main() -> Result<()> {
let mut config = Config::new();
config.async_support(true);
config.wasm_component_model_async(true);
let engine = Engine::new(&config)?;
let mut linker = Linker::<MyState>::new(&engine);
wasmtime_wasi::p3::add_to_linker(&mut linker)?;
// ... add any further functionality to `linker` if desired ...
let mut store = Store::new(
&engine,
MyState::default(),
);
// ... use `linker` to instantiate within `store` ...
Ok(())
}
#[derive(Default)]
struct MyState {
ctx: WasiCtx,
table: ResourceTable,
}
impl WasiView for MyState {
fn ctx(&mut self) -> WasiCtxView<'_> {
WasiCtxView{
ctx: &mut self.ctx,
table: &mut self.table,
}
}
}