Skip to content

Commit

Permalink
Remove dep cfg-if from tracing (#2553)
Browse files Browse the repository at this point in the history
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.

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 <[email protected]>
; Conflicts:
;	tracing/Cargo.toml
;	tracing/src/level_filters.rs
  • Loading branch information
NobodyXu authored and hawkw committed Apr 21, 2023
1 parent 334bee7 commit b5f6317
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 27 deletions.
1 change: 0 additions & 1 deletion tracing/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ rust-version = "1.56.0"
tracing-core = { path = "../tracing-core", version = "0.1.30", default-features = false }
log = { version = "0.4.17", optional = true }
tracing-attributes = { path = "../tracing-attributes", version = "0.1.23", optional = true }
cfg-if = "1.0.0"
pin-project-lite = "0.2.9"

[dev-dependencies]
Expand Down
56 changes: 30 additions & 26 deletions tracing/src/level_filters.rs
Original file line number Diff line number Diff line change
Expand Up @@ -62,33 +62,37 @@ pub use tracing_core::{metadata::ParseLevelFilterError, LevelFilter};
/// `Span` constructors should compare the level against this value to
/// determine if those spans or events are enabled.
///
/// [module-level documentation]: super#compile-time-filters
pub const STATIC_MAX_LEVEL: LevelFilter = MAX_LEVEL;
/// [module-level documentation]: self#compile-time-filters
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 b5f6317

Please sign in to comment.