InterruptKind

Enum InterruptKind 

Source
pub enum InterruptKind {
    Finished,
    Trap,
    Ecalli(u32),
    Segfault(Segfault),
    NotEnoughGas,
    Step,
}

Variants§

§

Finished

The execution finished normally.

This happens when the program jumps to the address 0xffff0000.

§

Trap

The execution finished abnormally with a trap.

This can happen for a few reasons:

  • if the trap instruction is executed,
  • if an invalid instruction is executed,
  • if a jump to an invalid address is made,
  • if a segmentation fault is triggered (when dynamic paging is not enabled for this VM)
§

Ecalli(u32)

The execution triggered an external call with an ecalli instruction.

§

Segfault(Segfault)

The execution triggered a segmentation fault.

This happens when a program accesses a memory page that is not mapped, or tries to write to a read-only page.

Requires dynamic paging to be enabled with ModuleConfig::set_dynamic_paging, otherwise is never emitted.

§

NotEnoughGas

The execution ran out of gas.

Requires gas metering to be enabled with ModuleConfig::set_gas_metering, otherwise is never emitted.

§

Step

Executed a single instruction.

Requires execution step-tracing to be enabled with ModuleConfig::set_step_tracing, otherwise is never emitted.

Trait Implementations§

Source§

impl Clone for InterruptKind

Source§

fn clone(&self) -> InterruptKind

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 InterruptKind

Source§

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

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

impl PartialEq for InterruptKind

Source§

fn eq(&self, other: &InterruptKind) -> 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 Eq for InterruptKind

Source§

impl StructuralPartialEq for InterruptKind

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