Как обрабатывать ошибки Rust из Result как возвращаемое значение вместо исключения в JavaScript?
Я хотел бы написать JavaScript как:
var [greeting, err] = wasm.hello("world");
Похоже, что если я использую стандарт Result
типа, тогда мне нужно использовать try
/catch
:
try {
greeting = wasm.hello()
}
catch(error) {
console.error(error);
}
Rust код, который генерирует ошибку:
#[wasm_bindgen]
pub fn hello(name: &str) -> Result<String, JsValue> {
if name == "" {
return Err(JsValue::from("name required!"));
}
let greeting = format!("Hello {}!", name);
Ok(greeting)
}
Это основано на примере в https://github.com/rustwasm/rust-parcel-template. Полное веб-приложение с Rust + WASM + JS с небольшим примером выше находится на GitHub.