Clone in a terminal:
Commit 2b449d4
Johan Mattsson - 2026-05-31T22:25:02+00:00
2b449d48a742ee00010c48b61be2b5a43d19c622johan.mattsson.m@gmail.com

Init callback functions

Changed files (3)

Diff

diff --git a/examples/clickcounter/Cargo.lock b/examples/clickcounter/Cargo.lockindex c6590f3..59e1732 100644--- a/examples/clickcounter/Cargo.lock+++ b/examples/clickcounter/Cargo.lock@@ -450,6 +450,15 @@ dependencies = [ ]  [[package]]+name = "inventory"+version = "0.3.24"+source = "registry+https://github.com/rust-lang/crates.io-index"+checksum = "a4f0c30c76f2f4ccee3fe55a2435f691ca00c0e4bd87abe4f4a851b1d4dac39b"+dependencies = [+ "rustversion",+]++[[package]] name = "inventory-impl" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index"@@ -506,7 +515,7 @@ version = "0.1.0" dependencies = [  "gloo",  "gloo-console",- "inventory",+ "inventory 0.1.11",  "js-sys",  "kaja-callback-macro",  "serde",@@ -521,6 +530,7 @@ version = "0.1.0" dependencies = [  "console_error_panic_hook",  "gloo",+ "inventory 0.3.24",  "js-sys",  "kaja-callback-macro",  "kaja-html-macro",diff --git a/examples/clickcounter/Cargo.toml b/examples/clickcounter/Cargo.tomlindex 3cc23a2..4c71566 100644--- a/examples/clickcounter/Cargo.toml+++ b/examples/clickcounter/Cargo.toml@@ -22,3 +22,4 @@ serde_json = "1.0.150" uuid = { version = "1.23.2", features = ["js", "v4"] } console_error_panic_hook = "0.1.7" kaja-callback-macro = { version = "0.1.0", path = "../../../kaja-callback-macro" }+inventory = "0.3.24"diff --git a/examples/clickcounter/src/lib.rs b/examples/clickcounter/src/lib.rsindex 3507988..dc36532 100644--- a/examples/clickcounter/src/lib.rs+++ b/examples/clickcounter/src/lib.rs@@ -12,6 +12,9 @@ struct AppData {  pub static APP_DATA: RwLock<AppData> = RwLock::new(AppData { current_count: 0 }); +pub struct InitFn(fn());+inventory::collect!(InitFn);+ #[callback("incrementCounter")] pub fn increment_counter() {     let mut app_data = APP_DATA.write().unwrap();@@ -26,13 +29,6 @@ pub fn decrement_counter() {     update_counter_display(&app_data); } -#[wasm_bindgen(js_name = initCallbacks)]-pub fn init_callbacks() {-    log!("Initializing callbacks");-    increment_counter_register();-    decrement_counter_register();-}- fn update_counter_display(app_data: &AppData) {     log!("Updating counter display");     let count = app_data.current_count;@@ -62,12 +58,18 @@ fn update_counter_display(app_data: &AppData) {     } } +pub fn init_callbacks() {+    for init in inventory::iter::<InitFn> {+        (init.0)();+    }+}+ #[wasm_bindgen(start)] pub fn init() {     std::panic::set_hook(Box::new(console_error_panic_hook::hook));+    console_error_panic_hook::set_once();      let mut app_data = APP_DATA.read().unwrap();     update_counter_display(&app_data);-     init_callbacks(); }

Contact

Email: johan.mattsson.m@gmail.com
Mastodon: typo.social/@birdfont
GitHub: johanmattssonm
LinkedIn: johan-mattsson-2ab324112