wasmtime_wasi/p2/host/
exit.rs1use crate::I32Exit;
2use crate::cli::WasiCliCtxView;
3use crate::p2::bindings::cli::exit;
4
5impl exit::Host for WasiCliCtxView<'_> {
6 fn exit(&mut self, status: Result<(), ()>) -> wasmtime::Result<()> {
7 let status = match status {
8 Ok(()) => 0,
9 Err(()) => 1,
10 };
11 Err(wasmtime::format_err!(I32Exit(status)))
12 }
13
14 fn exit_with_code(&mut self, status_code: u8) -> wasmtime::Result<()> {
15 Err(wasmtime::format_err!(I32Exit(status_code.into())))
16 }
17}
18
19mod named {
20 use crate::cli::WasiCliNamedView;
21 use crate::p2::bindings::named_imports::wasi::cli::exit;
22 use crate::{NamedId, WasiCtxNamedView};
23
24 impl<T> exit::Host for WasiCtxNamedView<'_, T>
25 where
26 T: WasiCliNamedView,
27 {
28 fn exit(&mut self, id: NamedId, status: Result<(), ()>) -> wasmtime::Result<()> {
29 super::exit::Host::exit(&mut self.0.cli(id), status)
30 }
31
32 fn exit_with_code(&mut self, id: NamedId, status_code: u8) -> wasmtime::Result<()> {
33 super::exit::Host::exit_with_code(&mut self.0.cli(id), status_code)
34 }
35 }
36}