Struct wasmtime_wasi::bindings::Command
source · pub struct Command { /* private fields */ }
Expand description
Asynchronous bindings to execute and run a wasi:cli/command
.
This structure is automatically generated by bindgen!
and is intended to
be used with Config::async_support(true)
. For the synchronous
version see bindings::sync::Command
.
This can be used for a more “typed” view of executing a command component
through the Command::wasi_cli_run
method plus
Guest::call_run
.
§Examples
use wasmtime::{Engine, Result, Store, Config};
use wasmtime::component::{ResourceTable, Linker, Component};
use wasmtime_wasi::{WasiCtx, WasiView, WasiCtxBuilder};
use wasmtime_wasi::bindings::Command;
// This example is an example shim of executing a component based on the
// command line arguments provided to this program.
#[tokio::main]
async fn main() -> Result<()> {
let args = std::env::args().skip(1).collect::<Vec<_>>();
// Configure and create `Engine`
let mut config = Config::new();
config.async_support(true);
let engine = Engine::new(&config)?;
// Configure a `Linker` with WASI, compile a component based on
// command line arguments, and then pre-instantiate it.
let mut linker = Linker::<MyState>::new(&engine);
wasmtime_wasi::add_to_linker_async(&mut linker)?;
let component = Component::from_file(&engine, &args[0])?;
// Configure a `WasiCtx` based on this program's environment. Then
// build a `Store` to instantiate into.
let mut builder = WasiCtxBuilder::new();
builder.inherit_stdio().inherit_env().args(&args);
let mut store = Store::new(
&engine,
MyState {
ctx: builder.build(),
table: ResourceTable::new(),
},
);
// Instantiate the component and we're off to the races.
let command = Command::instantiate_async(&mut store, &component, &linker).await?;
let program_result = command.wasi_cli_run().call_run(&mut store).await?;
match program_result {
Ok(()) => Ok(()),
Err(()) => std::process::exit(1),
}
}
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 }
}
Auto-generated bindings for an instance a component which
implements the world command
.
This structure is created through either
Command::instantiate_async
or by first creating
a CommandPre
followed by using
CommandPre::instantiate_async
.
Implementations§
source§impl Command
impl Command
sourcepub async fn instantiate_async<_T>(
store: impl AsContextMut<Data = _T>,
component: &Component,
linker: &Linker<_T>,
) -> Result<Command>where
_T: Send,
pub async fn instantiate_async<_T>(
store: impl AsContextMut<Data = _T>,
component: &Component,
linker: &Linker<_T>,
) -> Result<Command>where
_T: Send,
Convenience wrapper around CommandPre::new
and
CommandPre::instantiate_async
.
pub fn add_to_linker<T, U>( linker: &mut Linker<T>, get: impl Fn(&mut T) -> &mut U + Send + Sync + Copy + 'static, ) -> Result<()>
pub fn wasi_cli_run(&self) -> &Guest
Auto Trait Implementations§
impl Freeze for Command
impl RefUnwindSafe for Command
impl Send for Command
impl Sync for Command
impl Unpin for Command
impl UnwindSafe for Command
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> GetSetFdFlags for T
impl<T> GetSetFdFlags for T
source§fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
fn get_fd_flags(&self) -> Result<FdFlags, Error>where
T: AsFilelike,
Query the “status” flags for the
self
file descriptor.source§fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
fn new_set_fd_flags(&self, fd_flags: FdFlags) -> Result<SetFdFlags<T>, Error>where
T: AsFilelike,
source§fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
fn set_fd_flags(&mut self, set_fd_flags: SetFdFlags<T>) -> Result<(), Error>where
T: AsFilelike,
Set the “status” flags for the
self
file descriptor. Read more