diff --git a/src/telemetry/metrics/labels/errno.rs b/src/telemetry/metrics/labels/errno.rs index 02762c9ae..f3b4d9e3c 100644 --- a/src/telemetry/metrics/labels/errno.rs +++ b/src/telemetry/metrics/labels/errno.rs @@ -1,5 +1,36 @@ use std::fmt; +macro_rules! mk_err_enum { + { $(#[$m:meta])* enum $name:ident from $from_ty:ty { + $( $from:pat => $reason:ident ),+ + } } => { + $(#[$m])* + pub enum $name { + $( $reason ),+ + } + + impl fmt::Display for $name { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + $( + $name::$reason => f.pad(stringify!($reason)) + ),+ + } + } + } + + impl<'a> From<$from_ty> for $name { + fn from(err: $from_ty) -> Self { + match err { + $( + $from => $name::$reason + ),+ + } + } + } + } +} + mk_err_enum! { /// Taken from `errno.h`. #[cfg(not(target_os="windows"))] diff --git a/src/telemetry/metrics/labels/mod.rs b/src/telemetry/metrics/labels/mod.rs index aea037e47..b7e69fff3 100644 --- a/src/telemetry/metrics/labels/mod.rs +++ b/src/telemetry/metrics/labels/mod.rs @@ -12,38 +12,6 @@ use conditional::Conditional; use telemetry::event; use transport::tls; -macro_rules! mk_err_enum { - { $(#[$m:meta])* enum $name:ident from $from_ty:ty { - $( $from:pat => $reason:ident ),+ - } } => { - $(#[$m])* - pub enum $name { - $( $reason ),+ - } - - impl fmt::Display for $name { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - // use super::$name::*; - match self { - $( - $name::$reason => f.pad(stringify!($reason)) - ),+ - } - } - } - - impl<'a> From<$from_ty> for $name { - fn from(err: $from_ty) -> Self { - match err { - $( - $from => $name::$reason - ),+ - } - } - } - } -} - mod errno; pub use self::errno::Errno;