Enum diem_types::vm_status::VMStatus
pub enum VMStatus {
Executed,
Error(StatusCode),
MoveAbort(AbortLocation, u64),
ExecutionFailure {
status_code: StatusCode,
location: AbortLocation,
function: u16,
code_offset: u16,
},
}
Expand description
A VMStatus
is represented as either
Executed
indicating successful executionError
indicating an error from the VM itselfMoveAbort
indicating anabort
ocurred inside of a Move program
Variants§
Executed
The VM status corresponding to an EXECUTED status code
Error(StatusCode)
Indicates an error from the VM, e.g. OUT_OF_GAS, INVALID_AUTH_KEY, RET_TYPE_MISMATCH_ERROR etc. The code will neither EXECUTED nor ABORTED
MoveAbort(AbortLocation, u64)
Indicates an abort
from inside Move code. Contains the location of the abort and the code
ExecutionFailure
Indicates an failure from inside Move code, where the VM could not continue exection, e.g. dividing by zero or a missing resource
Implementations§
§impl VMStatus
impl VMStatus
pub fn status_code(&self) -> StatusCode
pub fn status_code(&self) -> StatusCode
Return the status code for the VMStatus
pub fn move_abort_code(&self) -> Option<u64>
pub fn move_abort_code(&self) -> Option<u64>
Returns the Move abort code if the status is MoveAbort
, and None
otherwise
pub fn status_type(&self) -> StatusType
pub fn status_type(&self) -> StatusType
Return the status type for this VMStatus
. This is solely determined by the status_code
pub fn keep_or_discard(self) -> Result<KeptVMStatus, StatusCode>
pub fn keep_or_discard(self) -> Result<KeptVMStatus, StatusCode>
Returns Ok
with a recorded status if it should be kept, Err
of the error code if it
should be discarded
Trait Implementations§
§impl Arbitrary for VMStatus
impl Arbitrary for VMStatus
§type Parameters = ()
type Parameters = ()
The type of parameters that
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.§type Strategy = TupleUnion<((u32, Arc<fn() -> VMStatus>), (u32, Arc<Map<<StatusCode as Arbitrary>::Strategy, fn(_: StatusCode) -> VMStatus>>), (u32, Arc<Map<(<AbortLocation as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn(_: (AbortLocation, u64)) -> VMStatus>>), (u32, Arc<Map<(<StatusCode as Arbitrary>::Strategy, <AbortLocation as Arbitrary>::Strategy, <u16 as Arbitrary>::Strategy, <u16 as Arbitrary>::Strategy), fn(_: (StatusCode, AbortLocation, u16, u16)) -> VMStatus>>))>
type Strategy = TupleUnion<((u32, Arc<fn() -> VMStatus>), (u32, Arc<Map<<StatusCode as Arbitrary>::Strategy, fn(_: StatusCode) -> VMStatus>>), (u32, Arc<Map<(<AbortLocation as Arbitrary>::Strategy, <u64 as Arbitrary>::Strategy), fn(_: (AbortLocation, u64)) -> VMStatus>>), (u32, Arc<Map<(<StatusCode as Arbitrary>::Strategy, <AbortLocation as Arbitrary>::Strategy, <u16 as Arbitrary>::Strategy, <u16 as Arbitrary>::Strategy), fn(_: (StatusCode, AbortLocation, u16, u16)) -> VMStatus>>))>
The type of
Strategy
used to generate values of type Self
.§fn arbitrary_with(
_top: <VMStatus as Arbitrary>::Parameters
) -> <VMStatus as Arbitrary>::Strategy
fn arbitrary_with( _top: <VMStatus as Arbitrary>::Parameters ) -> <VMStatus as Arbitrary>::Strategy
§impl<'de> Deserialize<'de> for VMStatus
impl<'de> Deserialize<'de> for VMStatus
§fn deserialize<__D>(
__deserializer: __D
) -> Result<VMStatus, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>( __deserializer: __D ) -> Result<VMStatus, <__D as Deserializer<'de>>::Error>where __D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
§impl Error for VMStatus
impl Error for VMStatus
1.30.0 · source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
The lower-level source of this error, if any. Read more
1.0.0 · source§fn description(&self) -> &str
fn description(&self) -> &str
👎Deprecated since 1.42.0: use the Display impl or to_string()
source§impl From<VMStatus> for TransactionStatus
impl From<VMStatus> for TransactionStatus
§impl Ord for VMStatus
impl Ord for VMStatus
§impl PartialOrd<VMStatus> for VMStatus
impl PartialOrd<VMStatus> for VMStatus
§fn partial_cmp(&self, other: &VMStatus) -> Option<Ordering>
fn partial_cmp(&self, other: &VMStatus) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for
self
and other
) and is used by the <=
operator. Read more§impl Serialize for VMStatus
impl Serialize for VMStatus
§fn serialize<__S>(
&self,
__serializer: __S
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>( &self, __serializer: __S ) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where __S: Serializer,
Serialize this value into the given Serde serializer. Read more
impl Eq for VMStatus
impl StructuralEq for VMStatus
impl StructuralPartialEq for VMStatus
Auto Trait Implementations§
impl RefUnwindSafe for VMStatus
impl Send for VMStatus
impl Sync for VMStatus
impl Unpin for VMStatus
impl UnwindSafe for VMStatus
Blanket Implementations§
source§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,
source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.source§impl<T> TestOnlyHash for Twhere
T: Serialize + ?Sized,
impl<T> TestOnlyHash for Twhere T: Serialize + ?Sized,
source§fn test_only_hash(&self) -> HashValue
fn test_only_hash(&self) -> HashValue
Generates a hash used only for tests.