pub enum Trap {
User(Box<dyn Error + Send + Sync>),
Wasm {
pc: usize,
backtrace: Backtrace,
signal_trap: Option<TrapCode>,
},
Lib {
trap_code: TrapCode,
backtrace: Backtrace,
},
OOM {
backtrace: Backtrace,
},
UncaughtException {
exnref: VMExceptionRef,
backtrace: Backtrace,
},
}Expand description
Stores trace message with backtrace.
Variants§
User(Box<dyn Error + Send + Sync>)
A user-raised trap through raise_user_trap.
Wasm
A trap raised from the Wasm generated code
Note: this trap is deterministic (assuming a deterministic host implementation)
Fields
backtrace: BacktraceNative stack backtrace at the time the trap occurred
Lib
A trap raised from a wasm libcall
Note: this trap is deterministic (assuming a deterministic host implementation)
Fields
backtrace: BacktraceNative stack backtrace at the time the trap occurred
OOM
A trap indicating that the runtime was unable to allocate sufficient memory.
Note: this trap is nondeterministic, since it depends on the host system.
Fields
backtrace: BacktraceNative stack backtrace at the time the OOM occurred
UncaughtException
A WASM exception was thrown but not caught.
Fields
exnref: VMExceptionRefThe exception reference of the uncaught exception.
backtrace: BacktraceNative stack backtrace at the time the exception was thrown. This is a clone of the backtrace stored in the exception itself.
Implementations§
Source§impl Trap
impl Trap
Sourcepub fn user(err: Box<dyn Error + Send + Sync>) -> Self
pub fn user(err: Box<dyn Error + Send + Sync>) -> Self
Construct a new Error with the given a user error.
Internally saves a backtrace when constructed.
Sourcepub fn wasm(
pc: usize,
backtrace: Backtrace,
signal_trap: Option<TrapCode>,
) -> Self
pub fn wasm( pc: usize, backtrace: Backtrace, signal_trap: Option<TrapCode>, ) -> Self
Construct a new Wasm trap with the given source location and backtrace.
Internally saves a backtrace when constructed.
Sourcepub fn lib(trap_code: TrapCode) -> Self
pub fn lib(trap_code: TrapCode) -> Self
Construct a new Wasm trap with the given trap code.
Internally saves a backtrace when constructed.
Sourcepub fn oom() -> Self
pub fn oom() -> Self
Construct a new OOM trap with the given source location and trap code.
Internally saves a backtrace when constructed.
Sourcepub fn uncaught_exception(exnref: VMExceptionRef, ctx: &StoreObjects) -> Self
pub fn uncaught_exception(exnref: VMExceptionRef, ctx: &StoreObjects) -> Self
Construct a new UncaughtException trap with the given exception reference.
Sourcepub fn downcast<T: Error + 'static>(self) -> Result<T, Self>
pub fn downcast<T: Error + 'static>(self) -> Result<T, Self>
Attempts to downcast the Trap to a concrete type.
Sourcepub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>
pub fn downcast_ref<T: Error + 'static>(&self) -> Option<&T>
Attempts to downcast the Trap to a concrete type.
Sourcepub fn is_exception(&self) -> bool
pub fn is_exception(&self) -> bool
Returns true if the trap is an exception
Sourcepub fn to_exception_ref(&self) -> Option<VMExceptionRef>
pub fn to_exception_ref(&self) -> Option<VMExceptionRef>
If the Trap is an uncaught exception, returns it.
Trait Implementations§
Source§impl Error for Trap
impl Error for Trap
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
Auto Trait Implementations§
impl Freeze for Trap
impl !RefUnwindSafe for Trap
impl Send for Trap
impl Sync for Trap
impl Unpin for Trap
impl !UnwindSafe for Trap
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
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