Struct wasm_bindgen::JsError
source · [−]pub struct JsError { /* private fields */ }
Expand description
Convenience type for use on exported fn() -> Result<T, JsError>
functions, where you wish to
throw a JavaScript Error
object.
You can get wasm_bindgen to throw basic errors by simply returning
Err(JsError::new("message"))
from such a function.
For more complex error handling, JsError
implements From<T> where T: std::error::Error
by
converting it to a string, so you can use it with ?
. Many Rust error types already do this,
and you can use thiserror
to derive Display
implementations easily or use any number of boxed error types that implement it already.
To allow JavaScript code to catch only your errors, you may wish to add a subclass of Error
in a JS module, and then implement Into<JsValue>
directly on a type and instantiate that
subclass. In that case, you would not need JsError
at all.
Basic example
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub fn throwing_function() -> Result<(), JsError> {
Err(JsError::new("message"))
}
Complex Example
use wasm_bindgen::prelude::*;
#[derive(Debug, Clone)]
enum MyErrorType {
SomeError,
}
use core::fmt;
impl std::error::Error for MyErrorType {}
impl fmt::Display for MyErrorType {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "display implementation becomes the error message")
}
}
fn internal_api() -> Result<(), MyErrorType> {
Err(MyErrorType::SomeError)
}
#[wasm_bindgen]
pub fn throwing_function() -> Result<(), JsError> {
internal_api()?;
Ok(())
}
Implementations
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for JsError
impl !Send for JsError
impl !Sync for JsError
impl Unpin for JsError
impl UnwindSafe for JsError
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcefn clone_into(&self, target: &mut T)
fn clone_into(&self, target: &mut T)
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more