From 03d727eea91ba000b0aace7f15069ec542059eff Mon Sep 17 00:00:00 2001 From: brian cully Date: Mon, 29 Dec 2025 10:32:31 -0500 Subject: minor cleanup --- src/lib.rs | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index f6206da..a798872 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,12 +6,16 @@ use wasm_bindgen::prelude::*; use render_loop::RenderLoop; use state::State; +use web_sys::Event; mod line; mod point; mod render_loop; mod state; +type JSResult = Result; +type HandlerClosure = Closure JSResult<()>>; + fn window() -> web_sys::Window { web_sys::window().expect("no window") } @@ -20,30 +24,25 @@ fn document() -> web_sys::Document { window().document().expect("no document") } -fn canvas() -> Result { - let x = document() - .query_selector("canvas")? - .expect("canvas element"); +fn canvas() -> JSResult { + let x = document().query_selector("canvas")?.ok_or("no canvas")?; Ok(x.dyn_into::()?) } -fn fps() -> Result { - let x = document() - .query_selector("#fps")? - .expect("fps counter exists"); +fn fps() -> JSResult { + let x = document().query_selector("#fps")?.ok_or("no fps counter")?; Ok(x.dyn_into::()?) } -fn go() -> Result { - let x = document() - .query_selector("button")? - .expect("go button exists"); +fn go() -> JSResult { + let x = document().query_selector("button")?.ok_or("no go button")?; Ok(x.dyn_into::()?) } #[wasm_bindgen(start)] -pub fn init() -> Result<(), JsValue> { - console_log::init_with_level(Level::Debug).expect("couldn't init console log"); +pub fn init() -> JSResult<()> { + console_log::init_with_level(Level::Debug) + .map_err(|e| format!("couldn't init console: {e}"))?; info!("wasm init"); let paused = Rc::new(Mutex::new(true)); @@ -57,17 +56,18 @@ pub fn init() -> Result<(), JsValue> { !*paused.lock().unwrap() }); - let a = Closure::::new(move || { + let a: HandlerClosure = Closure::new(move |e| { + debug!("go clicked: {:?}", e); let mut p = p1.lock().unwrap(); - debug!("go clicked: {}", *p); *p = !*p; let text = if *p { "go" } else { - render_loop.start().expect("start render loop"); + render_loop.start()?; "pause" }; - go().expect("go button works").set_text_content(Some(text)); + go()?.set_text_content(Some(text)); + Ok(()) }); go()?.set_onclick(Some(a.as_ref().unchecked_ref())); // otherwise it gets dropped after we're done, invalidating the -- cgit v1.3