Returns an iterator over all exported extern values for this instance. ## Example ```rust # fn main() -> tinywasm::Result<()> { # use tinywasm::{ExternItem, ModuleInstance, Store}; # let wasm = wat::parse_str(r#" # (module # (func (export "f")) # (memory (export "mem") 1)) # "#).expect("valid wat"); # let module = tinywasm::parse_bytes(&wasm)?; # let mut store = Store::default();
(&self)
| 300 | /// # } |
| 301 | /// ``` |
| 302 | pub fn exports(&self) -> impl Iterator<Item = (&str, ExternItem)> + '_ { |
| 303 | self.0.exports.iter().map(move |export| { |
| 304 | let item = match export.kind { |
| 305 | ExternalKind::Func => { |
| 306 | let func_addr = self.resolve_func_addr(export.index); |
| 307 | ExternItem::Func(Function { |
| 308 | item: crate::StoreItem::new(self.0.store_id, func_addr), |
| 309 | module_addr: self.id(), |
| 310 | addr: func_addr, |
| 311 | ty: self.func_type_by_type_index(self.func_type_idx(export.index)).clone(), |
| 312 | }) |
| 313 | } |
| 314 | ExternalKind::Table => { |
| 315 | ExternItem::Table(Table::from_store_addr(self.0.store_id, self.resolve_table_addr(export.index))) |
| 316 | } |
| 317 | ExternalKind::Memory => { |
| 318 | ExternItem::Memory(Memory::from_store_addr(self.0.store_id, self.resolve_mem_addr(export.index))) |
| 319 | } |
| 320 | ExternalKind::Global => { |
| 321 | ExternItem::Global(Global::from_store_addr(self.0.store_id, self.resolve_global_addr(export.index))) |
| 322 | } |
| 323 | }; |
| 324 | |
| 325 | (export.name.as_ref(), item) |
| 326 | }) |
| 327 | } |
| 328 | |
| 329 | #[inline] |
| 330 | fn require_export(&self, name: &str) -> Result<ExternVal> { |