Enum EVMError
pub enum EVMError<DBError, TransactionError = InvalidTransaction> {
Transaction(TransactionError),
Header(InvalidHeader),
Database(DBError),
Custom(String),
Precompile(String),
}
Expand description
Main EVM error
Variants§
Transaction(TransactionError)
Transaction validation error
Header(InvalidHeader)
Header validation error
Database(DBError)
Database error
Custom(String)
Custom error
Useful for handler registers where custom logic would want to return their own custom error.
Precompile(String)
Precompile error
Implementations§
§impl<DBError, TransactionValidationErrorT> EVMError<DBError, TransactionValidationErrorT>
impl<DBError, TransactionValidationErrorT> EVMError<DBError, TransactionValidationErrorT>
pub fn map_db_err<F, E>(self, op: F) -> EVMError<E, TransactionValidationErrorT>where
F: FnOnce(DBError) -> E,
pub fn map_db_err<F, E>(self, op: F) -> EVMError<E, TransactionValidationErrorT>where
F: FnOnce(DBError) -> E,
Maps a DBError
to a new error type using the provided closure, leaving other variants unchanged.
Trait Implementations§
§impl<'de, DBError, TransactionError> Deserialize<'de> for EVMError<DBError, TransactionError>where
DBError: Deserialize<'de>,
TransactionError: Deserialize<'de>,
impl<'de, DBError, TransactionError> Deserialize<'de> for EVMError<DBError, TransactionError>where
DBError: Deserialize<'de>,
TransactionError: Deserialize<'de>,
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<EVMError<DBError, TransactionError>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<EVMError<DBError, TransactionError>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
§impl<DBError, TransactionValidationErrorT> Display for EVMError<DBError, TransactionValidationErrorT>
impl<DBError, TransactionValidationErrorT> Display for EVMError<DBError, TransactionValidationErrorT>
§impl<DBError, TransactionValidationErrorT> Error for EVMError<DBError, TransactionValidationErrorT>
impl<DBError, TransactionValidationErrorT> Error for EVMError<DBError, TransactionValidationErrorT>
§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
Returns 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()
§impl<DBError, TxError> EvmError for EVMError<DBError, TxError>
impl<DBError, TxError> EvmError for EVMError<DBError, TxError>
§type InvalidTransaction = TxError
type InvalidTransaction = TxError
Errors which might occur as a result of an invalid transaction. i.e unrelated to general EVM
configuration.
§fn as_invalid_tx_err(
&self,
) -> Option<&<EVMError<DBError, TxError> as EvmError>::InvalidTransaction>
fn as_invalid_tx_err( &self, ) -> Option<&<EVMError<DBError, TxError> as EvmError>::InvalidTransaction>
Returns the [
EvmError::InvalidTransaction
] if the error is an invalid transaction error.§fn try_into_invalid_tx_err(
self,
) -> Result<<EVMError<DBError, TxError> as EvmError>::InvalidTransaction, EVMError<DBError, TxError>>
fn try_into_invalid_tx_err( self, ) -> Result<<EVMError<DBError, TxError> as EvmError>::InvalidTransaction, EVMError<DBError, TxError>>
Attempts to convert the error into [
EvmError::InvalidTransaction
].§fn is_invalid_tx_err(&self) -> bool
fn is_invalid_tx_err(&self) -> bool
Returns
true
if the error is an invalid transaction error.§impl<DBError, TX> From<DBError> for EVMError<DBError, TX>where
DBError: DBErrorMarker,
impl<DBError, TX> From<DBError> for EVMError<DBError, TX>where
DBError: DBErrorMarker,
§impl<DBError, TransactionValidationErrorT> From<InvalidHeader> for EVMError<DBError, TransactionValidationErrorT>
impl<DBError, TransactionValidationErrorT> From<InvalidHeader> for EVMError<DBError, TransactionValidationErrorT>
§fn from(value: InvalidHeader) -> EVMError<DBError, TransactionValidationErrorT>
fn from(value: InvalidHeader) -> EVMError<DBError, TransactionValidationErrorT>
Converts to this type from the input type.
§impl<DB, TXE> From<InvalidTransaction> for EVMError<DB, TXE>where
TXE: From<InvalidTransaction>,
impl<DB, TXE> From<InvalidTransaction> for EVMError<DB, TXE>where
TXE: From<InvalidTransaction>,
§fn from(value: InvalidTransaction) -> EVMError<DB, TXE>
fn from(value: InvalidTransaction) -> EVMError<DB, TXE>
Converts to this type from the input type.
§impl<DB, TXERROR> From<PrecompileError> for EVMError<DB, TXERROR>
impl<DB, TXERROR> From<PrecompileError> for EVMError<DB, TXERROR>
§fn from(value: PrecompileError) -> EVMError<DB, TXERROR>
fn from(value: PrecompileError) -> EVMError<DB, TXERROR>
Converts to this type from the input type.
§impl<DB, TX> FromStringError for EVMError<DB, TX>
impl<DB, TX> FromStringError for EVMError<DB, TX>
fn from_string(value: String) -> EVMError<DB, TX>
§impl<DB, TX> IsTxError for EVMError<DB, TX>
impl<DB, TX> IsTxError for EVMError<DB, TX>
fn is_tx_error(&self) -> bool
§impl<DBError, TransactionError> PartialEq for EVMError<DBError, TransactionError>
impl<DBError, TransactionError> PartialEq for EVMError<DBError, TransactionError>
§impl<DBError, TransactionError> Serialize for EVMError<DBError, TransactionError>
impl<DBError, TransactionError> Serialize for EVMError<DBError, TransactionError>
§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<DBError, TransactionError> Eq for EVMError<DBError, TransactionError>
impl<DBError, TransactionError> StructuralPartialEq for EVMError<DBError, TransactionError>
Auto Trait Implementations§
impl<DBError, TransactionError> Freeze for EVMError<DBError, TransactionError>
impl<DBError, TransactionError> RefUnwindSafe for EVMError<DBError, TransactionError>where
TransactionError: RefUnwindSafe,
DBError: RefUnwindSafe,
impl<DBError, TransactionError> Send for EVMError<DBError, TransactionError>
impl<DBError, TransactionError> Sync for EVMError<DBError, TransactionError>
impl<DBError, TransactionError> Unpin for EVMError<DBError, TransactionError>
impl<DBError, TransactionError> UnwindSafe for EVMError<DBError, TransactionError>where
TransactionError: UnwindSafe,
DBError: UnwindSafe,
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
impl<TxEnv, T> FromRecoveredTx<&T> for TxEnvwhere
TxEnv: FromRecoveredTx<T>,
§fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
fn from_recovered_tx(tx: &&T, sender: Address) -> TxEnv
Builds a
TxEnv
from a transaction and a sender address.§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> 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> ⓘ
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 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> ⓘ
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§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
impl<'de, T> BorrowedRpcObject<'de> for Twhere
T: RpcBorrow<'de> + RpcSend,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
impl<T> ErasedDestructor for Twhere
T: 'static,
impl<EVM, T> EvmTrError<EVM> for Twhere
EVM: EvmTr,
T: From<InvalidTransaction> + From<InvalidHeader> + From<<<<EVM as EvmTr>::Context as ContextTr>::Db as Database>::Error> + From<PrecompileError> + FromStringError,
impl<T> MaybeDebug for Twhere
T: Debug,
impl<T> MaybeSendSync for T
impl<T> MaybeSerde for Twhere
T: Serialize + for<'de> Deserialize<'de>,
impl<'de, T> RpcBorrow<'de> for T
impl<T> RpcObject for Twhere
T: RpcSend + RpcRecv,
impl<T> RpcRecv for T
impl<T> RpcSend for T
Layout§
Note: Unable to compute type layout, possibly due to this type having generic parameters. Layout can only be computed for concrete, fully-instantiated types.