[INFO] updating cached repository shadowmint/rust-base-logging [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/shadowmint/rust-base-logging [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/shadowmint/rust-base-logging" "work/ex/clippy-test-run/sources/stable/gh/shadowmint/rust-base-logging"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/shadowmint/rust-base-logging'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/shadowmint/rust-base-logging" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/shadowmint/rust-base-logging"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/shadowmint/rust-base-logging'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b62b72981b4b3e7b58e47fadd8131354a63cbc01 [INFO] sha for GitHub repo shadowmint/rust-base-logging: b62b72981b4b3e7b58e47fadd8131354a63cbc01 [INFO] validating manifest of shadowmint/rust-base-logging on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of shadowmint/rust-base-logging on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing shadowmint/rust-base-logging [INFO] finished frobbing shadowmint/rust-base-logging [INFO] frobbed toml for shadowmint/rust-base-logging written to work/ex/clippy-test-run/sources/stable/gh/shadowmint/rust-base-logging/Cargo.toml [INFO] started frobbing shadowmint/rust-base-logging [INFO] finished frobbing shadowmint/rust-base-logging [INFO] frobbed toml for shadowmint/rust-base-logging written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/shadowmint/rust-base-logging/Cargo.toml [INFO] crate shadowmint/rust-base-logging has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting shadowmint/rust-base-logging against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/shadowmint/rust-base-logging:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] a7d7ad6c0d565746d871339f495ba5589c38a3bd2b35180ed51f63e7de393b2b [INFO] running `"docker" "start" "-a" "a7d7ad6c0d565746d871339f495ba5589c38a3bd2b35180ed51f63e7de393b2b"` [INFO] [stderr] Checking num-traits v0.2.0 [INFO] [stderr] Checking num-traits v0.1.43 [INFO] [stderr] Checking serde_json v1.0.9 [INFO] [stderr] Checking base-logging v0.3.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / return Logger { [INFO] [stderr] 19 | | loggers: Vec::new(), [INFO] [stderr] 20 | | format: Box::new(DefaultFormatter::new()), [INFO] [stderr] 21 | | level: Level::Warn, [INFO] [stderr] 22 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 18 | Logger { [INFO] [stderr] 19 | loggers: Vec::new(), [INFO] [stderr] 20 | format: Box::new(DefaultFormatter::new()), [INFO] [stderr] 21 | level: Level::Warn, [INFO] [stderr] 22 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | / return LoggerRef { [INFO] [stderr] 12 | | logger: Arc::new(Mutex::new(Some(Logger::new()))) [INFO] [stderr] 13 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 11 | LoggerRef { [INFO] [stderr] 12 | logger: Arc::new(Mutex::new(Some(Logger::new()))) [INFO] [stderr] 13 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | / return LoggerRef { [INFO] [stderr] 59 | | logger: self.logger.clone() [INFO] [stderr] 60 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 58 | LoggerRef { [INFO] [stderr] 59 | logger: self.logger.clone() [INFO] [stderr] 60 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/infrastructure/stdout.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | return (*STDERR).lock(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(*STDERR).lock()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/infrastructure/stdout.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return (*STDOUT).lock(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(*STDOUT).lock()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/default_formatter.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | return DefaultFormatter {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `DefaultFormatter {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/default_formatter.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | return rtn; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `rtn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/json_formatter.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | return JsonFormatter {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `JsonFormatter {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/json_formatter.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | / return match serde_json::to_string(&record) { [INFO] [stderr] 52 | | Ok(r) => r, [INFO] [stderr] 53 | | Err(_) => String::from("Failed to serialize json record") [INFO] [stderr] 54 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 51 | match serde_json::to_string(&record) { [INFO] [stderr] 52 | Ok(r) => r, [INFO] [stderr] 53 | Err(_) => String::from("Failed to serialize json record") [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/hashmap.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | return Some(props); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(props)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/hashmap.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | return Some(props); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(props)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/record.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | / return Record { [INFO] [stderr] 12 | | message: String::from(message), [INFO] [stderr] 13 | | properties: HashMap::<&'static str, String>::new(), [INFO] [stderr] 14 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 11 | Record { [INFO] [stderr] 12 | message: String::from(message), [INFO] [stderr] 13 | properties: HashMap::<&'static str, String>::new(), [INFO] [stderr] 14 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/record.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/record.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return Some(props); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(props)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/mock.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / return MockLogger { [INFO] [stderr] 13 | | enable_debug: false [INFO] [stderr] 14 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 12 | MockLogger { [INFO] [stderr] 13 | enable_debug: false [INFO] [stderr] 14 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/mock.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/file.rs:8:9 [INFO] [stderr] | [INFO] [stderr] 8 | return FileLogger {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `FileLogger {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/console.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | return ConsoleLogger {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ConsoleLogger {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / return Logger { [INFO] [stderr] 19 | | loggers: Vec::new(), [INFO] [stderr] 20 | | format: Box::new(DefaultFormatter::new()), [INFO] [stderr] 21 | | level: Level::Warn, [INFO] [stderr] 22 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 18 | Logger { [INFO] [stderr] 19 | loggers: Vec::new(), [INFO] [stderr] 20 | format: Box::new(DefaultFormatter::new()), [INFO] [stderr] 21 | level: Level::Warn, [INFO] [stderr] 22 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger.rs:76:9 [INFO] [stderr] | [INFO] [stderr] 76 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | / return LoggerRef { [INFO] [stderr] 12 | | logger: Arc::new(Mutex::new(Some(Logger::new()))) [INFO] [stderr] 13 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 11 | LoggerRef { [INFO] [stderr] 12 | logger: Arc::new(Mutex::new(Some(Logger::new()))) [INFO] [stderr] 13 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/core/logger_ref.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | / return LoggerRef { [INFO] [stderr] 59 | | logger: self.logger.clone() [INFO] [stderr] 60 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 58 | LoggerRef { [INFO] [stderr] 59 | logger: self.logger.clone() [INFO] [stderr] 60 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/infrastructure/stdout.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | return (*STDERR).lock(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(*STDERR).lock()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/infrastructure/stdout.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | return (*STDOUT).lock(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `(*STDOUT).lock()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/default_formatter.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | return DefaultFormatter {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `DefaultFormatter {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/default_formatter.rs:30:9 [INFO] [stderr] | [INFO] [stderr] 30 | return rtn; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `rtn` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/json_formatter.rs:21:9 [INFO] [stderr] | [INFO] [stderr] 21 | return JsonFormatter {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `JsonFormatter {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/formatters/json_formatter.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | / return match serde_json::to_string(&record) { [INFO] [stderr] 52 | | Ok(r) => r, [INFO] [stderr] 53 | | Err(_) => String::from("Failed to serialize json record") [INFO] [stderr] 54 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 51 | match serde_json::to_string(&record) { [INFO] [stderr] 52 | Ok(r) => r, [INFO] [stderr] 53 | Err(_) => String::from("Failed to serialize json record") [INFO] [stderr] 54 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/hashmap.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | return Some(props); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(props)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/hashmap.rs:35:9 [INFO] [stderr] | [INFO] [stderr] 35 | return Some(props); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(props)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/record.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | / return Record { [INFO] [stderr] 12 | | message: String::from(message), [INFO] [stderr] 13 | | properties: HashMap::<&'static str, String>::new(), [INFO] [stderr] 14 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 11 | Record { [INFO] [stderr] 12 | message: String::from(message), [INFO] [stderr] 13 | properties: HashMap::<&'static str, String>::new(), [INFO] [stderr] 14 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/record.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggables/record.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | return Some(props); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(props)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/mock.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | / return MockLogger { [INFO] [stderr] 13 | | enable_debug: false [INFO] [stderr] 14 | | }; [INFO] [stderr] | |__________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 12 | MockLogger { [INFO] [stderr] 13 | enable_debug: false [INFO] [stderr] 14 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/mock.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | return self; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/file.rs:8:9 [INFO] [stderr] | [INFO] [stderr] 8 | return FileLogger {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `FileLogger {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/loggers/console.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | return ConsoleLogger {}; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ConsoleLogger {}` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] error: useless lint attribute [INFO] [stderr] --> src/lib.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[allow(dead_code)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if you just forgot a `!`, use: `#![allow(dead_code)]` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::useless_attribute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_attribute [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `core::logger::Logger` [INFO] [stderr] --> src/core/logger.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Logger { [INFO] [stderr] 18 | | return Logger { [INFO] [stderr] 19 | | loggers: Vec::new(), [INFO] [stderr] 20 | | format: Box::new(DefaultFormatter::new()), [INFO] [stderr] 21 | | level: Level::Warn, [INFO] [stderr] 22 | | }; [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 16 | impl Default for core::logger::Logger { [INFO] [stderr] 17 | fn default() -> Self { [INFO] [stderr] 18 | Self::new() [INFO] [stderr] 19 | } [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/core/logger.rs:51:12 [INFO] [stderr] | [INFO] [stderr] 51 | if raw.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `raw.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/core/logger.rs:62:20 [INFO] [stderr] | [INFO] [stderr] 62 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: you are deriving `Hash` but have implemented `PartialEq` explicitly [INFO] [stderr] --> src/core/level.rs:5:27 [INFO] [stderr] | [INFO] [stderr] 5 | #[derive(Copy, Eq, Debug, Hash)] [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/core/level.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21| / impl PartialEq for Level { [INFO] [stderr] 22| | #[inline] [INFO] [stderr] 23| | fn eq(&self, other: &Level) -> bool { [INFO] [stderr] 24| | *self as usize == *other as usize [INFO] [stderr] 25| | } [INFO] [stderr] 26| | } [INFO] [stderr] | |_^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `core::logger_ref::LoggerRef` [INFO] [stderr] --> src/core/logger_ref.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new() -> LoggerRef { [INFO] [stderr] 11 | | return LoggerRef { [INFO] [stderr] 12 | | logger: Arc::new(Mutex::new(Some(Logger::new()))) [INFO] [stderr] 13 | | }; [INFO] [stderr] 14 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / match self.logger.lock() { [INFO] [stderr] 18 | | Ok(mut logger_ref) => { [INFO] [stderr] 19 | | *logger_ref = Some(logger_ref.take().unwrap().with(logger)); [INFO] [stderr] 20 | | } [INFO] [stderr] 21 | | Err(_) => {} [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 17 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 18 | *logger_ref = Some(logger_ref.take().unwrap().with(logger)); [INFO] [stderr] 19 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self.logger.lock() { [INFO] [stderr] 28 | | Ok(mut logger_ref) => { [INFO] [stderr] 29 | | *logger_ref = Some(logger_ref.take().unwrap().with_level(min_level)); [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | Err(_) => {} [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 28 | *logger_ref = Some(logger_ref.take().unwrap().with_level(min_level)); [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self.logger.lock() { [INFO] [stderr] 38 | | Ok(mut logger_ref) => { [INFO] [stderr] 39 | | *logger_ref = Some(logger_ref.take().unwrap().with_format(formatter)); [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | Err(_) => {} [INFO] [stderr] 42 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 37 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 38 | *logger_ref = Some(logger_ref.take().unwrap().with_format(formatter)); [INFO] [stderr] 39 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / match self.logger.lock() { [INFO] [stderr] 48 | | Ok(mut logger_ref) => { [INFO] [stderr] 49 | | logger_ref.as_mut().unwrap().log(level, message); [INFO] [stderr] 50 | | } [INFO] [stderr] 51 | | Err(_) => {} [INFO] [stderr] 52 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 47 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 48 | logger_ref.as_mut().unwrap().log(level, message); [INFO] [stderr] 49 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/infrastructure/stdout.rs:45:27 [INFO] [stderr] | [INFO] [stderr] 45 | let _ = guard.write(&['\n' as u8]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\n' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `formatters::default_formatter::DefaultFormatter` [INFO] [stderr] --> src/formatters/default_formatter.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new() -> DefaultFormatter { [INFO] [stderr] 11 | | return DefaultFormatter {}; [INFO] [stderr] 12 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/formatters/default_formatter.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / match message { [INFO] [stderr] 17 | | Some(msg) => { [INFO] [stderr] 18 | | rtn.push_str(msg); [INFO] [stderr] 19 | | } [INFO] [stderr] 20 | | None => {} [INFO] [stderr] 21 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 16 | if let Some(msg) = message { [INFO] [stderr] 17 | rtn.push_str(msg); [INFO] [stderr] 18 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/formatters/default_formatter.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | / match properties { [INFO] [stderr] 23 | | Some(props) => { [INFO] [stderr] 24 | | for (key, value) in props.iter() { [INFO] [stderr] 25 | | rtn.push_str(&format!(" {}:{}", key, value)); [INFO] [stderr] ... | [INFO] [stderr] 28 | | None => {} [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | if let Some(props) = properties { [INFO] [stderr] 23 | for (key, value) in props.iter() { [INFO] [stderr] 24 | rtn.push_str(&format!(" {}:{}", key, value)); [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `formatters::json_formatter::JsonFormatter` [INFO] [stderr] --> src/formatters/json_formatter.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> JsonFormatter { [INFO] [stderr] 21 | | return JsonFormatter {}; [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 17 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/formatters/json_formatter.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / match properties { [INFO] [stderr] 43 | | Some(p) => { [INFO] [stderr] 44 | | for (key, value) in p.iter() { [INFO] [stderr] 45 | | record.properties.insert(String::from(*key), String::from(*value)); [INFO] [stderr] ... | [INFO] [stderr] 48 | | None => {} [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | if let Some(p) = properties { [INFO] [stderr] 43 | for (key, value) in p.iter() { [INFO] [stderr] 44 | record.properties.insert(String::from(*key), String::from(*value)); [INFO] [stderr] 45 | } [INFO] [stderr] 46 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/loggables/hashmap.rs:4:19 [INFO] [stderr] | [INFO] [stderr] 4 | impl Loggable for HashMap<&'static str, &'static str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 4 | impl Loggable for HashMap<&'static str, &'static str, S> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/loggables/hashmap.rs:13:19 [INFO] [stderr] | [INFO] [stderr] 13 | impl Loggable for HashMap<&'static str, String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 13 | impl Loggable for HashMap<&'static str, String, S> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/loggables/hashmap.rs:26:19 [INFO] [stderr] | [INFO] [stderr] 26 | impl Loggable for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 26 | impl Loggable for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `loggers::mock::MockLogger` [INFO] [stderr] --> src/loggers/mock.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> MockLogger { [INFO] [stderr] 12 | | return MockLogger { [INFO] [stderr] 13 | | enable_debug: false [INFO] [stderr] 14 | | }; [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loggers/mock.rs:27:20 [INFO] [stderr] | [INFO] [stderr] 27 | debug(&format!("{}", message)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `message.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `loggers::file::FileLogger` [INFO] [stderr] --> src/loggers/file.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / pub fn new() -> FileLogger { [INFO] [stderr] 8 | | return FileLogger {}; [INFO] [stderr] 9 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 3 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `loggers::console::ConsoleLogger` [INFO] [stderr] --> src/loggers/console.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | / pub fn new() -> ConsoleLogger { [INFO] [stderr] 9 | | return ConsoleLogger {}; [INFO] [stderr] 10 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/loggers/console.rs:14:8 [INFO] [stderr] | [INFO] [stderr] 14 | if message.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `message.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/loggers/console.rs:19:27 [INFO] [stderr] | [INFO] [stderr] 19 | let _ = guard.write(&['\n' as u8]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\n' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loggers/console.rs:24:16 [INFO] [stderr] | [INFO] [stderr] 24 | write(&format!("{}", message)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `message.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `base-logging`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: useless lint attribute [INFO] [stderr] --> src/lib.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | #[allow(dead_code)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: if you just forgot a `!`, use: `#![allow(dead_code)]` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::useless_attribute)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_attribute [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `core::logger::Logger` [INFO] [stderr] --> src/core/logger.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / pub fn new() -> Logger { [INFO] [stderr] 18 | | return Logger { [INFO] [stderr] 19 | | loggers: Vec::new(), [INFO] [stderr] 20 | | format: Box::new(DefaultFormatter::new()), [INFO] [stderr] 21 | | level: Level::Warn, [INFO] [stderr] 22 | | }; [INFO] [stderr] 23 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 16 | impl Default for core::logger::Logger { [INFO] [stderr] 17 | fn default() -> Self { [INFO] [stderr] 18 | Self::new() [INFO] [stderr] 19 | } [INFO] [stderr] 20 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/core/logger.rs:51:12 [INFO] [stderr] | [INFO] [stderr] 51 | if raw.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `raw.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/core/logger.rs:62:20 [INFO] [stderr] | [INFO] [stderr] 62 | if s.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: you are deriving `Hash` but have implemented `PartialEq` explicitly [INFO] [stderr] --> src/core/level.rs:5:27 [INFO] [stderr] | [INFO] [stderr] 5 | #[derive(Copy, Eq, Debug, Hash)] [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/core/level.rs:21:1 [INFO] [stderr] | [INFO] [stderr] 21| / impl PartialEq for Level { [INFO] [stderr] 22| | #[inline] [INFO] [stderr] 23| | fn eq(&self, other: &Level) -> bool { [INFO] [stderr] 24| | *self as usize == *other as usize [INFO] [stderr] 25| | } [INFO] [stderr] 26| | } [INFO] [stderr] | |_^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `core::logger_ref::LoggerRef` [INFO] [stderr] --> src/core/logger_ref.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new() -> LoggerRef { [INFO] [stderr] 11 | | return LoggerRef { [INFO] [stderr] 12 | | logger: Arc::new(Mutex::new(Some(Logger::new()))) [INFO] [stderr] 13 | | }; [INFO] [stderr] 14 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / match self.logger.lock() { [INFO] [stderr] 18 | | Ok(mut logger_ref) => { [INFO] [stderr] 19 | | *logger_ref = Some(logger_ref.take().unwrap().with(logger)); [INFO] [stderr] 20 | | } [INFO] [stderr] 21 | | Err(_) => {} [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 17 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 18 | *logger_ref = Some(logger_ref.take().unwrap().with(logger)); [INFO] [stderr] 19 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | / match self.logger.lock() { [INFO] [stderr] 28 | | Ok(mut logger_ref) => { [INFO] [stderr] 29 | | *logger_ref = Some(logger_ref.take().unwrap().with_level(min_level)); [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | Err(_) => {} [INFO] [stderr] 32 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 27 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 28 | *logger_ref = Some(logger_ref.take().unwrap().with_level(min_level)); [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match self.logger.lock() { [INFO] [stderr] 38 | | Ok(mut logger_ref) => { [INFO] [stderr] 39 | | *logger_ref = Some(logger_ref.take().unwrap().with_format(formatter)); [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | Err(_) => {} [INFO] [stderr] 42 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 37 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 38 | *logger_ref = Some(logger_ref.take().unwrap().with_format(formatter)); [INFO] [stderr] 39 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core/logger_ref.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / match self.logger.lock() { [INFO] [stderr] 48 | | Ok(mut logger_ref) => { [INFO] [stderr] 49 | | logger_ref.as_mut().unwrap().log(level, message); [INFO] [stderr] 50 | | } [INFO] [stderr] 51 | | Err(_) => {} [INFO] [stderr] 52 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 47 | if let Ok(mut logger_ref) = self.logger.lock() { [INFO] [stderr] 48 | logger_ref.as_mut().unwrap().log(level, message); [INFO] [stderr] 49 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/infrastructure/stdout.rs:45:27 [INFO] [stderr] | [INFO] [stderr] 45 | let _ = guard.write(&['\n' as u8]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\n' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `formatters::default_formatter::DefaultFormatter` [INFO] [stderr] --> src/formatters/default_formatter.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new() -> DefaultFormatter { [INFO] [stderr] 11 | | return DefaultFormatter {}; [INFO] [stderr] 12 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/formatters/default_formatter.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / match message { [INFO] [stderr] 17 | | Some(msg) => { [INFO] [stderr] 18 | | rtn.push_str(msg); [INFO] [stderr] 19 | | } [INFO] [stderr] 20 | | None => {} [INFO] [stderr] 21 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 16 | if let Some(msg) = message { [INFO] [stderr] 17 | rtn.push_str(msg); [INFO] [stderr] 18 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/formatters/default_formatter.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | / match properties { [INFO] [stderr] 23 | | Some(props) => { [INFO] [stderr] 24 | | for (key, value) in props.iter() { [INFO] [stderr] 25 | | rtn.push_str(&format!(" {}:{}", key, value)); [INFO] [stderr] ... | [INFO] [stderr] 28 | | None => {} [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | if let Some(props) = properties { [INFO] [stderr] 23 | for (key, value) in props.iter() { [INFO] [stderr] 24 | rtn.push_str(&format!(" {}:{}", key, value)); [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `formatters::json_formatter::JsonFormatter` [INFO] [stderr] --> src/formatters/json_formatter.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | / pub fn new() -> JsonFormatter { [INFO] [stderr] 21 | | return JsonFormatter {}; [INFO] [stderr] 22 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 17 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/formatters/json_formatter.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 42 | / match properties { [INFO] [stderr] 43 | | Some(p) => { [INFO] [stderr] 44 | | for (key, value) in p.iter() { [INFO] [stderr] 45 | | record.properties.insert(String::from(*key), String::from(*value)); [INFO] [stderr] ... | [INFO] [stderr] 48 | | None => {} [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | if let Some(p) = properties { [INFO] [stderr] 43 | for (key, value) in p.iter() { [INFO] [stderr] 44 | record.properties.insert(String::from(*key), String::from(*value)); [INFO] [stderr] 45 | } [INFO] [stderr] 46 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/loggables/hashmap.rs:4:19 [INFO] [stderr] | [INFO] [stderr] 4 | impl Loggable for HashMap<&'static str, &'static str> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 4 | impl Loggable for HashMap<&'static str, &'static str, S> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/loggables/hashmap.rs:13:19 [INFO] [stderr] | [INFO] [stderr] 13 | impl Loggable for HashMap<&'static str, String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 13 | impl Loggable for HashMap<&'static str, String, S> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: impl for `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/loggables/hashmap.rs:26:19 [INFO] [stderr] | [INFO] [stderr] 26 | impl Loggable for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 26 | impl Loggable for HashMap { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `loggers::mock::MockLogger` [INFO] [stderr] --> src/loggers/mock.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | / pub fn new() -> MockLogger { [INFO] [stderr] 12 | | return MockLogger { [INFO] [stderr] 13 | | enable_debug: false [INFO] [stderr] 14 | | }; [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 6 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loggers/mock.rs:27:20 [INFO] [stderr] | [INFO] [stderr] 27 | debug(&format!("{}", message)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `message.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `loggers::file::FileLogger` [INFO] [stderr] --> src/loggers/file.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / pub fn new() -> FileLogger { [INFO] [stderr] 8 | | return FileLogger {}; [INFO] [stderr] 9 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 3 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `loggers::console::ConsoleLogger` [INFO] [stderr] --> src/loggers/console.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | / pub fn new() -> ConsoleLogger { [INFO] [stderr] 9 | | return ConsoleLogger {}; [INFO] [stderr] 10 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/loggers/console.rs:14:8 [INFO] [stderr] | [INFO] [stderr] 14 | if message.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `message.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/loggers/console.rs:19:27 [INFO] [stderr] | [INFO] [stderr] 19 | let _ = guard.write(&['\n' as u8]); [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'\n' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/loggers/console.rs:24:16 [INFO] [stderr] | [INFO] [stderr] 24 | write(&format!("{}", message)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `message.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `base-logging`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "a7d7ad6c0d565746d871339f495ba5589c38a3bd2b35180ed51f63e7de393b2b"` [INFO] running `"docker" "rm" "-f" "a7d7ad6c0d565746d871339f495ba5589c38a3bd2b35180ed51f63e7de393b2b"` [INFO] [stdout] a7d7ad6c0d565746d871339f495ba5589c38a3bd2b35180ed51f63e7de393b2b