Skip to main content

wasmtime_wasi/p2/host/
env.rs

1use crate::cli::WasiCliCtxView;
2use crate::p2::bindings::cli::environment;
3
4impl environment::Host for WasiCliCtxView<'_> {
5    fn get_environment(&mut self) -> wasmtime::Result<Vec<(String, String)>> {
6        Ok(self.ctx.environment.clone())
7    }
8    fn get_arguments(&mut self) -> wasmtime::Result<Vec<String>> {
9        Ok(self.ctx.arguments.clone())
10    }
11    fn initial_cwd(&mut self) -> wasmtime::Result<Option<String>> {
12        Ok(self.ctx.initial_cwd.clone())
13    }
14}
15
16mod named {
17    use crate::cli::WasiCliNamedView;
18    use crate::p2::bindings::named_imports::wasi::cli::environment;
19    use crate::{NamedId, WasiCtxNamedView};
20
21    impl<T> environment::Host for WasiCtxNamedView<'_, T>
22    where
23        T: WasiCliNamedView,
24    {
25        fn get_environment(&mut self, id: NamedId) -> wasmtime::Result<Vec<(String, String)>> {
26            super::environment::Host::get_environment(&mut self.0.cli(id))
27        }
28
29        fn get_arguments(&mut self, id: NamedId) -> wasmtime::Result<Vec<String>> {
30            super::environment::Host::get_arguments(&mut self.0.cli(id))
31        }
32
33        fn initial_cwd(&mut self, id: NamedId) -> wasmtime::Result<Option<String>> {
34            super::environment::Host::initial_cwd(&mut self.0.cli(id))
35        }
36    }
37}