Skip to main content

add_to_linker

Function add_to_linker 

Source
pub fn add_to_linker<T>(linker: &mut Linker<T>) -> Result<()>
where T: WasiHttpView + 'static,
Available on crate feature p3 only.
Expand description

Add all 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:http/imports world supported by this module.

ยงExample

use wasmtime::{Engine, Result, Store, Config};
use wasmtime::component::{Linker, ResourceTable};
use wasmtime_wasi_http::{WasiHttpCtx, p3::{WasiHttpCtxView, WasiHttpView}};

fn main() -> Result<()> {
    let mut config = Config::new();
    config.wasm_component_model_async(true);
    let engine = Engine::new(&config)?;

    let mut linker = Linker::<MyState>::new(&engine);
    wasmtime_wasi_http::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 {
    http: WasiHttpCtx,
    table: ResourceTable,
}

impl WasiHttpView for MyState {
    fn http(&mut self) -> WasiHttpCtxView<'_> {
        WasiHttpCtxView {
            ctx: &mut self.http,
            table: &mut self.table,
            hooks: Default::default(),
        }
    }
}