mirror of
https://github.com/tokio-rs/tracing.git
synced 2025-09-29 22:10:38 +00:00
chore: fix new warnings in Rust 1.72.0 (#2700)
This branch fixes a handful of new warnings which have shown up after updating to Rust 1.72.0. This includes: * `clippy::redundant_closure_call` in macros --- allowed because the macro sometimes calls a function that isn't a closure, and the closure is just used in the case where it's not a function. * Unnecessary uses of `#` in raw string literals that don't contain `"` characters. * Dead code warnings with specific feature flag combinations in `tracing-subscriber`. In addition, I've fixed a broken RustDoc link that was making the Netlify build sad.
This commit is contained in:
parent
72bbf0fe6d
commit
e03a831d05
@ -8,6 +8,7 @@
|
|||||||
[build.environment]
|
[build.environment]
|
||||||
RUSTDOCFLAGS="""
|
RUSTDOCFLAGS="""
|
||||||
-D warnings \
|
-D warnings \
|
||||||
|
--force-warn rustdoc::redundant-explicit-links \
|
||||||
--force-warn renamed-and-removed-lints \
|
--force-warn renamed-and-removed-lints \
|
||||||
--cfg docsrs \
|
--cfg docsrs \
|
||||||
--cfg tracing_unstable
|
--cfg tracing_unstable
|
||||||
|
@ -470,6 +470,10 @@ macro_rules! impl_one_value {
|
|||||||
impl $crate::sealed::Sealed for $value_ty {}
|
impl $crate::sealed::Sealed for $value_ty {}
|
||||||
impl $crate::field::Value for $value_ty {
|
impl $crate::field::Value for $value_ty {
|
||||||
fn record(&self, key: &$crate::field::Field, visitor: &mut dyn $crate::field::Visit) {
|
fn record(&self, key: &$crate::field::Field, visitor: &mut dyn $crate::field::Visit) {
|
||||||
|
// `op` is always a function; the closure is used because
|
||||||
|
// sometimes there isn't a real function corresponding to that
|
||||||
|
// operation. the clippy warning is not that useful here.
|
||||||
|
#[allow(clippy::redundant_closure_call)]
|
||||||
visitor.$record(key, $op(*self))
|
visitor.$record(key, $op(*self))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -485,6 +489,10 @@ macro_rules! impl_one_value {
|
|||||||
impl $crate::sealed::Sealed for ty_to_nonzero!($value_ty) {}
|
impl $crate::sealed::Sealed for ty_to_nonzero!($value_ty) {}
|
||||||
impl $crate::field::Value for ty_to_nonzero!($value_ty) {
|
impl $crate::field::Value for ty_to_nonzero!($value_ty) {
|
||||||
fn record(&self, key: &$crate::field::Field, visitor: &mut dyn $crate::field::Visit) {
|
fn record(&self, key: &$crate::field::Field, visitor: &mut dyn $crate::field::Visit) {
|
||||||
|
// `op` is always a function; the closure is used because
|
||||||
|
// sometimes there isn't a real function corresponding to that
|
||||||
|
// operation. the clippy warning is not that useful here.
|
||||||
|
#[allow(clippy::redundant_closure_call)]
|
||||||
visitor.$record(key, $op(self.get()))
|
visitor.$record(key, $op(self.get()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ pub trait VisitOutput<Out>: Visit {
|
|||||||
/// Extension trait implemented by types which can be recorded by a [visitor].
|
/// Extension trait implemented by types which can be recorded by a [visitor].
|
||||||
///
|
///
|
||||||
/// This allows writing code that is generic over `tracing_core`'s
|
/// This allows writing code that is generic over `tracing_core`'s
|
||||||
/// [`span::Attributes`][attr], [`span::Record`][rec], and [`Event`][event]
|
/// [`span::Attributes`][attr], [`span::Record`][rec], and [`Event`]
|
||||||
/// types. These types all provide inherent `record` methods that allow a
|
/// types. These types all provide inherent `record` methods that allow a
|
||||||
/// visitor to record their fields, but there is no common trait representing this.
|
/// visitor to record their fields, but there is no common trait representing this.
|
||||||
///
|
///
|
||||||
@ -85,7 +85,6 @@ pub trait VisitOutput<Out>: Visit {
|
|||||||
/// [visitor]: tracing_core::field::Visit
|
/// [visitor]: tracing_core::field::Visit
|
||||||
/// [attr]: tracing_core::span::Attributes
|
/// [attr]: tracing_core::span::Attributes
|
||||||
/// [rec]: tracing_core::span::Record
|
/// [rec]: tracing_core::span::Record
|
||||||
/// [event]: tracing_core::event::Event
|
|
||||||
pub trait RecordFields: crate::sealed::Sealed<RecordFieldsMarker> {
|
pub trait RecordFields: crate::sealed::Sealed<RecordFieldsMarker> {
|
||||||
/// Record all the fields in `self` with the provided `visitor`.
|
/// Record all the fields in `self` with the provided `visitor`.
|
||||||
fn record(&self, visitor: &mut dyn Visit);
|
fn record(&self, visitor: &mut dyn Visit);
|
||||||
|
@ -49,7 +49,8 @@ enum ParseErrorKind {
|
|||||||
// === impl DirectiveSet ===
|
// === impl DirectiveSet ===
|
||||||
|
|
||||||
impl<T> DirectiveSet<T> {
|
impl<T> DirectiveSet<T> {
|
||||||
#[cfg(feature = "env-filter")]
|
// this is only used by `env-filter`.
|
||||||
|
#[cfg(all(feature = "std", feature = "env-filter"))]
|
||||||
pub(crate) fn is_empty(&self) -> bool {
|
pub(crate) fn is_empty(&self) -> bool {
|
||||||
self.directives.is_empty()
|
self.directives.is_empty()
|
||||||
}
|
}
|
||||||
@ -397,7 +398,7 @@ impl FromStr for StaticDirective {
|
|||||||
// === impl ParseError ===
|
// === impl ParseError ===
|
||||||
|
|
||||||
impl ParseError {
|
impl ParseError {
|
||||||
#[cfg(feature = "env-filter")]
|
#[cfg(all(feature = "std", feature = "env-filter"))]
|
||||||
pub(crate) fn new() -> Self {
|
pub(crate) fn new() -> Self {
|
||||||
ParseError {
|
ParseError {
|
||||||
kind: ParseErrorKind::Other(None),
|
kind: ParseErrorKind::Other(None),
|
||||||
|
23
tracing-subscriber/src/filter/env/directive.rs
vendored
23
tracing-subscriber/src/filter/env/directive.rs
vendored
@ -120,8 +120,9 @@ impl Directive {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn parse(from: &str, regex: bool) -> Result<Self, ParseError> {
|
pub(super) fn parse(from: &str, regex: bool) -> Result<Self, ParseError> {
|
||||||
static DIRECTIVE_RE: Lazy<Regex> = Lazy::new(|| Regex::new(
|
static DIRECTIVE_RE: Lazy<Regex> = Lazy::new(|| {
|
||||||
r"(?x)
|
Regex::new(
|
||||||
|
r"(?x)
|
||||||
^(?P<global_level>(?i:trace|debug|info|warn|error|off|[0-5]))$ |
|
^(?P<global_level>(?i:trace|debug|info|warn|error|off|[0-5]))$ |
|
||||||
# ^^^.
|
# ^^^.
|
||||||
# `note: we match log level names case-insensitively
|
# `note: we match log level names case-insensitively
|
||||||
@ -135,15 +136,18 @@ impl Directive {
|
|||||||
# `note: we match log level names case-insensitively
|
# `note: we match log level names case-insensitively
|
||||||
)?
|
)?
|
||||||
$
|
$
|
||||||
"
|
",
|
||||||
)
|
)
|
||||||
.unwrap());
|
.unwrap()
|
||||||
|
});
|
||||||
static SPAN_PART_RE: Lazy<Regex> =
|
static SPAN_PART_RE: Lazy<Regex> =
|
||||||
Lazy::new(|| Regex::new(r#"(?P<name>[^\]\{]+)?(?:\{(?P<fields>[^\}]*)\})?"#).unwrap());
|
Lazy::new(|| Regex::new(r"(?P<name>[^\]\{]+)?(?:\{(?P<fields>[^\}]*)\})?").unwrap());
|
||||||
static FIELD_FILTER_RE: Lazy<Regex> =
|
static FIELD_FILTER_RE: Lazy<Regex> =
|
||||||
// TODO(eliza): this doesn't _currently_ handle value matchers that include comma
|
// TODO(eliza): this doesn't _currently_ handle value matchers that include comma
|
||||||
// characters. We should fix that.
|
// characters. We should fix that.
|
||||||
Lazy::new(|| Regex::new(r#"(?x)
|
Lazy::new(|| {
|
||||||
|
Regex::new(
|
||||||
|
r"(?x)
|
||||||
(
|
(
|
||||||
# field name
|
# field name
|
||||||
[[:word:]][[[:word:]]\.]*
|
[[:word:]][[[:word:]]\.]*
|
||||||
@ -152,7 +156,10 @@ impl Directive {
|
|||||||
)
|
)
|
||||||
# trailing comma or EOS
|
# trailing comma or EOS
|
||||||
(?:,\s?|$)
|
(?:,\s?|$)
|
||||||
"#).unwrap());
|
",
|
||||||
|
)
|
||||||
|
.unwrap()
|
||||||
|
});
|
||||||
|
|
||||||
let caps = DIRECTIVE_RE.captures(from).ok_or_else(ParseError::new)?;
|
let caps = DIRECTIVE_RE.captures(from).ok_or_else(ParseError::new)?;
|
||||||
|
|
||||||
|
@ -326,8 +326,10 @@ pub struct FieldFnVisitor<'a, F> {
|
|||||||
/// Marker for [`Format`] that indicates that the compact log format should be used.
|
/// Marker for [`Format`] that indicates that the compact log format should be used.
|
||||||
///
|
///
|
||||||
/// The compact format includes fields from all currently entered spans, after
|
/// The compact format includes fields from all currently entered spans, after
|
||||||
/// the event's fields. Span names are listed in order before fields are
|
/// the event's fields. Span fields are ordered (but not grouped) by
|
||||||
/// displayed.
|
/// span, and span names are not shown. A more compact representation of the
|
||||||
|
/// event's [`Level`] is used, and additional information—such as the event's
|
||||||
|
/// target—is disabled by default.
|
||||||
///
|
///
|
||||||
/// # Example Output
|
/// # Example Output
|
||||||
///
|
///
|
||||||
@ -1086,7 +1088,12 @@ where
|
|||||||
|
|
||||||
let mut needs_space = false;
|
let mut needs_space = false;
|
||||||
if self.display_target {
|
if self.display_target {
|
||||||
write!(writer, "{}{}", dimmed.paint(meta.target()), dimmed.paint(":"))?;
|
write!(
|
||||||
|
writer,
|
||||||
|
"{}{}",
|
||||||
|
dimmed.paint(meta.target()),
|
||||||
|
dimmed.paint(":")
|
||||||
|
)?;
|
||||||
needs_space = true;
|
needs_space = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -762,7 +762,7 @@ where
|
|||||||
|
|
||||||
/// Sets the subscriber being built to use a JSON formatter.
|
/// Sets the subscriber being built to use a JSON formatter.
|
||||||
///
|
///
|
||||||
/// See [`format::Json`][super::fmt::format::Json]
|
/// See [`format::Json`] for details.
|
||||||
#[cfg(feature = "json")]
|
#[cfg(feature = "json")]
|
||||||
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
|
#[cfg_attr(docsrs, doc(cfg(feature = "json")))]
|
||||||
pub fn json(
|
pub fn json(
|
||||||
@ -783,7 +783,7 @@ where
|
|||||||
impl<T, F, W> SubscriberBuilder<format::JsonFields, format::Format<format::Json, T>, F, W> {
|
impl<T, F, W> SubscriberBuilder<format::JsonFields, format::Format<format::Json, T>, F, W> {
|
||||||
/// Sets the json subscriber being built to flatten event metadata.
|
/// Sets the json subscriber being built to flatten event metadata.
|
||||||
///
|
///
|
||||||
/// See [`format::Json`][super::fmt::format::Json]
|
/// See [`format::Json`] for details.
|
||||||
pub fn flatten_event(
|
pub fn flatten_event(
|
||||||
self,
|
self,
|
||||||
flatten_event: bool,
|
flatten_event: bool,
|
||||||
@ -797,7 +797,7 @@ impl<T, F, W> SubscriberBuilder<format::JsonFields, format::Format<format::Json,
|
|||||||
/// Sets whether or not the JSON subscriber being built will include the current span
|
/// Sets whether or not the JSON subscriber being built will include the current span
|
||||||
/// in formatted events.
|
/// in formatted events.
|
||||||
///
|
///
|
||||||
/// See [`format::Json`][super::fmt::format::Json]
|
/// See [`format::Json`] for details.
|
||||||
pub fn with_current_span(
|
pub fn with_current_span(
|
||||||
self,
|
self,
|
||||||
display_current_span: bool,
|
display_current_span: bool,
|
||||||
@ -811,7 +811,7 @@ impl<T, F, W> SubscriberBuilder<format::JsonFields, format::Format<format::Json,
|
|||||||
/// Sets whether or not the JSON subscriber being built will include a list (from
|
/// Sets whether or not the JSON subscriber being built will include a list (from
|
||||||
/// root to leaf) of all currently entered spans in formatted events.
|
/// root to leaf) of all currently entered spans in formatted events.
|
||||||
///
|
///
|
||||||
/// See [`format::Json`][super::fmt::format::Json]
|
/// See [`format::Json`] for details.
|
||||||
pub fn with_span_list(
|
pub fn with_span_list(
|
||||||
self,
|
self,
|
||||||
display_span_list: bool,
|
display_span_list: bool,
|
||||||
@ -1304,6 +1304,9 @@ mod test {
|
|||||||
Self { buf }
|
Self { buf }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// this is currently only used by the JSON formatter tests. if we need
|
||||||
|
// it elsewhere in the future, feel free to remove the `#[cfg]`
|
||||||
|
// attribute!
|
||||||
#[cfg(feature = "json")]
|
#[cfg(feature = "json")]
|
||||||
pub(crate) fn buf(&self) -> MutexGuard<'_, Vec<u8>> {
|
pub(crate) fn buf(&self) -> MutexGuard<'_, Vec<u8>> {
|
||||||
self.buf.lock().unwrap()
|
self.buf.lock().unwrap()
|
||||||
|
@ -16,7 +16,7 @@ use tracing_core::Metadata;
|
|||||||
/// This trait is already implemented for function pointers and
|
/// This trait is already implemented for function pointers and
|
||||||
/// immutably-borrowing closures that return an instance of [`io::Write`], such
|
/// immutably-borrowing closures that return an instance of [`io::Write`], such
|
||||||
/// as [`io::stdout`] and [`io::stderr`]. Additionally, it is implemented for
|
/// as [`io::stdout`] and [`io::stderr`]. Additionally, it is implemented for
|
||||||
/// [`std::sync::Mutex`][mutex] when the type inside the mutex implements
|
/// [`std::sync::Mutex`] when the type inside the mutex implements
|
||||||
/// [`io::Write`].
|
/// [`io::Write`].
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
@ -66,7 +66,7 @@ use tracing_core::Metadata;
|
|||||||
/// ```
|
/// ```
|
||||||
///
|
///
|
||||||
/// A single instance of a type implementing [`io::Write`] may be used as a
|
/// A single instance of a type implementing [`io::Write`] may be used as a
|
||||||
/// `MakeWriter` by wrapping it in a [`Mutex`][mutex]. For example, we could
|
/// `MakeWriter` by wrapping it in a [`Mutex`]. For example, we could
|
||||||
/// write to a file like so:
|
/// write to a file like so:
|
||||||
///
|
///
|
||||||
/// ```
|
/// ```
|
||||||
@ -88,7 +88,6 @@ use tracing_core::Metadata;
|
|||||||
/// [`Event`]: tracing_core::event::Event
|
/// [`Event`]: tracing_core::event::Event
|
||||||
/// [`io::stdout`]: std::io::stdout()
|
/// [`io::stdout`]: std::io::stdout()
|
||||||
/// [`io::stderr`]: std::io::stderr()
|
/// [`io::stderr`]: std::io::stderr()
|
||||||
/// [mutex]: std::sync::Mutex
|
|
||||||
/// [`MakeWriter::make_writer_for`]: MakeWriter::make_writer_for
|
/// [`MakeWriter::make_writer_for`]: MakeWriter::make_writer_for
|
||||||
/// [`Metadata`]: tracing_core::Metadata
|
/// [`Metadata`]: tracing_core::Metadata
|
||||||
/// [levels]: tracing_core::Level
|
/// [levels]: tracing_core::Level
|
||||||
@ -325,7 +324,7 @@ pub trait MakeWriterExt<'a>: MakeWriter<'a> {
|
|||||||
|
|
||||||
/// Wraps `self` with a predicate that takes a span or event's [`Metadata`]
|
/// Wraps `self` with a predicate that takes a span or event's [`Metadata`]
|
||||||
/// and returns a `bool`. The returned [`MakeWriter`]'s
|
/// and returns a `bool`. The returned [`MakeWriter`]'s
|
||||||
/// [`MakeWriter::make_writer_for`][mwf] method will check the predicate to
|
/// [`MakeWriter::make_writer_for`] method will check the predicate to
|
||||||
/// determine if a writer should be produced for a given span or event.
|
/// determine if a writer should be produced for a given span or event.
|
||||||
///
|
///
|
||||||
/// If the predicate returns `false`, the wrapped [`MakeWriter`]'s
|
/// If the predicate returns `false`, the wrapped [`MakeWriter`]'s
|
||||||
@ -544,7 +543,7 @@ pub struct BoxMakeWriter {
|
|||||||
name: &'static str,
|
name: &'static str,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A [writer] that is one of two types implementing [`io::Write`][writer].
|
/// A [writer] that is one of two types implementing [`io::Write`].
|
||||||
///
|
///
|
||||||
/// This may be used by [`MakeWriter`] implementations that may conditionally
|
/// This may be used by [`MakeWriter`] implementations that may conditionally
|
||||||
/// return one of two writers.
|
/// return one of two writers.
|
||||||
|
@ -200,11 +200,9 @@ pub trait SpanData<'a> {
|
|||||||
|
|
||||||
/// A reference to [span data] and the associated [registry].
|
/// A reference to [span data] and the associated [registry].
|
||||||
///
|
///
|
||||||
/// This type implements all the same methods as [`SpanData`][span data], and
|
/// This type implements all the same methods as [`SpanData`], and provides
|
||||||
/// provides additional methods for querying the registry based on values from
|
/// additional methods for querying the registry based on values from the span.
|
||||||
/// the span.
|
|
||||||
///
|
///
|
||||||
/// [span data]: SpanData
|
|
||||||
/// [registry]: LookupSpan
|
/// [registry]: LookupSpan
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct SpanRef<'a, R: LookupSpan<'a>> {
|
pub struct SpanRef<'a, R: LookupSpan<'a>> {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user