use std::fmt;
use std::num::TryFromIntError;
use errno::Errno;
use super::write;
#[derive(Debug)]
pub enum Error {
Netlink(Errno),
Syscall(Errno),
IO(std::io::Error),
Overrun,
Conversion(TryFromIntError),
}
impl From<Errno> for Error {
fn from(err: Errno) -> Self {
Error::Syscall(err)
}
}
impl From<std::io::Error> for Error {
fn from(err: std::io::Error) -> Self {
Error::IO(err)
}
}
impl From<TryFromIntError> for Error {
fn from(err: TryFromIntError) -> Self {
Error::Conversion(err)
}
}
impl From<write::Error> for Error {
fn from(err: write::Error) -> Self {
match err {
write::Error::Overrun => Self::Overrun,
write::Error::Conversion(e) => Self::Conversion(e),
}
}
}
impl std::error::Error for Error {}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "{:?}", self)
}
}