diff options
| author | brian cully <bjc@spork.org> | 2025-12-29 10:32:31 -0500 |
|---|---|---|
| committer | brian cully <bjc@spork.org> | 2025-12-29 10:32:31 -0500 |
| commit | 03d727eea91ba000b0aace7f15069ec542059eff (patch) | |
| tree | 77584364e135f4693cc54e3b871966dd29a69ba9 /src | |
| parent | f3aa9e4d5bb2ffb9226403b1b018ec56efa7bfd3 (diff) | |
| download | polyring-03d727eea91ba000b0aace7f15069ec542059eff.tar.gz polyring-03d727eea91ba000b0aace7f15069ec542059eff.zip | |
minor cleanup
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 36 |
1 files changed, 18 insertions, 18 deletions
@@ -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<T> = Result<T, JsValue>; +type HandlerClosure = Closure<dyn FnMut(Event) -> 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<web_sys::HtmlCanvasElement, JsValue> { - let x = document() - .query_selector("canvas")? - .expect("canvas element"); +fn canvas() -> JSResult<web_sys::HtmlCanvasElement> { + let x = document().query_selector("canvas")?.ok_or("no canvas")?; Ok(x.dyn_into::<web_sys::HtmlCanvasElement>()?) } -fn fps() -> Result<web_sys::HtmlElement, JsValue> { - let x = document() - .query_selector("#fps")? - .expect("fps counter exists"); +fn fps() -> JSResult<web_sys::HtmlElement> { + let x = document().query_selector("#fps")?.ok_or("no fps counter")?; Ok(x.dyn_into::<web_sys::HtmlElement>()?) } -fn go() -> Result<web_sys::HtmlElement, JsValue> { - let x = document() - .query_selector("button")? - .expect("go button exists"); +fn go() -> JSResult<web_sys::HtmlElement> { + let x = document().query_selector("button")?.ok_or("no go button")?; Ok(x.dyn_into::<web_sys::HtmlElement>()?) } #[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::<dyn FnMut()>::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 |
