use log::error;
#[derive(Clone, Copy, Debug)]
pub struct Failed;
impl From<Fatal> for Failed {
fn from(_: Fatal) -> Failed {
Failed
}
}
#[derive(Clone, Copy, Debug)]
pub struct RunFailed {
fatal: bool,
}
impl RunFailed {
pub fn fatal() -> Self {
RunFailed { fatal: true }
}
pub fn retry() -> Self {
RunFailed { fatal: false }
}
pub fn is_fatal(self) -> bool {
self.fatal
}
pub fn should_retry(self) -> bool {
!self.fatal
}
}
impl From<Fatal> for RunFailed {
fn from(_: Fatal) -> Self {
RunFailed::fatal()
}
}
impl From<Failed> for RunFailed {
fn from(_: Failed) -> Self {
RunFailed::fatal()
}
}
#[derive(Clone, Copy, Debug)]
pub struct Fatal;
impl From<Failed> for Fatal {
fn from(_: Failed) -> Self {
Self
}
}
#[derive(Clone, Copy, Debug)]
pub enum ExitError {
Generic,
IncompleteUpdate,
Invalid,
}
impl From<Failed> for ExitError {
fn from(_: Failed) -> ExitError {
error!("Fatal error. Exiting.");
ExitError::Generic
}
}
impl From<RunFailed> for ExitError {
fn from(_: RunFailed) -> ExitError {
error!("Fatal error. Exiting.");
ExitError::Generic
}
}
impl From<Fatal> for ExitError {
fn from(_: Fatal) -> ExitError {
error!("Fatal error. Exiting.");
ExitError::Generic
}
}