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
sourceimpl IntoWasmAbi for JsError
impl IntoWasmAbi for JsError
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 Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
sourceimpl<T> Instrument for T
impl<T> Instrument for T
sourcefn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
sourcefn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
sourceimpl<T> IntoSql for T
impl<T> IntoSql for T
sourcefn into_sql<T>(self) -> Self::Expressionwhere
Self: AsExpression<T> + Sized,
T: SqlType + TypedExpressionType,
fn into_sql<T>(self) -> Self::Expressionwhere
Self: AsExpression<T> + Sized,
T: SqlType + TypedExpressionType,
self to an expression for Diesel’s query builder. Read moresourcefn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expressionwhere
&'a Self: AsExpression<T>,
T: SqlType + TypedExpressionType,
fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expressionwhere
&'a Self: AsExpression<T>,
T: SqlType + TypedExpressionType,
&self to an expression for Diesel’s query builder. Read moresourceimpl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
impl<T> ReturnWasmAbi for Twhere
T: IntoWasmAbi,
type Abi = <T as IntoWasmAbi>::Abi
type Abi = <T as IntoWasmAbi>::Abi
IntoWasmAbi::Abisourcefn return_abi(self) -> <T as ReturnWasmAbi>::Abi
fn return_abi(self) -> <T as ReturnWasmAbi>::Abi
IntoWasmAbi::into_abi, except that it may throw and never
return in the case of Err. Read more