Enum fuel_tx::PanicReason

source ·
#[non_exhaustive]
#[repr(u8)]
pub enum PanicReason {
Show 54 variants UnknownPanicReason = 0, Revert = 1, OutOfGas = 2, TransactionValidity = 3, MemoryOverflow = 4, ArithmeticOverflow = 5, ContractNotFound = 6, MemoryOwnership = 7, NotEnoughBalance = 8, ExpectedInternalContext = 9, AssetIdNotFound = 10, InputNotFound = 11, OutputNotFound = 12, WitnessNotFound = 13, TransactionMaturity = 14, InvalidMetadataIdentifier = 15, MalformedCallStructure = 16, ReservedRegisterNotWritable = 17, InvalidFlags = 18, InvalidImmediateValue = 19, ExpectedCoinInput = 20, EcalError = 21, MemoryWriteOverlap = 22, ContractNotInInputs = 23, InternalBalanceOverflow = 24, ContractMaxSize = 25, ExpectedUnallocatedStack = 26, MaxStaticContractsReached = 27, TransferAmountCannotBeZero = 28, ExpectedOutputVariable = 29, ExpectedParentInternalContext = 30, PredicateReturnedNonOne = 31, ContractIdAlreadyDeployed = 32, ContractMismatch = 33, MessageDataTooLong = 34, ArithmeticError = 35, ContractInstructionNotAllowed = 36, TransferZeroCoins = 37, InvalidInstruction = 38, MemoryNotExecutable = 39, PolicyIsNotSet = 40, PolicyNotFound = 41, TooManyReceipts = 42, BalanceOverflow = 43, InvalidBlockHeight = 44, TooManySlots = 45, ExpectedNestedCaller = 46, MemoryGrowthOverlap = 47, UninitalizedMemoryAccess = 48, OverridingConsensusParameters = 49, UnknownStateTransactionBytecodeRoot = 50, OverridingStateTransactionBytecode = 51, BytecodeAlreadyUploaded = 52, ThePartIsNotSequentiallyConnected = 53,
}
Expand description

Panic reason representation for the interpreter.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

UnknownPanicReason = 0

The byte can’t be mapped to any known PanicReason.

§

Revert = 1

Found RVRT instruction.

§

OutOfGas = 2

Execution ran out of gas.

§

TransactionValidity = 3

The transaction validity is violated.

§

MemoryOverflow = 4

Attempt to write outside interpreter memory boundaries.

§

ArithmeticOverflow = 5

Overflow while executing arithmetic operation. These errors are ignored using the WRAPPING flag.

§

ContractNotFound = 6

Designed contract was not found in the storage.

§

MemoryOwnership = 7

Memory ownership rules are violated.

§

NotEnoughBalance = 8

The asset ID balance isn’t enough for the instruction.

§

ExpectedInternalContext = 9

The interpreter is expected to be in internal context.

§

AssetIdNotFound = 10

The queried asset ID was not found in the state.

§

InputNotFound = 11

The provided input is not found in the transaction.

§

OutputNotFound = 12

The provided output is not found in the transaction.

§

WitnessNotFound = 13

The provided witness is not found in the transaction.

§

TransactionMaturity = 14

The transaction maturity is not valid for this request.

§

InvalidMetadataIdentifier = 15

The metadata identifier is invalid.

§

MalformedCallStructure = 16

The call structure is not valid.

§

ReservedRegisterNotWritable = 17

The provided register does not allow write operations.

§

InvalidFlags = 18

The execution resulted in an erroneous state of the interpreter.

§

InvalidImmediateValue = 19

The provided immediate value is not valid for this instruction.

§

ExpectedCoinInput = 20

The provided transaction input is not of type Coin.

§

EcalError = 21

ECAL instruction failed.

§

MemoryWriteOverlap = 22

Two segments of the interpreter memory should not intersect for write operations.

§

ContractNotInInputs = 23

The requested contract is not listed in the transaction inputs.

§

InternalBalanceOverflow = 24

The internal asset ID balance overflowed with the provided instruction.

§

ContractMaxSize = 25

The maximum allowed contract size is violated.

§

ExpectedUnallocatedStack = 26

This instruction expects the stack area to be unallocated for this call.

§

MaxStaticContractsReached = 27

The maximum allowed number of static contracts was reached for this transaction.

§

TransferAmountCannotBeZero = 28

The requested transfer amount cannot be zero.

§

ExpectedOutputVariable = 29

The provided transaction output should be of type Variable.

§

ExpectedParentInternalContext = 30

The expected context of the stack parent is internal.

§

PredicateReturnedNonOne = 31

The predicate returned non 1. The 1 means successful verification of the predicate, all other values means unsuccessful.

§

ContractIdAlreadyDeployed = 32

The contract ID is already deployed and can’t be overwritten.

§

ContractMismatch = 33

The loaded contract mismatch expectations.

§

MessageDataTooLong = 34

Attempting to send message data longer than MAX_MESSAGE_DATA_LENGTH

§

ArithmeticError = 35

Mathematically invalid arguments where given to an arithmetic instruction. For instance, division by zero produces this. These errors are ignored using the UNSAFEMATH flag.

§

ContractInstructionNotAllowed = 36

