wasi-process 0.1.1

A library to run wasi modules as pseudo-processes
Documentation

A library to run wasi modules as pseudo-processes.

# fn main() -> Result<(), Box<dyn std::error::Error>> {
# use tokio::prelude::*; tokio::runtime::Runtime::new().unwrap().block_on(async {
use wasmer_wasi::{WasiVersion, state::WasiState};
use wasi_process::WasiProcess;
let wasm = include_bytes!("../helloworld.wasm"); // just write(1, "Hello, World!\n", 14)
let module = wasmer_runtime::compile(wasm)?;
let mut state = WasiState::new("progg");
wasi_process::add_stdio(&mut state);
state.args(&["foo", "bar"]);
let imports = wasmer_wasi::generate_import_object_from_state(
state.build()?,
wasmer_wasi::get_wasi_version(&module, false).unwrap_or(WasiVersion::Latest),
);
let mut wasi = WasiProcess::new(module.instantiate(&imports)?);
let mut stdout = wasi.stdout.take().unwrap();
wasi.spawn();
let mut out = String::new();
stdout.read_to_string(&mut out).await?;
assert_eq!(out, "Hello, World!\n");
# Ok(()) })
# }