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,
},
}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
Lib
A trap raised from a wasm libcall
Note: this trap is deterministic (assuming a deterministic host implementation)
Fields
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.
Implementations§
Source§impl Trap
impl Trap
Sourcepub fn user(err: Box<dyn Error + Send + Sync>) -> Trap
pub fn user(err: Box<dyn Error + Send + Sync>) -> Trap
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>,
) -> 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
Sourcepub 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.
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
Source§impl From<Trap> for BackendTrap
impl From<Trap> for BackendTrap
Source§fn from(value: Trap) -> BackendTrap
fn from(value: Trap) -> BackendTrap
Source§impl From<Trap> for RuntimeError
impl From<Trap> for RuntimeError
Source§fn from(trap: Trap) -> RuntimeError
fn from(trap: Trap) -> RuntimeError
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§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 moreSource§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out indicating that a T is niched.