diff --git a/tracing-core/src/dispatcher.rs b/tracing-core/src/dispatcher.rs index da3f7b4af1..50e623f59b 100644 --- a/tracing-core/src/dispatcher.rs +++ b/tracing-core/src/dispatcher.rs @@ -131,7 +131,7 @@ //! [`Dispatch`]: struct.Dispatch.html use crate::{ callsite, span, - subscriber::{self, Subscriber}, + subscriber::{self, Subscriber, NoSubscriber}, Event, LevelFilter, Metadata, }; @@ -661,32 +661,6 @@ where } } -struct NoSubscriber; -impl Subscriber for NoSubscriber { - #[inline] - fn register_callsite(&self, _: &'static Metadata<'static>) -> subscriber::Interest { - subscriber::Interest::never() - } - - fn new_span(&self, _: &span::Attributes<'_>) -> span::Id { - span::Id::from_u64(0xDEAD) - } - - fn event(&self, _event: &Event<'_>) {} - - fn record(&self, _span: &span::Id, _values: &span::Record<'_>) {} - - fn record_follows_from(&self, _span: &span::Id, _follows: &span::Id) {} - - #[inline] - fn enabled(&self, _metadata: &Metadata<'_>) -> bool { - false - } - - fn enter(&self, _span: &span::Id) {} - fn exit(&self, _span: &span::Id) {} -} - impl Registrar { pub(crate) fn try_register( &self, diff --git a/tracing-core/src/subscriber.rs b/tracing-core/src/subscriber.rs index 0e07263238..98bf1edca9 100644 --- a/tracing-core/src/subscriber.rs +++ b/tracing-core/src/subscriber.rs @@ -564,6 +564,37 @@ impl Interest { } } +/// A no-op [`Subscriber`] +/// +/// [`NoSubscriber`] implements the [`Subscriber`] trait by never being enabled, +/// never being interested in any callsite, and drops all spans and events. +#[derive(Debug, Copy, Clone)] +pub struct NoSubscriber; +impl Subscriber for NoSubscriber { + #[inline] + fn register_callsite(&self, _: &'static Metadata<'static>) -> Interest { + Interest::never() + } + + fn new_span(&self, _: &span::Attributes<'_>) -> span::Id { + span::Id::from_u64(0xDEAD) + } + + fn event(&self, _event: &Event<'_>) {} + + fn record(&self, _span: &span::Id, _values: &span::Record<'_>) {} + + fn record_follows_from(&self, _span: &span::Id, _follows: &span::Id) {} + + #[inline] + fn enabled(&self, _metadata: &Metadata<'_>) -> bool { + false + } + + fn enter(&self, _span: &span::Id) {} + fn exit(&self, _span: &span::Id) {} +} + impl Subscriber for Box { #[inline] fn register_callsite(&self, metadata: &'static Metadata<'static>) -> Interest {