Skip to main content

slog_telegraf/
error.rs

1use std::{io, error, fmt};
2
3#[derive(Debug)]
4pub enum Error {
5    Io(io::Error),
6    UrlParsing(url::ParseError),
7    Custom(String)
8}
9
10impl fmt::Display for Error {
11    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
12        match self {
13            Error::Io(err) => err.fmt(f),
14            Error::UrlParsing(err) => err.fmt(f),
15            Error::Custom(msg) => write!(f, "{}", msg)
16        }
17    }
18}
19
20impl error::Error for Error {
21    fn source(&self) -> Option<&(dyn error::Error + 'static)> {
22        match self {
23            Error::Io(err) => err.source(),
24            Error::UrlParsing(_) |
25            Error::Custom(_) => None
26        }
27    }
28}
29
30impl From<url::ParseError> for Error {
31    fn from(err: url::ParseError) -> Error {
32        Error::UrlParsing(err)
33    }
34}
35
36impl From<io::Error> for Error {
37    fn from(err: io::Error) -> Error {
38        Error::Io(err)
39    }
40}