pub fn add_to_linker_async<T: WasiView>(linker: &mut Linker<T>) -> Result<()>
Expand description
Add all WASI interfaces from this crate into the linker
provided.
This function will add the async
variant of all interfaces into the
[Linker
] provided. By async
this means that this function is only
compatible with Config::async_support(true)
. For embeddings with
async support disabled see add_to_linker_sync
instead.
This function will add all interfaces implemented by this crate to the
[Linker
], which corresponds to the wasi:cli/imports
world supported by
this crate.
ยงExample
use wasmtime::{Engine, Result, Store, Config};
use wasmtime::component::{ResourceTable, Linker};
use wasmtime_wasi::{WasiCtx, WasiView, WasiCtxBuilder};
fn main() -> Result<()> {
let mut config = Config::new();
config.async_support(true);
let engine = Engine::new(&config)?;
let mut linker = Linker::<MyState>::new(&engine);
wasmtime_wasi::add_to_linker_async(&mut linker)?;
// ... add any further functionality to `linker` if desired ...
let mut builder = WasiCtxBuilder::new();
// ... configure `builder` more to add env vars, args, etc ...
let mut store = Store::new(
&engine,
MyState {
ctx: builder.build(),
table: ResourceTable::new(),
},
);
// ... use `linker` to instantiate within `store` ...
Ok(())
}
struct MyState {
ctx: WasiCtx,
table: ResourceTable,
}
impl WasiView for MyState {
fn ctx(&mut self) -> &mut WasiCtx { &mut self.ctx }
fn table(&mut self) -> &mut ResourceTable { &mut self.table }
}