pub enum CacheError {
Show 25 variants
Runtime(RuntimeError),
Rpc(RpcError),
Persistence(PersistenceError),
MissingStorageBatchFetcher,
MissingAccountFieldsFetcher,
ReconcileFetchFailed {
requested: usize,
},
AccountFetch {
address: Address,
details: String,
},
CodeSeedConflict {
address: Address,
cached: B256,
seeded: B256,
},
CodeSeedEmpty {
address: Address,
},
StorageRead {
address: Address,
slot: U256,
details: String,
},
StorageInsert {
address: Address,
slot: U256,
details: String,
},
TxEnv {
details: String,
},
Transact {
details: String,
},
CallNotSuccessful {
result: String,
},
TraceParse {
details: String,
},
Decode {
what: &'static str,
details: String,
},
SolCallFailed {
signature: &'static str,
from: Address,
to: Address,
result: String,
},
SolCallDecode {
signature: &'static str,
from: Address,
to: Address,
output_len: usize,
details: String,
},
DeploymentMissingAddress,
DeploymentReverted {
output_hex: String,
},
DeploymentHalted {
reason: String,
},
MissingSourceBytecode {
source_address: Address,
},
MissingRuntimeCode {
role: &'static str,
address: Address,
},
MissingTargetAccount {
target: Address,
},
TargetAccountFetch {
target: Address,
details: String,
},
}Expand description
General cache-operation error for APIs that execute or mutate local fork
state but do not classify EVM reverts as SimError.
Variants§
Runtime(RuntimeError)
Runtime precondition failure.
Rpc(RpcError)
Direct RPC callback failure.
Persistence(PersistenceError)
On-disk persistence failure.
MissingStorageBatchFetcher
A storage verification/reconciliation path had no batch fetcher.
MissingAccountFieldsFetcher
Code-seed verification had pending seeds but no account-fields fetcher.
ReconcileFetchFailed
Reconciliation could not fetch any requested slot, so it cannot prove the local state fresh.
AccountFetch
Account fetch failed.
CodeSeedConflict
A canonical code seed contradicts code already fetched from the chain.
Chain-fetched state is authoritative over templates: the seed is rejected and the cached code is left untouched. If the caller believes the chain has moved (e.g. a redeploy), purge the account first and re-seed.
Fields
CodeSeedEmpty
A code seed/etch was given empty bytes; claiming an address is
code-less is not a supported seed (that is what verification’s
codeless classification reports).
StorageRead
Storage read failed.
Fields
StorageInsert
Storage insert failed.
Fields
TxEnv
Transaction environment construction failed.
Transact
revm returned a host/database transaction error.
CallNotSuccessful
A helper that requires a successful EVM call observed a revert or halt.
TraceParse
A debug/trace RPC response could not be parsed into the cache’s typed block state-diff representation.
Decode
ABI or helper-specific decode failure.
SolCallFailed
A typed Solidity call executed but did not succeed.
Fields
SolCallDecode
A typed Solidity call returned malformed data.
Fields
DeploymentMissingAddress
Deployment succeeded without a created address.
DeploymentReverted
Deployment reverted.
DeploymentHalted
Deployment halted.
MissingSourceBytecode
Source account did not contain bytecode for an override.
MissingRuntimeCode
Runtime bytecode was required but absent or empty.
MissingTargetAccount
Target account was required but absent.
TargetAccountFetch
Target account fetch failed while validating an override target.
Implementations§
Source§impl CacheError
impl CacheError
Sourcepub fn tx_env(source: impl Debug) -> Self
pub fn tx_env(source: impl Debug) -> Self
Convert a transaction-builder error into CacheError::TxEnv.
Sourcepub fn transact(source: impl Debug) -> Self
pub fn transact(source: impl Debug) -> Self
Convert a revm host/database transaction error into
CacheError::Transact.
Trait Implementations§
Source§impl Debug for CacheError
impl Debug for CacheError
Source§impl Display for CacheError
impl Display for CacheError
Source§impl Error for CacheError
impl Error for CacheError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()
Source§impl From<CacheError> for SimHostError
impl From<CacheError> for SimHostError
Source§fn from(source: CacheError) -> Self
fn from(source: CacheError) -> Self
Source§impl From<CacheError> for MulticallError
impl From<CacheError> for MulticallError
Source§fn from(source: CacheError) -> Self
fn from(source: CacheError) -> Self
Source§impl From<CacheError> for DeployError
impl From<CacheError> for DeployError
Source§fn from(source: CacheError) -> Self
fn from(source: CacheError) -> Self
Source§impl From<CacheError> for SimError
impl From<CacheError> for SimError
Source§fn from(e: CacheError) -> Self
fn from(e: CacheError) -> Self
Source§impl From<PersistenceError> for CacheError
impl From<PersistenceError> for CacheError
Source§fn from(source: PersistenceError) -> Self
fn from(source: PersistenceError) -> Self
Source§impl From<RpcError> for CacheError
impl From<RpcError> for CacheError
Source§impl From<RuntimeError> for CacheError
impl From<RuntimeError> for CacheError
Source§fn from(source: RuntimeError) -> Self
fn from(source: RuntimeError) -> Self
Auto Trait Implementations§
impl !RefUnwindSafe for CacheError
impl !UnwindSafe for CacheError
impl Freeze for CacheError
impl Send for CacheError
impl Sync for CacheError
impl Unpin for CacheError
impl UnsafeUnpin for CacheError
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> 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>
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>
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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§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,
self and passes that borrow into the pipe function. Read moreSource§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,
self and passes that borrow into the pipe function. Read moreSource§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
Source§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
Source§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
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
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
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
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.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
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.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
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.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
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.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
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.