wast_encoder/instances/
display.rs1use crate::{
2 helpers::{AliasExport, AliasOuter},
3 wasi_types::functions::WasiFunctionBody,
4};
5
6use super::*;
7
8impl Debug for WasiInstance {
9 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
10 let resources: Vec<_> = self.resources.values().map(|s| s.wasi_name.as_str()).collect();
11 f.debug_struct("WasiInstance")
14 .field("module", &self.module.to_string())
15 .field("resources", &resources)
16 .finish()
18 }
19}
20
21impl ComponentDefine for WasiInstance {
22 fn component_define<W: Write>(&self, w: &mut WastEncoder<W>) -> std::fmt::Result {
23 write!(w, "(import \"{name}\" (instance ${name}", name = self.module)?;
24 w.indent();
25 for wasi in self.resources.values() {
26 w.newline()?;
27 wasi.write_wasi_define(w)?;
28 }
29 for imports in self.dependencies(&w.source.graph) {
30 imports.alias_outer(w)?;
31 }
32 for wasi in self.functions.values() {
33 w.newline()?;
34 w.export_function(wasi)?;
35 }
36 w.dedent(2);
37 for wasi in self.resources.values() {
38 w.newline()?;
39 wasi.alias_export(w, &self.module)?;
40 }
41 for wasi in self.functions.values() {
42 w.newline()?;
43 wasi.alias_export(w, &self.module)?;
44 }
45 Ok(())
46 }
47}