Skip to content

Commit

Permalink
Remove dep cfg-if from tracing (#2553)
Browse files Browse the repository at this point in the history
## Motivation

Same reason as rust-lang/log#536 :

`cfg_if` is only used in a single place and `tracing` is used by many
other crates, so even removing one dependency will be beneficial.

## Solution

Remove dependency `cfg-if` and replace `cfg_if::cfg_if!` with a `const
fn get_max_level_inner() -> LevelFilter` and uses `if cfg!(...)` inside.

Using if in const function is stablised in
[1.46](https://github.com/rust-lang/rust/blob/master/RELEASES.md#version-1460-2020-08-27)
so this should work fine in msrv 1.56

Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
  • Loading branch information
NobodyXu authored Apr 12, 2023
1 parent db64fc2 commit 5722b45
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 26 deletions.
1 change: 0 additions & 1 deletion tracing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ rust-version = "1.56.0"
tracing-core = { path = "../tracing-core", version = "0.2", default-features = false }
log = { version = "0.4.17", optional = true }
tracing-attributes = { path = "../tracing-attributes", version = "0.2", optional = true }
cfg-if = "1.0.0"
pin-project-lite = "0.2.9"

[dev-dependencies]
Expand Down
54 changes: 29 additions & 25 deletions tracing/src/level_filters.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,32 +63,36 @@ pub use tracing_core::{metadata::ParseLevelFilterError, LevelFilter};
/// determine if those spans or events are enabled.
///
/// [module-level documentation]: self#compile-time-filters
pub const STATIC_MAX_LEVEL: LevelFilter = MAX_LEVEL;
pub const STATIC_MAX_LEVEL: LevelFilter = get_max_level_inner();

cfg_if::cfg_if! {
if #[cfg(all(not(debug_assertions), feature = "release_max_level_off"))] {
const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
} else if #[cfg(all(not(debug_assertions), feature = "release_max_level_error"))] {
const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
} else if #[cfg(all(not(debug_assertions), feature = "release_max_level_warn"))] {
const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
} else if #[cfg(all(not(debug_assertions), feature = "release_max_level_info"))] {
const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
} else if #[cfg(all(not(debug_assertions), feature = "release_max_level_debug"))] {
const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
} else if #[cfg(all(not(debug_assertions), feature = "release_max_level_trace"))] {
const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
} else if #[cfg(feature = "max_level_off")] {
const MAX_LEVEL: LevelFilter = LevelFilter::OFF;
} else if #[cfg(feature = "max_level_error")] {
const MAX_LEVEL: LevelFilter = LevelFilter::ERROR;
} else if #[cfg(feature = "max_level_warn")] {
const MAX_LEVEL: LevelFilter = LevelFilter::WARN;
} else if #[cfg(feature = "max_level_info")] {
const MAX_LEVEL: LevelFilter = LevelFilter::INFO;
} else if #[cfg(feature = "max_level_debug")] {
const MAX_LEVEL: LevelFilter = LevelFilter::DEBUG;
const fn get_max_level_inner() -> LevelFilter {
if cfg!(not(debug_assertions)) {
if cfg!(feature = "release_max_level_off") {
LevelFilter::OFF
} else if cfg!(feature = "release_max_level_error") {
LevelFilter::ERROR
} else if cfg!(feature = "release_max_level_warn") {
LevelFilter::WARN
} else if cfg!(feature = "release_max_level_info") {
LevelFilter::INFO
} else if cfg!(feature = "release_max_level_debug") {
LevelFilter::DEBUG
} else {
// Same as branch cfg!(feature = "release_max_level_trace")
LevelFilter::TRACE
}
} else if cfg!(feature = "max_level_off") {
LevelFilter::OFF
} else if cfg!(feature = "max_level_error") {
LevelFilter::ERROR
} else if cfg!(feature = "max_level_warn") {
LevelFilter::WARN
} else if cfg!(feature = "max_level_info") {
LevelFilter::INFO
} else if cfg!(feature = "max_level_debug") {
LevelFilter::DEBUG
} else {
const MAX_LEVEL: LevelFilter = LevelFilter::TRACE;
// Same as branch cfg!(feature = "max_level_trace")
LevelFilter::TRACE
}
}

0 comments on commit 5722b45

Please sign in to comment.