use std::fmt::{Debug, Display, Formatter};
use std::io;
#[derive(Debug)]
pub enum SpinnerError {
TimedOut,
TaskFailed,
}
#[derive(Debug)]
pub enum CliPromptError {
IoError(io::Error),
OptionsVecEmptyError { message: String },
InvalidMaxChoiceNumError { message: String },
SpinnerError(SpinnerError),
}
impl From<io::Error> for CliPromptError {
fn from(error: io::Error) -> Self {
CliPromptError::IoError(error)
}
}
impl Display for CliPromptError {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
match self {
CliPromptError::IoError(io_error) => write!(f, "{}", io_error),
CliPromptError::OptionsVecEmptyError { message } => write!(f, "{}", message),
CliPromptError::InvalidMaxChoiceNumError { message } => write!(f, "{}", message),
CliPromptError::SpinnerError(spinner_error) => spinner_error.fmt(f),
}
}
}
impl std::error::Error for CliPromptError {}