pub struct JsNativeError {
    pub kind: JsNativeErrorKind,
    /* private fields */
}
Expand description

Native representation of an ideal Error object from Javascript.

This representation is more space efficient than its JsObject equivalent, since it doesn’t need to create a whole new JsObject to be instantiated. Prefer using this over JsError when you don’t need to throw plain JsValues as errors, or when you need to inspect the error type of a JsError.

§Examples

let native_error = JsNativeError::uri().with_message("cannot decode uri");

match native_error.kind {
    JsNativeErrorKind::Uri => { /* handle URI error*/ }
    _ => unreachable!(),
}

assert_eq!(native_error.message(), "cannot decode uri");

Fields§

§kind: JsNativeErrorKind

The kind of native error (e.g. TypeError, SyntaxError, etc.)

Implementations§

source§

impl JsNativeError

source

pub fn aggregate(errors: Vec<JsError>) -> Self

Creates a new JsNativeError of kind AggregateError from a list of JsErrors, with empty message and undefined cause.

§Examples
let inner_errors = vec![
    JsNativeError::typ().into(),
    JsNativeError::syntax().into()
];
let error = JsNativeError::aggregate(inner_errors);

assert!(matches!(
    error.kind,
    JsNativeErrorKind::Aggregate(ref errors) if errors.len() == 2
));
source

pub const fn is_aggregate(&self) -> bool

Check if it’s a JsNativeErrorKind::Aggregate.

source

pub fn error() -> Self

Creates a new JsNativeError of kind Error, with empty message and undefined cause.

§Examples
let error = JsNativeError::error();

assert!(matches!(error.kind, JsNativeErrorKind::Error));
source

pub const fn is_error(&self) -> bool

Check if it’s a JsNativeErrorKind::Error.

source

pub fn eval() -> Self

Creates a new JsNativeError of kind EvalError, with empty message and undefined cause.

§Examples
let error = JsNativeError::eval();

assert!(matches!(error.kind, JsNativeErrorKind::Eval));
source

pub const fn is_eval(&self) -> bool

Check if it’s a JsNativeErrorKind::Eval.

source

pub fn range() -> Self

Creates a new JsNativeError of kind RangeError, with empty message and undefined cause.

§Examples
let error = JsNativeError::range();

assert!(matches!(error.kind, JsNativeErrorKind::Range));
source

pub const fn is_range(&self) -> bool

Check if it’s a JsNativeErrorKind::Range.

source

pub fn reference() -> Self

Creates a new JsNativeError of kind ReferenceError, with empty message and undefined cause.

§Examples
let error = JsNativeError::reference();

assert!(matches!(error.kind, JsNativeErrorKind::Reference));
source

pub const fn is_reference(&self) -> bool

Check if it’s a JsNativeErrorKind::Reference.

source

pub fn syntax() -> Self

Creates a new JsNativeError of kind SyntaxError, with empty message and undefined cause.

§Examples
let error = JsNativeError::syntax();

assert!(matches!(error.kind, JsNativeErrorKind::Syntax));
source

pub const fn is_syntax(&self) -> bool

Check if it’s a JsNativeErrorKind::Syntax.

source

pub fn typ() -> Self

Creates a new JsNativeError of kind TypeError, with empty message and undefined cause.

§Examples
let error = JsNativeError::typ();

assert!(matches!(error.kind, JsNativeErrorKind::Type));
source

pub const fn is_type(&self) -> bool

Check if it’s a JsNativeErrorKind::Type.

source

pub fn uri() -> Self

Creates a new JsNativeError of kind UriError, with empty message and undefined cause.

§Examples
let error = JsNativeError::uri();

assert!(matches!(error.kind, JsNativeErrorKind::Uri));
source

pub const fn is_uri(&self) -> bool

Check if it’s a JsNativeErrorKind::Uri.

source

pub fn runtime_limit() -> Self

Creates a new JsNativeError that indicates that the context exceeded the runtime limits.

source

pub const fn is_runtime_limit(&self) -> bool

source

pub fn with_message<S>(self, message: S) -> Self
where S: Into<Box<str>>,

Sets the message of this error.

§Examples
let error = JsNativeError::range().with_message("number too large");

assert_eq!(error.message(), "number too large");
source

pub fn with_cause<V>(self, cause: V) -> Self
where V: Into<JsError>,

Sets the cause of this error.

§Examples
let cause = JsNativeError::syntax();
let error = JsNativeError::error().with_cause(cause);

assert!(error.cause().unwrap().as_native().is_some());
source

pub const fn message(&self) -> &str

Gets the message of this error.

This is equivalent to the NativeError.prototype.message property.

§Examples
let error = JsNativeError::range().with_message("number too large");

assert_eq!(error.message(), "number too large");
source

pub fn cause(&self) -> Option<&JsError>

Gets the cause of this error.

This is equivalent to the NativeError.prototype.cause property.

§Examples
let cause = JsNativeError::syntax();
let error = JsNativeError::error().with_cause(cause);

assert!(error.cause().unwrap().as_native().is_some());
source

pub fn to_opaque(&self, context: &mut Context) -> JsObject

Converts this native error to its opaque representation as a JsObject.

§Examples
let context = &mut Context::default();

let error = JsNativeError::error().with_message("error!");
let error_obj = error.to_opaque(context);

assert!(error_obj.is::<ErrorObject>());
assert_eq!(
    error_obj.get(js_string!("message"), context).unwrap(),
    js_string!("error!").into()
)
§Panics

If converting a JsNativeErrorKind::RuntimeLimit to an opaque object.

Trait Implementations§

source§

impl Clone for JsNativeError

source§

fn clone(&self) -> JsNativeError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for JsNativeError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for JsNativeError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for JsNativeError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
1.0.0 · source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
1.0.0 · source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl Finalize for JsNativeError

source§

fn finalize(&self)

Cleanup logic for a type.
source§

impl From<Error> for JsNativeError

source§

fn from(err: Error) -> Self

Converts to this type from the input type.
source§

impl From<JsNativeError> for JsError

source§

fn from(error: JsNativeError) -> Self

Converts to this type from the input type.
source§

impl PartialEq for JsNativeError

source§

fn eq(&self, other: &JsNativeError) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Trace for JsNativeError

source§

unsafe fn trace(&self, tracer: &mut Tracer)

Marks all contained Gcs. Read more
source§

unsafe fn trace_non_roots(&self)

Trace handles located in GC heap, and mark them as non root. Read more
source§

fn run_finalizer(&self)

Runs Finalize::finalize on this object and all contained subobjects.
source§

impl Eq for JsNativeError

source§

impl StructuralPartialEq for JsNativeError

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> Conv for T

source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> Pipe for T
where T: ?Sized,

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Tap for T

source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T> TryConv for T

source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> ErasedDestructor for T
where T: 'static,

source§

impl<T> MaybeSendSync for T