[INFO] fetching crate artifact 0.2.4... [INFO] linting artifact-0.2.4 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate artifact 0.2.4 into /workspace/builds/worker-7-tc1/source [INFO] started tweaking crates.io crate artifact 0.2.4 [INFO] finished tweaking crates.io crate artifact 0.2.4 [INFO] tweaked toml for crates.io crate artifact 0.2.4 written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate artifact 0.2.4 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 9 packages to latest compatible versions [INFO] [stderr] Adding lazy_static v0.1.16 (available: v1.5.0) [INFO] [stderr] Adding log v0.3.9 (available: v0.4.29) [INFO] [stderr] Adding time v0.1.45 (available: v0.3.47) [INFO] [stderr] Adding wasi v0.10.0+wasi-snapshot-preview1 (available: v0.10.2+wasi-snapshot-preview1) [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 6b982d8bf7110a16c928d53fcf258ccb30c9bc24edbd42caa314cbb056a8754e [INFO] running `Command { std: "docker" "start" "-a" "6b982d8bf7110a16c928d53fcf258ccb30c9bc24edbd42caa314cbb056a8754e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "6b982d8bf7110a16c928d53fcf258ccb30c9bc24edbd42caa314cbb056a8754e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "6b982d8bf7110a16c928d53fcf258ccb30c9bc24edbd42caa314cbb056a8754e", kill_on_drop: false }` [INFO] [stdout] 6b982d8bf7110a16c928d53fcf258ccb30c9bc24edbd42caa314cbb056a8754e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 4e6a4fc95c0523c8aa893682f7c6d8a4f1661ff836eeb85932c3465c421e14a3 [INFO] running `Command { std: "docker" "start" "-a" "4e6a4fc95c0523c8aa893682f7c6d8a4f1661ff836eeb85932c3465c421e14a3", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Checking lazy_static v0.1.16 [INFO] [stderr] Checking time v0.1.45 [INFO] [stderr] Checking artifact v0.2.4 (/opt/rustwide/workdir) [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/internal/task.rs:46:33 [INFO] [stdout] | [INFO] [stdout] 46 | pub const INTERNAL_LOGGER_NAME:&'static str = "Artifact Internal"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `nightly` [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `log`, `no-failure-logs`, and `time` [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `lazy_static` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `lazy_static` may come from an old version of the `lazy_static` crate, try updating your dependency with `cargo update -p lazy_static` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `nightly` [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `log`, `no-failure-logs`, and `time` [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `lazy_static` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `lazy_static` may come from an old version of the `lazy_static` crate, try updating your dependency with `cargo update -p lazy_static` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | ArtifactGlobalLib{handle: handle} [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `handle` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:62:28 [INFO] [stdout] | [INFO] [stdout] 62 | SetFormatter(String, Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 62 | SetFormatter(String, Box), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:63:27 [INFO] [stdout] | [INFO] [stdout] 63 | SetDefaultFormatter(Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 63 | SetDefaultFormatter(Box), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:80:35 [INFO] [stdout] | [INFO] [stdout] 80 | formatters: HashMap>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 80 | formatters: HashMap>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | default_formatter: Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 81 | default_formatter: Box, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/format.rs:86:43 [INFO] [stdout] | [INFO] [stdout] 86 | pub fn new_basic_format_instance() -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 86 | pub fn new_basic_format_instance() -> Box { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/logger.rs:68:41 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn set_default_formatter(fmtr:Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 68 | pub fn set_default_formatter(fmtr:Box) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/logger.rs:152:43 [INFO] [stdout] | [INFO] [stdout] 152 | pub fn set_format(&self, formatter: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 152 | pub fn set_format(&self, formatter: Box) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:135:63 [INFO] [stdout] | [INFO] [stdout] 135 | fn get_formatter<'a>(&'a self, logger_name:&str) -> &'a Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 135 | fn get_formatter<'a>(&'a self, logger_name:&str) -> &'a Box { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constants have by default a `'static` lifetime [INFO] [stdout] --> src/internal/task.rs:46:33 [INFO] [stdout] | [INFO] [stdout] 46 | pub const INTERNAL_LOGGER_NAME:&'static str = "Artifact Internal"; [INFO] [stdout] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_static_lifetimes [INFO] [stdout] = note: `#[warn(clippy::redundant_static_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `nightly` [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `log`, `no-failure-logs`, and `time` [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `lazy_static` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `lazy_static` may come from an old version of the `lazy_static` crate, try updating your dependency with `cargo update -p lazy_static` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `nightly` [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `log`, `no-failure-logs`, and `time` [INFO] [stdout] = note: using a cfg inside a macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `lazy_static` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the macro `lazy_static` may come from an old version of the `lazy_static` crate, try updating your dependency with `cargo update -p lazy_static` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lib.rs:56:23 [INFO] [stdout] | [INFO] [stdout] 56 | ArtifactGlobalLib{handle: handle} [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `handle` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of deprecated constant `std::sync::ONCE_INIT`: the `Once::new()` function is now preferred [INFO] [stdout] --> src/internal/comm.rs:33:1 [INFO] [stdout] | [INFO] [stdout] 33 | / lazy_static!( [INFO] [stdout] 34 | | static ref GLOBAL_LOGGER_ACCESS: Mutex> = Mutex::new(None); [INFO] [stdout] 35 | | ); [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = note: this warning originates in the macro `lazy_static` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:62:28 [INFO] [stdout] | [INFO] [stdout] 62 | SetFormatter(String, Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 62 | SetFormatter(String, Box), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:63:27 [INFO] [stdout] | [INFO] [stdout] 63 | SetDefaultFormatter(Box), [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 63 | SetDefaultFormatter(Box), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:80:35 [INFO] [stdout] | [INFO] [stdout] 80 | formatters: HashMap>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 80 | formatters: HashMap>, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:81:26 [INFO] [stdout] | [INFO] [stdout] 81 | default_formatter: Box, [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 81 | default_formatter: Box, [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `LoggerInst` [INFO] [stdout] --> src/internal/task.rs:69:1 [INFO] [stdout] | [INFO] [stdout] 69 | / enum LoggerInstance{ [INFO] [stdout] 70 | | FileLoggerInst(Rc>, PathBuf), [INFO] [stdout] 71 | | StdoutLoggerInst, [INFO] [stdout] 72 | | StderrLoggerInst, [INFO] [stdout] 73 | | MultiLoggerInst(Vec), [INFO] [stdout] 74 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/internal/task.rs:135:55 [INFO] [stdout] | [INFO] [stdout] 135 | fn get_formatter<'a>(&'a self, logger_name:&str) -> &'a Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a MessageFormatter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/internal/task.rs:155:53 [INFO] [stdout] | [INFO] [stdout] 155 | logger.write(logger_name, msg, msg_level, &self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/internal/task.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | for &(_, ref known_logger) in self.loggers.values() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 198 - for &(_, ref known_logger) in self.loggers.values() { [INFO] [stdout] 198 + for (_, known_logger) in self.loggers.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/internal/task.rs:201:11 [INFO] [stdout] | [INFO] [stdout] 201 | / if *prev_path == *path { [INFO] [stdout] 202 | | return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] 203 | | } [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 200 ~ &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) [INFO] [stdout] 201 ~ if *prev_path == *path => { [INFO] [stdout] 202 | return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] 203 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/internal/task.rs:199:7 [INFO] [stdout] | [INFO] [stdout] 199 | / match known_logger { [INFO] [stdout] 200 | | &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) => { [INFO] [stdout] 201 | | if *prev_path == *path { [INFO] [stdout] 202 | | return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] ... | [INFO] [stdout] 205 | | _ => {} [INFO] [stdout] 206 | | } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 199 ~ if let &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) = known_logger { [INFO] [stdout] 200 + if *prev_path == *path { [INFO] [stdout] 201 + return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] 202 + } [INFO] [stdout] 203 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/internal/task.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 200 - &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) => { [INFO] [stdout] 200 + LoggerInstance::FileLoggerInst(cell, prev_path) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/internal/task.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 251 | if !self.loggers.get(&logger).is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.loggers.get(&logger).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/internal/task.rs:250:27 [INFO] [stdout] | [INFO] [stdout] 250 | let disabled_status = self.disabled.get(&logger).map(|b| *b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `self.disabled.get(&logger).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&logger).is_none()` [INFO] [stdout] --> src/internal/task.rs:251:22 [INFO] [stdout] | [INFO] [stdout] 251 | if !self.loggers.get(&logger).is_none() { [INFO] [stdout] | -------------^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!self.loggers.contains_key(&logger)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/format.rs:86:43 [INFO] [stdout] | [INFO] [stdout] 86 | pub fn new_basic_format_instance() -> Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 86 | pub fn new_basic_format_instance() -> Box { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/logger.rs:68:41 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn set_default_formatter(fmtr:Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 68 | pub fn set_default_formatter(fmtr:Box) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: initializer for `thread_local` value can be made `const` [INFO] [stdout] --> src/internal/comm.rs:37:69 [INFO] [stdout] | [INFO] [stdout] 37 | thread_local!(static LOCAL_LOGGER_CELL: RefCell> = RefCell::new(None)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace with: `const { RefCell::new(None) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_thread_local [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_thread_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/logger.rs:152:43 [INFO] [stdout] | [INFO] [stdout] 152 | pub fn set_format(&self, formatter: Box) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 152 | pub fn set_format(&self, formatter: Box) { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/internal/task.rs:135:63 [INFO] [stdout] | [INFO] [stdout] 135 | fn get_formatter<'a>(&'a self, logger_name:&str) -> &'a Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 135 | fn get_formatter<'a>(&'a self, logger_name:&str) -> &'a Box { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/internal/comm.rs:81:3 [INFO] [stdout] | [INFO] [stdout] 81 | / match *GLOBAL_LOGGER_ACCESS.lock().unwrap() { [INFO] [stdout] 82 | | Some(Artifact{ref msg_tx}) => { let _ = msg_tx.send(task::LoggerMessage::PoisonPill); } [INFO] [stdout] 83 | | None => {} [INFO] [stdout] 84 | | } [INFO] [stdout] | |___^ help: try: `if let Some(Artifact{ref msg_tx}) = *GLOBAL_LOGGER_ACCESS.lock().unwrap() { let _ = msg_tx.send(task::LoggerMessage::PoisonPill); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/internal/comm.rs:95:43 [INFO] [stdout] | [INFO] [stdout] 95 | send_logger_message_with_uninit_tls(&mut *mut_cell_internal, message) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut mut_cell_internal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `LoggerInst` [INFO] [stdout] --> src/internal/task.rs:69:1 [INFO] [stdout] | [INFO] [stdout] 69 | / enum LoggerInstance{ [INFO] [stdout] 70 | | FileLoggerInst(Rc>, PathBuf), [INFO] [stdout] 71 | | StdoutLoggerInst, [INFO] [stdout] 72 | | StderrLoggerInst, [INFO] [stdout] 73 | | MultiLoggerInst(Vec), [INFO] [stdout] 74 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stdout] --> src/internal/task.rs:135:55 [INFO] [stdout] | [INFO] [stdout] 135 | fn get_formatter<'a>(&'a self, logger_name:&str) -> &'a Box { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&'a MessageFormatter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stdout] = note: `#[warn(clippy::borrowed_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/internal/task.rs:155:53 [INFO] [stdout] | [INFO] [stdout] 155 | logger.write(logger_name, msg, msg_level, &self); [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/internal/task.rs:198:9 [INFO] [stdout] | [INFO] [stdout] 198 | for &(_, ref known_logger) in self.loggers.values() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] = note: `#[warn(clippy::needless_borrowed_reference)]` on by default [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 198 - for &(_, ref known_logger) in self.loggers.values() { [INFO] [stdout] 198 + for (_, known_logger) in self.loggers.values() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/internal/task.rs:201:11 [INFO] [stdout] | [INFO] [stdout] 201 | / if *prev_path == *path { [INFO] [stdout] 202 | | return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] 203 | | } [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 200 ~ &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) [INFO] [stdout] 201 ~ if *prev_path == *path => { [INFO] [stdout] 202 | return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] 203 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/internal/task.rs:199:7 [INFO] [stdout] | [INFO] [stdout] 199 | / match known_logger { [INFO] [stdout] 200 | | &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) => { [INFO] [stdout] 201 | | if *prev_path == *path { [INFO] [stdout] 202 | | return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] ... | [INFO] [stdout] 205 | | _ => {} [INFO] [stdout] 206 | | } [INFO] [stdout] | |_______^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 199 ~ if let &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) = known_logger { [INFO] [stdout] 200 + if *prev_path == *path { [INFO] [stdout] 201 + return Some(LoggerInstance::FileLoggerInst(cell.clone(), prev_path.clone())); [INFO] [stdout] 202 + } [INFO] [stdout] 203 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: dereferencing a tuple pattern where every element takes a reference [INFO] [stdout] --> src/internal/task.rs:200:9 [INFO] [stdout] | [INFO] [stdout] 200 | &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) => { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrowed_reference [INFO] [stdout] help: try removing the `&` and `ref` parts [INFO] [stdout] | [INFO] [stdout] 200 - &LoggerInstance::FileLoggerInst(ref cell, ref prev_path) => { [INFO] [stdout] 200 + LoggerInstance::FileLoggerInst(cell, prev_path) => { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/internal/task.rs:251:8 [INFO] [stdout] | [INFO] [stdout] 251 | if !self.loggers.get(&logger).is_none() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.loggers.get(&logger).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for copying elements [INFO] [stdout] --> src/internal/task.rs:250:27 [INFO] [stdout] | [INFO] [stdout] 250 | let disabled_status = self.disabled.get(&logger).map(|b| *b); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `copied` method: `self.disabled.get(&logger).copied()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary use of `get(&logger).is_none()` [INFO] [stdout] --> src/internal/task.rs:251:22 [INFO] [stdout] | [INFO] [stdout] 251 | if !self.loggers.get(&logger).is_none() { [INFO] [stdout] | -------------^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: replace it with: `!self.loggers.contains_key(&logger)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_get_then_check [INFO] [stdout] = note: `#[warn(clippy::unnecessary_get_then_check)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: initializer for `thread_local` value can be made `const` [INFO] [stdout] --> src/internal/comm.rs:37:69 [INFO] [stdout] | [INFO] [stdout] 37 | thread_local!(static LOCAL_LOGGER_CELL: RefCell> = RefCell::new(None)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: replace with: `const { RefCell::new(None) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#missing_const_for_thread_local [INFO] [stdout] = note: `#[warn(clippy::missing_const_for_thread_local)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/internal/comm.rs:81:3 [INFO] [stdout] | [INFO] [stdout] 81 | / match *GLOBAL_LOGGER_ACCESS.lock().unwrap() { [INFO] [stdout] 82 | | Some(Artifact{ref msg_tx}) => { let _ = msg_tx.send(task::LoggerMessage::PoisonPill); } [INFO] [stdout] 83 | | None => {} [INFO] [stdout] 84 | | } [INFO] [stdout] | |___^ help: try: `if let Some(Artifact{ref msg_tx}) = *GLOBAL_LOGGER_ACCESS.lock().unwrap() { let _ = msg_tx.send(task::LoggerMessage::PoisonPill); }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/internal/comm.rs:95:43 [INFO] [stdout] | [INFO] [stdout] 95 | send_logger_message_with_uninit_tls(&mut *mut_cell_internal, message) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut mut_cell_internal` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/bin/file_log.rs:27:48 [INFO] [stdout] | [INFO] [stdout] 27 | logger.set_format(Box::new(FooFormat) as Box); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 27 | logger.set_format(Box::new(FooFormat) as Box); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/bin/file_log.rs:30:60 [INFO] [stdout] | [INFO] [stdout] 30 | Logger::set_default_formatter(Box::new(FooFormat) as Box); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 30 | Logger::set_default_formatter(Box::new(FooFormat) as Box); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/bin/multi_logger.rs:39:54 [INFO] [stdout] | [INFO] [stdout] 39 | multi_logger.set_format(Box::new(MultiForm) as Box); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 39 | multi_logger.set_format(Box::new(MultiForm) as Box); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/bin/multi_logger.rs:39:54 [INFO] [stdout] | [INFO] [stdout] 39 | multi_logger.set_format(Box::new(MultiForm) as Box); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 39 | multi_logger.set_format(Box::new(MultiForm) as Box); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/bin/file_log.rs:27:48 [INFO] [stdout] | [INFO] [stdout] 27 | logger.set_format(Box::new(FooFormat) as Box); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 27 | logger.set_format(Box::new(FooFormat) as Box); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/bin/file_log.rs:30:60 [INFO] [stdout] | [INFO] [stdout] 30 | Logger::set_default_formatter(Box::new(FooFormat) as Box); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 30 | Logger::set_default_formatter(Box::new(FooFormat) as Box); [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.34s [INFO] running `Command { std: "docker" "inspect" "4e6a4fc95c0523c8aa893682f7c6d8a4f1661ff836eeb85932c3465c421e14a3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "4e6a4fc95c0523c8aa893682f7c6d8a4f1661ff836eeb85932c3465c421e14a3", kill_on_drop: false }` [INFO] [stdout] 4e6a4fc95c0523c8aa893682f7c6d8a4f1661ff836eeb85932c3465c421e14a3