Struct JsNativeError

Source
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 const AGGREGATE: Self

Default AggregateError kind JsNativeError.

Source

pub const ERROR: Self

Default Error kind JsNativeError.

Source

pub const EVAL: Self

Default EvalError kind JsNativeError.

Source

pub const RANGE: Self

Default RangeError kind JsNativeError.

Source

pub const REFERENCE: Self

Default ReferenceError kind JsNativeError.

Source

pub const SYNTAX: Self

Default SyntaxError kind JsNativeError.

Source

pub const TYP: Self

Default error kind JsNativeError.

Source

pub const URI: Self

Default UriError kind JsNativeError.

Source

pub const NO_INSTRUCTIONS_REMAIN: Self

Default NoInstructionsRemain kind JsNativeError.

Source

pub const RUNTIME_LIMIT: Self

Default error kind JsNativeError.

Source

pub const 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 const 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 const 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 const 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 const 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 const 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 const 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 const 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 const fn no_instructions_remain() -> Self

Creates a new JsNativeError that indicates that the context hit its execution limit. This is only used in a fuzzing context.

Source

pub const fn is_no_instructions_remain(&self) -> bool

Source

pub const 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<Cow<'static, 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 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 duplicate 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)>

Returns 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<IcuError> for JsNativeError

Source§

fn from(value: IcuError) -> 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 From<TemporalError> for JsNativeError

Source§

fn from(value: TemporalError) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for JsNativeError

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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

Compare self to key and return true if they are equal.
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<T> Filterable for T

Source§

fn filterable( self, filter_name: &'static str, ) -> RequestFilterDataProvider<T, fn(DataRequest<'_>) -> bool>

Creates a filterable data provider with the given name for debugging. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
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,

Source§

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§

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>,

Source§

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>,

Source§

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,