Skip to content

Commit

Permalink
subscriber: mark builders as must_use (#2239)
Browse files Browse the repository at this point in the history
## Motivation

Builders not marked `#[must_use]` can not be initialized sometimes,
causing silent failures.
Eg.
```rust
fn main() {
    tracing_subscriber::fmt();
    tracing::info!("hello");
}
```
won't print anything.

## Solution

Added `#[must_use]` to builder types in the tracing-subscriber crate.
  • Loading branch information
DesmondWillowbrook authored and hawkw committed Jul 28, 2022
1 parent 1f9dad1 commit af5a800
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
1 change: 1 addition & 0 deletions tracing-subscriber/src/filter/env/builder.rs
Expand Up @@ -11,6 +11,7 @@ use tracing::level_filters::STATIC_MAX_LEVEL;
///
/// [builder]: https://rust-unofficial.github.io/patterns/patterns/creational/builder.html
#[derive(Debug, Clone)]
#[must_use]
pub struct Builder {
regex: bool,
env: Option<String>,
Expand Down
13 changes: 9 additions & 4 deletions tracing-subscriber/src/fmt/mod.rs
Expand Up @@ -243,6 +243,7 @@ pub type Formatter<
/// Configures and constructs `Subscriber`s.
#[cfg_attr(docsrs, doc(cfg(all(feature = "fmt", feature = "std"))))]
#[derive(Debug)]
#[must_use]
pub struct SubscriberBuilder<
N = format::DefaultFields,
E = format::Format<format::Full>,
Expand Down Expand Up @@ -465,7 +466,8 @@ impl Default for SubscriberBuilder {
SubscriberBuilder {
filter: Subscriber::DEFAULT_MAX_LEVEL,
inner: Default::default(),
}.log_internal_errors(true)
}
.log_internal_errors(true)
}
}

Expand Down Expand Up @@ -626,12 +628,15 @@ where
/// By default, `fmt::Layer` will write any `FormatEvent`-internal errors to
/// the writer. These errors are unlikely and will only occur if there is a
/// bug in the `FormatEvent` implementation or its dependencies.
///
///
/// If writing to the writer fails, the error message is printed to stderr
/// as a fallback.
///
///
/// [`FormatEvent`]: crate::fmt::FormatEvent
pub fn log_internal_errors(self, log_internal_errors: bool) -> SubscriberBuilder<N, format::Format<L, T>, F, W> {
pub fn log_internal_errors(
self,
log_internal_errors: bool,
) -> SubscriberBuilder<N, format::Format<L, T>, F, W> {
SubscriberBuilder {
inner: self.inner.log_internal_errors(log_internal_errors),
..self
Expand Down

0 comments on commit af5a800

Please sign in to comment.