summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
authorBrian Cully <bjc@spork.org>2025-12-18 17:47:18 -0500
committerBrian Cully <bjc@spork.org>2025-12-18 17:59:13 -0500
commitb645f4850b7de48e1f4716eb36400e2a9f95cc0d (patch)
tree45013f8c37295fa9c54961fefba7562b1bc48743 /src/lib.rs
parentd94c46b0866d41057444d5f6fde2a83b52a218c3 (diff)
downloadautomathon-b645f4850b7de48e1f4716eb36400e2a9f95cc0d.tar.gz
automathon-b645f4850b7de48e1f4716eb36400e2a9f95cc0d.zip
rust: clean up wasm error result
Diffstat (limited to 'src/lib.rs')
-rwxr-xr-xsrc/lib.rs27
1 files changed, 12 insertions, 15 deletions
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<Error> for String {
+impl From<Error> for JsValue {
fn from(err: Error) -> Self {
match err {
- Error::NoVM => "no vm".to_string().into(),
+ Error::NoVM => "no vm".into(),
}
}
}
-impl From<forth::vm::RuntimeError> for String {
+impl From<forth::vm::RuntimeError> 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<bool, String> {
+ pub fn tick(&mut self) -> Result<bool, JsValue> {
let vm = (&mut self.vm).as_mut().ok_or(Error::NoVM)?;
Ok(vm.tick()?)
}
- pub fn run(&mut self) -> Result<usize, String> {
+ pub fn run(&mut self) -> Result<usize, JsValue> {
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<js_sys::Object, String> {
+ pub fn trans(&mut self) -> Result<js_sys::Object, JsValue> {
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::<JsValue>::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::<isize>(&vars, "heading", vm.heading.into());
map_set::<isize>(&vars, "speed", vm.speed.into());
map_set::<isize>(&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)?)
}
}