pub type Result<T> = std::result::Result<T, Error>;
#[derive(thiserror::Error, Debug)]
pub enum Error {
#[error("IO Error: {0}")]
IoError(#[from] std::io::Error),
#[error("failed to parse: {0}")]
ParseError(String),
#[error("item not found in collection: {0}")]
ItemNotFound(String),
#[error("encoding error: {0}")]
Utf8Error(#[from] std::str::Utf8Error),
}
impl serde::de::Error for Error {
fn custom<T: std::fmt::Display>(msg: T) -> Self {
Error::ParseError(msg.to_string())
}
}
impl std::convert::From<nom::Err<(&[u8], nom::error::ErrorKind)>> for Error {
fn from(err: nom::Err<(&[u8], nom::error::ErrorKind)>) -> Self {
Error::ParseError(format!("{}", err))
}
}