diff options
| author | LLLL Colonq <llll@colonq> | 2024-12-07 17:25:37 -0500 |
|---|---|---|
| committer | LLLL Colonq <llll@colonq> | 2024-12-07 17:25:37 -0500 |
| commit | d5a5b454a4670a72826882c6ce4c87d1f597767c (patch) | |
| tree | 5963ed2b53063d3579019e6b22a629ac52d3b612 /src/module.rs | |
| parent | aa465e6ebee75e9e9ea03196db4dd83fde766f0a (diff) | |
Native
Diffstat (limited to 'src/module.rs')
| -rw-r--r-- | src/module.rs | 45 |
1 files changed, 0 insertions, 45 deletions
diff --git a/src/module.rs b/src/module.rs deleted file mode 100644 index 1fc4100..0000000 --- a/src/module.rs +++ /dev/null @@ -1,45 +0,0 @@ -use wasm_bindgen::prelude::*; - -#[wasm_bindgen] -pub fn log_info(msg: i8) { - log::info!("{:?}", msg); -} - -#[wasm_bindgen(module="/src/js/module.js")] -extern "C" { - fn js_build_interface() -> js_sys::Object; -} - -pub struct Module { - pub wasm: js_sys::WebAssembly::Instance, -} - -impl Module { - pub async fn new(bytes: &[u8]) -> Option<Self> { - let imp = js_build_interface(); - let o = wasm_bindgen_futures::JsFuture::from( - js_sys::WebAssembly::instantiate_buffer(bytes, &imp) - ).await.unwrap(); - let i = js_sys::Reflect::get(&o, &"instance".into()).unwrap(); - if let Ok(wasm) = i.dyn_into::<js_sys::WebAssembly::Instance>() { - Some(Self { - wasm, - }) - } else { - log::info!("failed 3"); - None - } - } - pub fn call(&self, nm: &str) { - let exp = self.wasm.exports(); - if let Ok(fo) = js_sys::Reflect::get(&exp, &nm.into()) { - if let Ok(func) = fo.dyn_into::<js_sys::Function>() { - let _ = func.call0(&JsValue::undefined()); - } else { - log::warn!("couldn't cast module function: {}", nm); - } - } else { - log::warn!("couldn't find module function: {}", nm); - } - } -} |
