use std::error::Error;
use std::fmt;
#[derive(Debug)]
pub enum StateWriteError {
InvalidStateId(String),
StorageError(Box<dyn Error>),
}
impl fmt::Display for StateWriteError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
StateWriteError::InvalidStateId(msg) => write!(f, "Invalid State Id: {}", msg),
StateWriteError::StorageError(err) => write!(f, "Storage Error: {}", err.description()),
}
}
}
impl Error for StateWriteError {
fn description(&self) -> &str {
match self {
StateWriteError::InvalidStateId(_) => "An invalid State Id was provided.",
StateWriteError::StorageError(_) => {
"An error occurred with the underlying storage layer."
}
}
}
fn cause(&self) -> Option<&Error> {
match self {
StateWriteError::InvalidStateId(_) => None,
StateWriteError::StorageError(err) => Some(err.as_ref()),
}
}
}
#[derive(Debug)]
pub enum StateReadError {
InvalidStateId(String),
InvalidKey(String),
StorageError(Box<dyn Error>),
}
impl fmt::Display for StateReadError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
StateReadError::InvalidStateId(msg) => write!(f, "Invalid State Id: {}", msg),
StateReadError::InvalidKey(key) => write!(f, "Invalid Key: {}", key),
StateReadError::StorageError(err) => write!(f, "Storage Error: {}", err.description()),
}
}
}
impl Error for StateReadError {
fn description(&self) -> &str {
match self {
StateReadError::InvalidStateId(_) => "An invalid State Id was provided.",
StateReadError::InvalidKey(_) => "A provided key was invalid",
StateReadError::StorageError(_) => {
"An error occurred with the underlying storage layer."
}
}
}
fn cause(&self) -> Option<&Error> {
match self {
StateReadError::InvalidStateId(_) | StateReadError::InvalidKey(_) => None,
StateReadError::StorageError(err) => Some(err.as_ref()),
}
}
}
#[derive(Debug)]
pub enum StatePruneError {
InvalidStateId(String),
StorageError(Box<dyn Error>),
}
impl fmt::Display for StatePruneError {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
match self {
StatePruneError::InvalidStateId(msg) => write!(f, "Invalid State Id: {}", msg),
StatePruneError::StorageError(err) => write!(f, "Storage Error: {}", err.description()),
}
}
}
impl Error for StatePruneError {
fn description(&self) -> &str {
match self {
StatePruneError::InvalidStateId(_) => "An invalid State Id was provided.",
StatePruneError::StorageError(_) => {
"An error occurred with the underlying storage layer."
}
}
}
fn cause(&self) -> Option<&Error> {
match self {
StatePruneError::InvalidStateId(_) => None,
StatePruneError::StorageError(err) => Some(err.as_ref()),
}
}
}