The contract instruction is not allowed in predicates.

§

TransferZeroCoins = 37

Transfer of zero coins is not allowed.

§

InvalidInstruction = 38

Attempted to execute an invalid instruction

§

MemoryNotExecutable = 39

Memory outside $is..$ssp range is not executable

§

PolicyIsNotSet = 40

The policy is not set.

§

PolicyNotFound = 41

The policy is not found across policies.

§

TooManyReceipts = 42

Receipt context is full

§

BalanceOverflow = 43

Balance of a contract overflowed

§

InvalidBlockHeight = 44

Block height value is invalid, typically because it is too large

§

TooManySlots = 45

Attempt to use sequential memory instructions with too large slot count, typically because it cannot fit into usize

§

ExpectedNestedCaller = 46

Caller of this internal context is also expected to be internal, i.e. $fp->$fp must be non-zero.

§

MemoryGrowthOverlap = 47

During memory growth, the stack overlapped with the heap

§

UninitalizedMemoryAccess = 48

Attempting to read or write uninitialized memory. Also occurs when boundary crosses from stack to heap.

§

OverridingConsensusParameters = 49

Overriding consensus parameters is not allowed.

§

UnknownStateTransactionBytecodeRoot = 50

The storage doesn’t know about the hash of the state transition bytecode.

§

OverridingStateTransactionBytecode = 51

Overriding the state transition bytecode is not allowed.

§

BytecodeAlreadyUploaded = 52

The bytecode is already uploaded and cannot be uploaded again.

§

ThePartIsNotSequentiallyConnected = 53

The part of the bytecode is not sequentially connected to the previous parts.

Trait Implementations§

source§

impl Clone for PanicReason

source§

fn clone(&self) -> PanicReason

Returns a copy 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 PanicReason

source§

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

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

impl Deserialize for PanicReason

source§

fn decode_static<I>(buffer: &mut I) -> Result<PanicReason, Error>
where I: Input + ?Sized,

Decodes static part of Self from the buffer.
source§

fn decode_dynamic<I>(&mut self, buffer: &mut I) -> Result<(), Error>
where I: Input + ?Sized,

Decodes dynamic part of the information from the buffer to fill Self. The default implementation does nothing. Dynamically-sized contains should override this.
source§

fn decode<I>(buffer: &mut I) -> Result<Self, Error>
where I: Input + ?Sized,

Decodes Self from the buffer. Read more
source§

fn from_bytes(buffer: &[u8]) -> Result<Self, Error>

Helper method for deserializing Self from bytes.
source§

impl Display for PanicReason

source§

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

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

impl From<TryFromSliceError> for PanicReason

source§

fn from(_: TryFromSliceError) -> PanicReason

Converts to this type from the input type.
source§

impl From<u8> for PanicReason

source§

fn from(v: u8) -> PanicReason

Converts to this type from the input type.
source§

impl Hash for PanicReason

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl IntoEnumIterator for PanicReason

§

type Iterator = PanicReasonIter

source§

fn iter() -> PanicReasonIter

source§

impl PartialEq for PanicReason

source§

fn eq(&self, other: &PanicReason) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for PanicReason

source§

fn size_static(&self) -> usize

Size of the static part of the serialized object, in bytes. Saturates to usize::MAX on overflow.
source§

fn size_dynamic(&self) -> usize

Size of the dynamic part, in bytes. Saturates to usize::MAX on overflow.
source§

fn encode_static<O>(&self, buffer: &mut O) -> Result<(), Error>
where O: Output + ?Sized,

Encodes staticly-sized part of Self.
source§

fn encode_dynamic<O>(&self, buffer: &mut O) -> Result<(), Error>
where O: Output + ?Sized,

Encodes dynamically-sized part of Self. The default implementation does nothing. Dynamically-sized contains should override this.
source§

fn size(&self) -> usize

Total size of the serialized object, in bytes. Saturates to usize::MAX on overflow.
source§

fn encode<O>(&self, buffer: &mut O) -> Result<(), Error>
where O: Output + ?Sized,

Encodes Self into the buffer. Read more
source§

fn to_bytes(&self) -> Vec<u8>

Encodes Self into bytes vector. Required known size.
source§

impl Copy for PanicReason

source§

impl Eq for PanicReason

source§

impl StructuralPartialEq for PanicReason

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

source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<T> FmtForward for T

source§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
source§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
source§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
source§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
source§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
source§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
source§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
source§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
source§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
source§

impl<T> Pipe for T
where T: ?Sized,

source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> StorageAsMut for T

source§

fn storage<Type>(&mut self) -> StorageMut<'_, Self, Type>
where Type: Mappable,

source§

fn storage_as_mut<Type>(&mut self) -> StorageMut<'_, Self, Type>
where Type: Mappable,

source§

impl<T> StorageAsRef for T

source§

fn storage<Type>(&self) -> StorageRef<'_, Self, Type>
where Type: Mappable,

source§

fn storage_as_ref<Type>(&self) -> StorageRef<'_, Self, Type>
where Type: Mappable,

source§

impl<T> Tap for T

source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
source§

impl<T> ToOwned for T
where T: Clone,

§

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> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T> TryConv for T

source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

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

§

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.
source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V