Enum TerminationDetails

Source
pub enum TerminationDetails {
    Signal,
    CtxNotFound,
    YieldTypeMismatch,
    BorrowError(&'static str),
    Provided(Box<dyn Any + 'static>),
    Remote,
}
Expand description

Information about a terminated guest.

Guests are terminated either explicitly by Vmctx::terminate(), or implicitly by signal handlers that return SignalBehavior::Terminate. It usually indicates that an unrecoverable error has occurred in a hostcall, rather than in WebAssembly code.

Variants§

§

Signal

Returned when a signal handler terminates the instance.

§

CtxNotFound

Returned when get_embed_ctx or get_embed_ctx_mut are used with a type that is not present.

§

YieldTypeMismatch

Returned when the type of the value passed to Instance::resume_with_val() does not match the type expected by Vmctx::yield_expecting_val() or Vmctx::yield_val_expecting_val, or if Instance::resume() was called when a value was expected.

Note: If you see this termination value, please report it as a Lucet bug. The types of resumed values are dynamically checked by Instance::resume() and Instance::resume_with_val(), so this should never arise.

§

BorrowError(&'static str)

Returned when dynamic borrowing rules of methods like Vmctx::heap() are violated.

§

Provided(Box<dyn Any + 'static>)

Calls to lucet_hostcall_terminate provide a payload for use by the embedder.

§

Remote

Implementations§

Source§

impl TerminationDetails

Source

pub fn provide<A: Any + 'static>(details: A) -> Self

Source

pub fn provided_details(&self) -> Option<&dyn Any>

Trait Implementations§

Source§

impl Debug for TerminationDetails

Source§

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

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

impl PartialEq for TerminationDetails

Source§

fn eq(&self, rhs: &TerminationDetails) -> 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 Send for TerminationDetails

Source§

impl Sync for TerminationDetails

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> 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> Same for T

Source§

type Output = T

Should always be Self
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.