#[derive(Debug)]
pub struct Error<M> {
pub map: M,
pub err: std::io::Error,
}
impl<M> std::fmt::Display for Error<M> {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> Result<(), std::fmt::Error> {
self.err.fmt(f)
}
}
impl<M: std::fmt::Debug> std::error::Error for Error<M> {
fn source(&self) -> Option<&(dyn std::error::Error + 'static)> {
Some(&self.err)
}
}
impl<M> From<Error<M>> for std::io::Error {
fn from(value: Error<M>) -> Self {
value.err
}
}
impl From<std::io::Error> for Error<()> {
fn from(value: std::io::Error) -> Self {
Self {
map: (),
err: value,
}
}
}
impl From<std::io::ErrorKind> for Error<()> {
fn from(value: std::io::ErrorKind) -> Self {
Self {
map: (),
err: value.into(),
}
}
}