105 lines · 2.7 KB · Rust
RawDownload
/// A workaround for a clippy warning#[doc(hidden)]#[derive(Clone)]pub struct Span; impl Span {    /// A no-op    pub fn record<V>(&self, _field: &str, _value: V) -> &Self {        self    }} /// A macro to create a span.#[macro_export]macro_rules! span {    (target: $target:expr, $lvl:expr, $name:expr, $($fields:tt)*) => {        $crate::Span    };    (target: $target:expr, $lvl:expr, $name:expr) => {        $crate::span!(target: $target, $lvl, $name,)    };    ($lvl:expr, $name:expr, $($fields:tt)*) => {        $crate::span!(            target: module_path!(),            $lvl,            $name,            $($fields)*        )    };    ($lvl:expr, $name:expr) => {        $crate::span!(            target: module_path!(),            $lvl,            $name,        )    };} /// Create an event with the given level.#[macro_export]macro_rules! event {    (target: $target:expr, $lvl:expr, { $($fields:tt)* } )=> (        {}    );    (target: $target:expr, $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (        $crate::event!(            target: $target,            $lvl,            { message = format_args!($($arg)+), $($fields)* }        )    );    (target: $target:expr, $lvl:expr, $($k:ident).+ = $($fields:tt)* ) => (        $crate::event!(target: $target, $lvl, { $($k).+ = $($fields)* })    );    (target: $target:expr, $lvl:expr, $($arg:tt)+ ) => (        $crate::event!(target: $target, $lvl, { $($arg)+ })    );    ( $lvl:expr, { $($fields:tt)* }, $($arg:tt)+ ) => (        $crate::event!(            target: module_path!(),            $lvl,            { message = format_args!($($arg)+), $($fields)* }        )    );    ($lvl:expr, $($k:ident).+ = $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $lvl,            { $($k).+ = $($field)*}        )    );    ($lvl:expr, $($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $lvl,            { $($k).+, $($field)*}        )    );    ($lvl:expr, ?$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $lvl,            { ?$($k).+, $($field)*}        )    );    ($lvl:expr, %$($k:ident).+, $($field:tt)*) => (        $crate::event!(            target: module_path!(),            $lvl,            { %$($k).+, $($field)*}        )    );    ($lvl:expr, ?$($k:ident).+) => (        $crate::event!($lvl, ?$($k).+,)    );    ($lvl:expr, %$($k:ident).+) => (        $crate::event!($lvl, %$($k).+,)    );    ($lvl:expr, $($k:ident).+) => (        $crate::event!($lvl, $($k).+,)    );    ( $lvl:expr, $($arg:tt)+ ) => (        $crate::event!(target: module_path!(), $lvl, { $($arg)+ })    );}