MCPcopy Index your code
hub / github.com/explodingcamera/tinywasm / extern_item

Method extern_item

crates/tinywasm/src/instance.rs:373–389  ·  view source on GitHub ↗

Get any exported extern value by name. ## Example ```rust # fn main() -> tinywasm::Result<()> { # use tinywasm::{ExternItem, ModuleInstance, Store}; # let wasm = wat::parse_str(r#" # (module # (global (export "answer") i32 (i32.const 42))) # "#).expect("valid wat"); # let module = tinywasm::parse_bytes(&wasm)?; # let mut store = Store::default(); let instance = ModuleInstance::instantia

(&self, name: &str)

Source from the content-addressed store, hash-verified

371 /// # }
372 /// ```
373 pub fn extern_item(&self, name: &str) -> Result<ExternItem> {
374 match self.require_export(name)? {
375 ExternVal::Func(addr) => {
376 let export = self.0.exports.iter().find(|e| e.name == name.into());
377 let export = export.ok_or_else(|| Error::Other(format!("Export not found: {name}")))?;
378 Ok(ExternItem::Func(Function {
379 item: crate::StoreItem::new(self.0.store_id, addr),
380 module_addr: self.id(),
381 addr,
382 ty: self.func_type_by_type_index(self.func_type_idx(export.index)).clone(),
383 }))
384 }
385 ExternVal::Memory(addr) => Ok(ExternItem::Memory(Memory::from_store_addr(self.0.store_id, addr))),
386 ExternVal::Table(addr) => Ok(ExternItem::Table(Table::from_store_addr(self.0.store_id, addr))),
387 ExternVal::Global(addr) => Ok(ExternItem::Global(Global::from_store_addr(self.0.store_id, addr))),
388 }
389 }
390
391 /// Get a function export by name.
392 ///

Callers

nothing calls this directly

Calls 7

MemoryClass · 0.85
TableClass · 0.85
require_exportMethod · 0.80
func_type_idxMethod · 0.80
GlobalClass · 0.70
idMethod · 0.45

Tested by

no test coverage detected