Enum Trap
pub enum Trap {
User(Box<dyn Error + Sync + Send>),
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 + Sync + Send>)
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§
§impl Trap
impl Trap
pub fn user(err: Box<dyn Error + Sync + Send>) -> Trap
pub fn user(err: Box<dyn Error + Sync + Send>) -> Trap
Construct a new Error with the given a user error.
Internally saves a backtrace when constructed.
pub fn wasm(
pc: usize,
backtrace: Backtrace,
signal_trap: Option<TrapCode>,
) -> Trap
pub fn wasm( pc: usize, backtrace: Backtrace, signal_trap: Option<TrapCode>, ) -> Trap
Construct a new Wasm trap with the given source location and backtrace.
Internally saves a backtrace when constructed.
pub fn lib(trap_code: TrapCode) -> Trap
pub fn lib(trap_code: TrapCode) -> Trap
Construct a new Wasm trap with the given trap code.
Internally saves a backtrace when constructed.
pub fn oom() -> Trap
pub fn oom() -> Trap
Construct a new OOM trap with the given source location and trap code.
Internally saves a backtrace when constructed.
pub fn uncaught_exception(exnref: VMExceptionRef, ctx: &StoreObjects) -> Trap
pub fn uncaught_exception(exnref: VMExceptionRef, ctx: &StoreObjects) -> Trap
Construct a new UncaughtException trap with the given exception reference.
pub fn downcast<T>(self) -> Result<T, Trap>where
T: Error + 'static,
pub fn downcast<T>(self) -> Result<T, Trap>where
T: Error + 'static,
Attempts to downcast the Trap to a concrete type.
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
pub fn downcast_ref<T>(&self) -> Option<&T>where
T: Error + 'static,
Attempts to downcast the Trap to a concrete type.
pub fn is_exception(&self) -> bool
pub fn is_exception(&self) -> bool
Returns true if the trap is an exception
pub 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§
§impl Error for Trap
impl Error for Trap
§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
Source§impl From<Trap> for BackendTrap
impl From<Trap> for BackendTrap
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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