#![deny(clippy::arithmetic_side_effects)]
#![deny(clippy::cast_possible_truncation)]
#![deny(missing_docs)]
#![deny(unused_crate_dependencies)]
#![deny(warnings)]
#![deny(unused_variables)]
use fuel_core_storage::Error as StorageError;
use fuel_core_types::services::executor::Error as ExecutorError;
#[derive(Debug, derive_more::Display, derive_more::From)]
#[non_exhaustive]
pub enum Error {
#[display(fmt = "error performing serialization or deserialization")]
Codec,
#[display(
fmt = "Invalid database version, expected {expected:#x}, found {found:#x}"
)]
InvalidDatabaseVersion {
found: u32,
expected: u32,
},
#[display(fmt = "Multiple heights found in the commit {heights:?}")]
MultipleHeightsInCommit {
heights: Vec<u64>,
},
#[display(fmt = "Failed to advance the height")]
FailedToAdvanceHeight,
#[display(
fmt = "New and old heights are not linked: prev_height: {prev_height:#x}, new_height: {new_height:#x}"
)]
HeightsAreNotLinked {
prev_height: u64,
new_height: u64,
},
#[display(
fmt = "The new height is not found, but the old height is set: prev_height: {prev_height:#x}"
)]
NewHeightIsNotSet {
prev_height: u64,
},
#[from]
Other(anyhow::Error),
}
#[cfg(feature = "test-helpers")]
impl PartialEq for Error {
fn eq(&self, other: &Self) -> bool {
self.to_string().eq(&other.to_string())
}
}
impl From<Error> for anyhow::Error {
fn from(error: Error) -> Self {
anyhow::Error::msg(error)
}
}
impl From<Error> for StorageError {
fn from(e: Error) -> Self {
StorageError::DatabaseError(Box::new(e))
}
}
impl From<Error> for ExecutorError {
fn from(e: Error) -> Self {
ExecutorError::StorageError(format!("{}", StorageError::from(e)))
}
}
#[cfg(test)]
fuel_core_trace::enable_tracing!();