use std::{io, result::Result as StandardResult};
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum ErrorKind {
IOError,
InvalidAddressSpace,
InvalidSnapshotFormat,
}
#[derive(Debug)]
pub struct Error {
kind: ErrorKind,
message: String,
}
pub type Result<T> = StandardResult<T, Error>;
impl Error {
pub fn new(kind: ErrorKind, message: &str) -> Error {
Error {
kind,
message: message.to_owned(),
}
}
pub fn kind(&self) -> ErrorKind {
self.kind
}
pub fn message(&self) -> &str {
&self.message
}
}
impl From<io::Error> for Error {
fn from(error: io::Error) -> Self {
Error {
kind: ErrorKind::IOError,
message: error.to_string(),
}
}
}