use std::error::Error;
use std::fmt::Display;
use splinter::error::{
InternalError, InvalidArgumentError, InvalidStateError, ResourceTemporarilyUnavailableError,
};
#[derive(Debug)]
pub enum CommitHashStoreError {
Internal(InternalError),
InvalidArgument(InvalidArgumentError),
InvalidState(InvalidStateError),
ResourceTemporarilyUnavailable(ResourceTemporarilyUnavailableError),
}
impl Display for CommitHashStoreError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
CommitHashStoreError::Internal(e) => e.fmt(f),
CommitHashStoreError::InvalidArgument(e) => e.fmt(f),
CommitHashStoreError::InvalidState(e) => e.fmt(f),
CommitHashStoreError::ResourceTemporarilyUnavailable(e) => e.fmt(f),
}
}
}
impl Error for CommitHashStoreError {
fn source(&self) -> Option<&(dyn Error + 'static)> {
match self {
CommitHashStoreError::Internal(e) => Some(e),
CommitHashStoreError::InvalidArgument(e) => Some(e),
CommitHashStoreError::InvalidState(e) => Some(e),
CommitHashStoreError::ResourceTemporarilyUnavailable(e) => Some(e),
}
}
}
impl From<InternalError> for CommitHashStoreError {
fn from(err: InternalError) -> Self {
CommitHashStoreError::Internal(err)
}
}
impl From<InvalidArgumentError> for CommitHashStoreError {
fn from(err: InvalidArgumentError) -> Self {
CommitHashStoreError::InvalidArgument(err)
}
}
impl From<InvalidStateError> for CommitHashStoreError {
fn from(err: InvalidStateError) -> Self {
CommitHashStoreError::InvalidState(err)
}
}