slog-telegraf 0.2.2

Telegraf drain for slog-rs
Documentation
use std::{io, error, fmt};

#[derive(Debug)]
pub enum Error {
    Io(io::Error),
    UrlParsing(url::ParseError),
    Custom(String)
}

impl fmt::Display for Error {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            Error::Io(err) => err.fmt(f),
            Error::UrlParsing(err) => err.fmt(f),
            Error::Custom(msg) => write!(f, "{}", msg)
        }
    }
}

impl error::Error for Error {
    fn source(&self) -> Option<&(dyn error::Error + 'static)> {
        match self {
            Error::Io(err) => err.source(),
            Error::UrlParsing(_) |
            Error::Custom(_) => None
        }
    }
}

impl From<url::ParseError> for Error {
    fn from(err: url::ParseError) -> Error {
        Error::UrlParsing(err)
    }
}

impl From<io::Error> for Error {
    fn from(err: io::Error) -> Error {
        Error::Io(err)
    }
}