use failure::Fail;
#[derive(Debug, Fail)]
pub enum BlackJackError {
#[fail(display = "No series name present!")]
NoSeriesName,
#[fail(display = "Unable to decode series")]
SerializationDecodeError(Box<bincode::ErrorKind>),
#[fail(display = "Unable to read headers!")]
HeaderParseError(csv::Error),
#[fail(display = "IO error")]
IoError(std::io::Error),
#[fail(display = "ValueError")]
ValueError(String),
#[fail(display = "LengthMismatch")]
LengthMismatch(String),
}
impl From<&str> for BlackJackError {
fn from(error: &str) -> BlackJackError {
BlackJackError::ValueError(error.to_owned())
}
}
impl From<std::io::Error> for BlackJackError {
fn from(error: std::io::Error) -> BlackJackError {
BlackJackError::IoError(error)
}
}
impl From<csv::Error> for BlackJackError {
fn from(error: csv::Error) -> BlackJackError {
BlackJackError::HeaderParseError(error)
}
}
impl From<Box<bincode::ErrorKind>> for BlackJackError {
fn from(error: Box<bincode::ErrorKind>) -> BlackJackError {
BlackJackError::SerializationDecodeError(error)
}
}