From b645f4850b7de48e1f4716eb36400e2a9f95cc0d Mon Sep 17 00:00:00 2001 From: Brian Cully Date: Thu, 18 Dec 2025 17:47:18 -0500 Subject: rust: clean up wasm error result --- src/lib.rs | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 4860ddc..e147e8e 100755 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,17 +8,17 @@ pub mod robo; enum Error { NoVM, } -impl From for String { +impl From for JsValue { fn from(err: Error) -> Self { match err { - Error::NoVM => "no vm".to_string().into(), + Error::NoVM => "no vm".into(), } } } -impl From for String { +impl From for JsValue { fn from(err: forth::vm::RuntimeError) -> Self { - format!("runtime error: {}", err) + format!("runtime error: {err}").into() } } @@ -100,12 +100,12 @@ impl ExportedVM { true } - pub fn tick(&mut self) -> Result { + pub fn tick(&mut self) -> Result { let vm = (&mut self.vm).as_mut().ok_or(Error::NoVM)?; Ok(vm.tick()?) } - pub fn run(&mut self) -> Result { + pub fn run(&mut self) -> Result { self.reset_ip(); let vm = (&mut self.vm).as_mut().ok_or(Error::NoVM)?; Ok(vm.run()?) @@ -119,7 +119,7 @@ impl ExportedVM { vm.ip.offset = 0; } - pub fn trans(&mut self) -> Result { + pub fn trans(&mut self) -> Result { let vm = (&mut self.vm).as_mut().ok_or(Error::NoVM)?; let res = js_sys::Map::new(); @@ -143,8 +143,7 @@ impl ExportedVM { dfn.iter() .map(|anno| { let a: js_sys::Map = anno.into(); - let o: js_sys::Object = js_sys::Object::from_entries(&a).expect("can't make object from anno map"); - o + js_sys::Object::from_entries(&a).expect("can't make object from anno map") }); js_sys::Array::from_iter(ops) } @@ -153,8 +152,7 @@ impl ExportedVM { // instruction pointer let ip: js_sys::Map = (&vm.ip).into(); - let o: js_sys::Object = js_sys::Object::from_entries(&ip).expect("can't make object from ip map"); - map_set(&res, "ip", o); + map_set(&res, "ip", js_sys::Object::from_entries(&ip)?); // stack let s = vm.stack.0.iter().map(|v| Into::::into(*v as i32)); @@ -163,8 +161,7 @@ impl ExportedVM { // callstack let cs = vm.callstack.0.iter().map(|v| { let ip: js_sys::Map = v.into(); - let o: js_sys::Object = js_sys::Object::from_entries(&ip).expect("can't make object from ip map"); - o + js_sys::Object::from_entries(&ip).expect("can't make object from ip map") }); map_set(&res, "callstack", js_sys::Array::from_iter(cs)); @@ -175,9 +172,9 @@ impl ExportedVM { map_set::(&vars, "heading", vm.heading.into()); map_set::(&vars, "speed", vm.speed.into()); map_set::(&vars, "doppler", vm.doppler.into()); - map_set(&res, "vars", js_sys::Object::from_entries(&vars).expect("can't make object from vars map")); + map_set(&res, "vars", js_sys::Object::from_entries(&vars)?); - Ok(js_sys::Object::from_entries(&res).expect("can't make object from results map")) + Ok(js_sys::Object::from_entries(&res)?) } } -- cgit v1.3