[INFO] cloning repository https://github.com/elycruz/rust-book [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/elycruz/rust-book" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Felycruz%2Frust-book", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Felycruz%2Frust-book'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 437000fc30c4b3e08e8c37934a38856fc5960efd [INFO] linting elycruz/rust-book against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Felycruz%2Frust-book" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/elycruz/rust-book [INFO] finished tweaking git repo https://github.com/elycruz/rust-book [INFO] tweaked toml for git repo https://github.com/elycruz/rust-book written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/elycruz/rust-book 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] crate git repo https://github.com/elycruz/rust-book already has a lockfile, it will not be regenerated [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] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded memchr v2.2.1 [INFO] [stderr] Downloaded thread_local v0.3.6 [INFO] [stderr] Downloaded getrandom v0.1.11 [INFO] [stderr] Downloaded cfg-if v0.1.9 [INFO] [stderr] Downloaded wasi v0.5.0 [INFO] [stderr] Downloaded atty v0.2.13 [INFO] [stderr] Downloaded ppv-lite86 v0.2.5 [INFO] [stderr] Downloaded bitflags v1.1.0 [INFO] [stderr] Downloaded unicode-width v0.1.6 [INFO] [stderr] Downloaded c2-chacha v0.2.2 [INFO] [stderr] Downloaded rand_chacha v0.2.1 [INFO] [stderr] Downloaded rand v0.7.0 [INFO] [stderr] Downloaded aho-corasick v0.7.6 [INFO] [stderr] Downloaded regex v1.2.1 [INFO] [stderr] Downloaded regex-syntax v0.6.11 [INFO] [stderr] Downloaded clap v2.33.0 [INFO] [stderr] Downloaded libc v0.2.62 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 50313f8690595c62560949ea6d94fb45c1827046274bb4fc71f74cb7631ddb0f [INFO] running `Command { std: "docker" "start" "-a" "50313f8690595c62560949ea6d94fb45c1827046274bb4fc71f74cb7631ddb0f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "50313f8690595c62560949ea6d94fb45c1827046274bb4fc71f74cb7631ddb0f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "50313f8690595c62560949ea6d94fb45c1827046274bb4fc71f74cb7631ddb0f", kill_on_drop: false }` [INFO] [stdout] 50313f8690595c62560949ea6d94fb45c1827046274bb4fc71f74cb7631ddb0f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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] 2ba1adafae8677e0bb5047eb54270ec54bc7afe5bb19270befe4180dc04520aa [INFO] running `Command { std: "docker" "start" "-a" "2ba1adafae8677e0bb5047eb54270ec54bc7afe5bb19270befe4180dc04520aa", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.62 [INFO] [stderr] Compiling getrandom v0.1.11 [INFO] [stderr] Checking cfg-if v0.1.9 [INFO] [stderr] Compiling memchr v2.2.1 [INFO] [stderr] Compiling bitflags v1.1.0 [INFO] [stderr] Checking ppv-lite86 v0.2.5 [INFO] [stderr] Checking unicode-width v0.1.6 [INFO] [stderr] Checking thread_local v0.3.6 [INFO] [stderr] Checking regex-syntax v0.6.11 [INFO] [stderr] Checking vec_map v0.8.1 [INFO] [stderr] Checking strsim v0.8.0 [INFO] [stderr] Checking ansi_term v0.11.0 [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking c2-chacha v0.2.2 [INFO] [stderr] Checking atty v0.2.13 [INFO] [stderr] Checking clap v2.33.0 [INFO] [stderr] Checking aho-corasick v0.7.6 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking rand_chacha v0.2.1 [INFO] [stderr] Checking rand v0.7.0 [INFO] [stderr] Checking regex v1.2.1 [INFO] [stderr] Checking rust-book v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: function `mean` is never used [INFO] [stdout] --> chp8/mean_and_mode.rs:3:4 [INFO] [stdout] | [INFO] [stdout] 3 | fn mean(v: &Vec) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `mode` is never used [INFO] [stdout] --> chp8/mean_and_mode.rs:11:4 [INFO] [stdout] | [INFO] [stdout] 11 | fn mode(vs: &Vec) -> f64 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/mean_and_mode.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return sum / (v.len() as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 8 - return sum / (v.len() as f64); [INFO] [stdout] 8 + sum / (v.len() as f64) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> chp3/twelve_days_of_christmas.rs:58:45 [INFO] [stdout] | [INFO] [stdout] 58 | println!("{:}", ucase_first(*line)); [INFO] [stdout] | ^^^^^ help: try: `line` [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: panic message is not a string literal [INFO] [stdout] --> chp8/mean_and_mode.rs:45:26 [INFO] [stdout] | [INFO] [stdout] 45 | Err(e) => panic!(e) [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 45 | Err(e) => panic!("{}", e) [INFO] [stdout] | +++++ [INFO] [stdout] help: or use std::panic::panic_any instead [INFO] [stdout] | [INFO] [stdout] 45 - Err(e) => panic!(e) [INFO] [stdout] 45 + Err(e) => std::panic::panic_any(e) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> chp3/fib_lib.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * @reference https://www.goldennumber.net/math/ [INFO] [stdout] 3 | | */ [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | static FIVE_O: f64 = 5.0; [INFO] [stdout] | ------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> chp3/fib_lib.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * @reference https://www.goldennumber.net/math/ [INFO] [stdout] 3 | | */ [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | static FIVE_O: f64 = 5.0; [INFO] [stdout] | ------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> chp8/piglatin.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * Convert strings to pig latin. [INFO] [stdout] 3 | | * The first consonant of each word is moved to the end of the word and “ay” is added, so “first” becomes “irst-fay”. [INFO] [stdout] 4 | | * Words that start with a vowel have “hay” added to the end instead (“apple” becomes “apple-hay”). [INFO] [stdout] 5 | | * Keep in mind the details about UTF-8 encoding! [INFO] [stdout] 6 | | */ [INFO] [stdout] 7 | | [INFO] [stdout] | |_^ [INFO] [stdout] 8 | use std::env; [INFO] [stdout] | - the comment documents this `use` import [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the crate use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `FIVE_O` is never used [INFO] [stdout] --> chp3/fib_lib.rs:5:8 [INFO] [stdout] | [INFO] [stdout] 5 | static FIVE_O: f64 = 5.0; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: static `O_FIVE` is never used [INFO] [stdout] --> chp3/fib_lib.rs:7:8 [INFO] [stdout] | [INFO] [stdout] 7 | static O_FIVE: f64 = 0.5; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `get_phi` is never used [INFO] [stdout] --> chp3/fib_lib.rs:12:4 [INFO] [stdout] | [INFO] [stdout] 12 | fn get_phi() -> f64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `nth_fib` is never used [INFO] [stdout] --> chp3/fib_lib.rs:31:8 [INFO] [stdout] | [INFO] [stdout] 31 | pub fn nth_fib(nth: i32) -> i64 { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | a = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `a += b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | b = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `b += a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp3/fib_lib.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return 0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 37 - return 0; [INFO] [stdout] 37 + 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> chp2/guessing_game.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | use rand; [INFO] [stdout] | ^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/main.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 42 - return out; [INFO] [stdout] 42 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/main.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | return Some(last); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 55 - return Some(last); [INFO] [stdout] 55 + Some(last) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chp8/main.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 45 | fn maximum(xs: &Vec) -> Option<&T> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn maximum(xs: &Vec) -> Option<&T> { [INFO] [stdout] 45 + fn maximum(xs: &[T]) -> Option<&T> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/main.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | if xs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `xs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> chp3/twelve_days_of_christmas.rs:58:45 [INFO] [stdout] | [INFO] [stdout] 58 | println!("{:}", ucase_first(*line)); [INFO] [stdout] | ^^^^^ help: try: `line` [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: name `ADD` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ADD, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Add` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `LIST` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | LIST, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `List` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `HELP` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | HELP, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Help` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `COMMANDS` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | COMMANDS, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Commands` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EXIT` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | EXIT, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Exit` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `UNKNOWN` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | UNKNOWN [INFO] [stdout] | ^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Unknown` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | a = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `a += b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | b = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `b += a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp3/fib_lib.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return 0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 37 - return 0; [INFO] [stdout] 37 + 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp3/fib_lib.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | for n in test_cases.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, n) in test_cases.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp3/fib_lib.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | for n2 in result.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, n2) in result.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/piglatin.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | return s.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 - return s.to_string(); [INFO] [stdout] 57 + s.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/piglatin.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | if s.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/piglatin.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 72 - return out; [INFO] [stdout] 72 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp8/piglatin.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | for word in words { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using: `for (i, word) in words.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/piglatin.rs:87:5 [INFO] [stdout] | [INFO] [stdout] 87 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 87 - return out; [INFO] [stdout] 87 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp8/piglatin.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | for line in lines { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using: `for (i, line) in lines.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> chp8/piglatin.rs:115:36 [INFO] [stdout] | [INFO] [stdout] 115 | for (control, expected) in vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 116 | | ("hello", "ellohay"), [INFO] [stdout] 117 | | ("abc", "abchay"), [INFO] [stdout] 118 | | ("road", "oadray"), [INFO] [stdout] 119 | | ("first", "irstfay") [INFO] [stdout] 120 | | ] { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 115 ~ for (control, expected) in [("hello", "ellohay"), [INFO] [stdout] 116 + ("abc", "abchay"), [INFO] [stdout] 117 + ("road", "oadray"), [INFO] [stdout] 118 ~ ("first", "irstfay")] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> chp8/piglatin.rs:129:36 [INFO] [stdout] | [INFO] [stdout] 129 | for (control, expected) in vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 130 | | ("hello", "ellohay"), [INFO] [stdout] 131 | | ("hello world", "ellohay orldway"), [INFO] [stdout] 132 | | ("abc today", "abchay odaytay"), [INFO] [stdout] 133 | | ("all your base are belong to us", "allhay ouryay asebay arehay elongbay otay ushay"), [INFO] [stdout] 134 | | ] { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 129 ~ for (control, expected) in [("hello", "ellohay"), [INFO] [stdout] 130 + ("hello world", "ellohay orldway"), [INFO] [stdout] 131 + ("abc today", "abchay odaytay"), [INFO] [stdout] 132 ~ ("all your base are belong to us", "allhay ouryay asebay arehay elongbay otay ushay")] { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> chp8/piglatin.rs:143:36 [INFO] [stdout] | [INFO] [stdout] 143 | for (control, expected) in vec![ [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 144 | | ("hello", "ellohay"), [INFO] [stdout] 145 | | ("hello world", "ellohay orldway"), [INFO] [stdout] 146 | | ("abc today", "abchay odaytay"), [INFO] [stdout] ... | [INFO] [stdout] 149 | | ("all your\n base are\n belong to us", "allhay ouryay\n asebay arehay\n elongbay otay ushay"), [INFO] [stdout] 150 | | ] { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] help: you can use an array directly [INFO] [stdout] | [INFO] [stdout] 143 ~ for (control, expected) in [("hello", "ellohay"), [INFO] [stdout] 144 + ("hello world", "ellohay orldway"), [INFO] [stdout] 145 + ("abc today", "abchay odaytay"), [INFO] [stdout] 146 + ("abc\n today", "abchay\n odaytay"), [INFO] [stdout] 147 + ("all your base are belong to us", "allhay ouryay asebay arehay elongbay otay ushay"), [INFO] [stdout] 148 ~ ("all your\n base are\n belong to us", "allhay ouryay\n asebay arehay\n elongbay otay ushay")] { [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] --> chp8/company_directory.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / match io::stdin().read_line(&mut input) { [INFO] [stdout] 50 | | Err(e) => { [INFO] [stdout] 51 | | println!("Command error: {:?}", e); [INFO] [stdout] ... | [INFO] [stdout] 54 | | } [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] 49 ~ if let Err(e) = io::stdin().read_line(&mut input) { [INFO] [stdout] 50 + println!("Command error: {:?}", e); [INFO] [stdout] 51 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/company_directory.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 71 - return out; [INFO] [stdout] 71 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/company_directory.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | if args.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/company_directory.rs:128:24 [INFO] [stdout] | [INFO] [stdout] 128 | if depts.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `depts.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'b [INFO] [stdout] --> chp8/company_directory.rs:170:21 [INFO] [stdout] | [INFO] [stdout] 170 | fn add_dept_emp<'a, 'b>(dept_name: &'a str, emp_name: &'a str, dir: &'b mut Directory) { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 170 - fn add_dept_emp<'a, 'b>(dept_name: &'a str, emp_name: &'a str, dir: &'b mut Directory) { [INFO] [stdout] 170 + fn add_dept_emp<'a>(dept_name: &'a str, emp_name: &'a str, dir: &mut Directory) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> chp8/company_directory.rs:171:47 [INFO] [stdout] | [INFO] [stdout] 171 | dir.listings.entry(dept_name.to_string()).or_insert(HashSet::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> chp2/guessing_game_lib.rs:1:41 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn head_after_trim_and_to_lower(xs: &String) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 1 - pub fn head_after_trim_and_to_lower(xs: &String) -> Option { [INFO] [stdout] 1 + pub fn head_after_trim_and_to_lower(xs: &str) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> chp2/guessing_game_lib.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | / match c { [INFO] [stdout] 18 | | 'y' | ' ' => true, [INFO] [stdout] 19 | | _ => false [INFO] [stdout] 20 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 17 - match c { [INFO] [stdout] 18 - 'y' | ' ' => true, [INFO] [stdout] 19 - _ => false [INFO] [stdout] 20 - } [INFO] [stdout] 17 + matches!(c, 'y' | ' ') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp2/guessing_game_lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | return num; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 25 - return num; [INFO] [stdout] 25 + num [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> chp3/fib_lib.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * @reference https://www.goldennumber.net/math/ [INFO] [stdout] 3 | | */ [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | static FIVE_O: f64 = 5.0; [INFO] [stdout] | ------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread::JoinHandle` [INFO] [stdout] --> chp16/chp16_1.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::thread::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::thread::JoinHandle` [INFO] [stdout] --> chp16/chp16_1.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::thread::JoinHandle; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::collections::HashMap` [INFO] [stdout] --> chp8/company_directory.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | use std::collections::HashMap; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> chp2/guessing_game.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | use rand; [INFO] [stdout] | ^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `maximum` is never used [INFO] [stdout] --> chp8/main.rs:45:4 [INFO] [stdout] | [INFO] [stdout] 45 | fn maximum(xs: &Vec) -> Option<&T> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/main.rs:42:5 [INFO] [stdout] | [INFO] [stdout] 42 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 42 - return out; [INFO] [stdout] 42 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/main.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 55 | return Some(last); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 55 - return Some(last); [INFO] [stdout] 55 + Some(last) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chp8/main.rs:45:32 [INFO] [stdout] | [INFO] [stdout] 45 | fn maximum(xs: &Vec) -> Option<&T> { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 45 - fn maximum(xs: &Vec) -> Option<&T> { [INFO] [stdout] 45 + fn maximum(xs: &[T]) -> Option<&T> { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/main.rs:46:8 [INFO] [stdout] | [INFO] [stdout] 46 | if xs.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `xs.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> chp2/guessing_game_lib.rs:49:26 [INFO] [stdout] | [INFO] [stdout] 49 | let result = match head_after_trim_and_to_lower(&String::from(t.0)) { [INFO] [stdout] | __________________________^ [INFO] [stdout] 50 | | Some(x) => x, [INFO] [stdout] 51 | | _ => ' ' [INFO] [stdout] 52 | | }; [INFO] [stdout] | |_____________^ help: replace with: `head_after_trim_and_to_lower(&String::from(t.0)).unwrap_or(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] = note: `#[warn(clippy::manual_unwrap_or)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> chp2/guessing_game_lib.rs:1:41 [INFO] [stdout] | [INFO] [stdout] 1 | pub fn head_after_trim_and_to_lower(xs: &String) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 1 - pub fn head_after_trim_and_to_lower(xs: &String) -> Option { [INFO] [stdout] 1 + pub fn head_after_trim_and_to_lower(xs: &str) -> Option { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> chp2/guessing_game_lib.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | / match c { [INFO] [stdout] 18 | | 'y' | ' ' => true, [INFO] [stdout] 19 | | _ => false [INFO] [stdout] 20 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 17 - match c { [INFO] [stdout] 18 - 'y' | ' ' => true, [INFO] [stdout] 19 - _ => false [INFO] [stdout] 20 - } [INFO] [stdout] 17 + matches!(c, 'y' | ' ') [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> chp3/fib_lib.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * @reference https://www.goldennumber.net/math/ [INFO] [stdout] 3 | | */ [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | static FIVE_O: f64 = 5.0; [INFO] [stdout] | ------------- the comment documents this static item [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> chp8/piglatin.rs:1:1 [INFO] [stdout] | [INFO] [stdout] 1 | / /** [INFO] [stdout] 2 | | * Convert strings to pig latin. [INFO] [stdout] 3 | | * The first consonant of each word is moved to the end of the word and “ay” is added, so “first” becomes “irst-fay”. [INFO] [stdout] 4 | | * Words that start with a vowel have “hay” added to the end instead (“apple” becomes “apple-hay”). [INFO] [stdout] 5 | | * Keep in mind the details about UTF-8 encoding! [INFO] [stdout] 6 | | */ [INFO] [stdout] 7 | | [INFO] [stdout] | |_^ [INFO] [stdout] 8 | use std::env; [INFO] [stdout] | - the comment documents this `use` import [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the crate use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 - /** [INFO] [stdout] 1 + /*! [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp2/guessing_game_lib.rs:25:5 [INFO] [stdout] | [INFO] [stdout] 25 | return num; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 25 - return num; [INFO] [stdout] 25 + num [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp2/guessing_game.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | return guess [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 34 - return guess [INFO] [stdout] 34 + guess [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] --> chp2/guessing_game.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | / match io::stdin().read_line(&mut guess) { [INFO] [stdout] 27 | | Err(e) => { [INFO] [stdout] 28 | | println!("Only numbers allowed. Err: {:?}", e); [INFO] [stdout] ... | [INFO] [stdout] 31 | | } [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] 26 ~ if let Err(e) = io::stdin().read_line(&mut guess) { [INFO] [stdout] 27 + println!("Only numbers allowed. Err: {:?}", e); [INFO] [stdout] 28 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> chp2/guessing_game.rs:66:11 [INFO] [stdout] | [INFO] [stdout] 66 | while is_correct_guess == false && remaining_num_guesses > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!is_correct_guess` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> chp2/guessing_game.rs:88:11 [INFO] [stdout] | [INFO] [stdout] 88 | while quit_game == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `!quit_game` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this pattern reimplements `Option::unwrap_or` [INFO] [stdout] --> chp2/guessing_game_lib.rs:106:24 [INFO] [stdout] | [INFO] [stdout] 106 | let subj = match head_after_trim_and_to_lower(&String::from(*s)) { [INFO] [stdout] | ________________________^ [INFO] [stdout] 107 | | Some(x) => x, [INFO] [stdout] 108 | | _ => ' ' [INFO] [stdout] 109 | | }; [INFO] [stdout] | |_____________^ help: replace with: `head_after_trim_and_to_lower(&String::from(*s)).unwrap_or(' ')` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_unwrap_or [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp2/guessing_game.rs:34:5 [INFO] [stdout] | [INFO] [stdout] 34 | return guess [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 34 - return guess [INFO] [stdout] 34 + guess [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/piglatin.rs:57:5 [INFO] [stdout] | [INFO] [stdout] 57 | return s.to_string(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 57 - return s.to_string(); [INFO] [stdout] 57 + s.to_string() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/piglatin.rs:34:8 [INFO] [stdout] | [INFO] [stdout] 34 | if s.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `s.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` 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] --> chp2/guessing_game.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | / match io::stdin().read_line(&mut guess) { [INFO] [stdout] 27 | | Err(e) => { [INFO] [stdout] 28 | | println!("Only numbers allowed. Err: {:?}", e); [INFO] [stdout] ... | [INFO] [stdout] 31 | | } [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] 26 ~ if let Err(e) = io::stdin().read_line(&mut guess) { [INFO] [stdout] 27 + println!("Only numbers allowed. Err: {:?}", e); [INFO] [stdout] 28 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/piglatin.rs:72:5 [INFO] [stdout] | [INFO] [stdout] 72 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 72 - return out; [INFO] [stdout] 72 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp8/piglatin.rs:65:5 [INFO] [stdout] | [INFO] [stdout] 65 | for word in words { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using: `for (i, word) in words.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/piglatin.rs:87:5 [INFO] [stdout] | [INFO] [stdout] 87 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 87 - return out; [INFO] [stdout] 87 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp8/piglatin.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | for line in lines { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: consider using: `for (i, line) in lines.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> chp2/guessing_game.rs:66:11 [INFO] [stdout] | [INFO] [stdout] 66 | while is_correct_guess == false && remaining_num_guesses > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!is_correct_guess` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> chp12/minigrep.rs:17:31 [INFO] [stdout] | [INFO] [stdout] 17 | let case_insensitve = !env::var("CASE_INSENSITIVE").is_err(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `env::var("CASE_INSENSITIVE").is_ok()` [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: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | a = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `a += b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | b = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `b += a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp3/fib_lib.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return 0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 37 - return 0; [INFO] [stdout] 37 + 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp3/fib_lib.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | for n in test_cases.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, n) in test_cases.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp3/fib_lib.rs:72:13 [INFO] [stdout] | [INFO] [stdout] 72 | for n2 in result.iter() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using: `for (i, n2) in result.iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> chp12/minigrep.rs:47:19 [INFO] [stdout] | [INFO] [stdout] 47 | let rslt = if cfg.case_insensitve == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!cfg.case_insensitve` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> chp2/guessing_game.rs:88:11 [INFO] [stdout] | [INFO] [stdout] 88 | while quit_game == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: try: `!quit_game` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> chp12/minigrep.rs:17:31 [INFO] [stdout] | [INFO] [stdout] 17 | let case_insensitve = !env::var("CASE_INSENSITIVE").is_err(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `env::var("CASE_INSENSITIVE").is_ok()` [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: equality checks against false can be replaced by a negation [INFO] [stdout] --> chp12/minigrep.rs:47:19 [INFO] [stdout] | [INFO] [stdout] 47 | let rslt = if cfg.case_insensitve == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!cfg.case_insensitve` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | a = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `a += b` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> chp3/fib_lib.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | b = a + b; [INFO] [stdout] | ^^^^^^^^^ help: replace it with: `b += a` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp3/fib_lib.rs:37:5 [INFO] [stdout] | [INFO] [stdout] 37 | return 0; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 37 - return 0; [INFO] [stdout] 37 + 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `ADD` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | ADD, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter: `Add` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] = note: `#[warn(clippy::upper_case_acronyms)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `LIST` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:14:5 [INFO] [stdout] | [INFO] [stdout] 14 | LIST, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `List` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `HELP` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 15 | HELP, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Help` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `COMMANDS` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:16:5 [INFO] [stdout] | [INFO] [stdout] 16 | COMMANDS, [INFO] [stdout] | ^^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Commands` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `EXIT` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:17:5 [INFO] [stdout] | [INFO] [stdout] 17 | EXIT, [INFO] [stdout] | ^^^^ help: consider making the acronym lowercase, except the initial letter: `Exit` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `UNKNOWN` contains a capitalized acronym [INFO] [stdout] --> chp8/company_directory.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | UNKNOWN [INFO] [stdout] | ^^^^^^^ help: consider making the acronym lowercase, except the initial letter: `Unknown` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#upper_case_acronyms [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/mean_and_mode.rs:8:5 [INFO] [stdout] | [INFO] [stdout] 8 | return sum / (v.len() as f64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 8 - return sum / (v.len() as f64); [INFO] [stdout] 8 + sum / (v.len() as f64) [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] --> chp8/company_directory.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | / match io::stdin().read_line(&mut input) { [INFO] [stdout] 50 | | Err(e) => { [INFO] [stdout] 51 | | println!("Command error: {:?}", e); [INFO] [stdout] ... | [INFO] [stdout] 54 | | } [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] 49 ~ if let Err(e) = io::stdin().read_line(&mut input) { [INFO] [stdout] 50 + println!("Command error: {:?}", e); [INFO] [stdout] 51 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chp8/company_directory.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | return out; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 71 - return out; [INFO] [stdout] 71 + out [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/company_directory.rs:90:12 [INFO] [stdout] | [INFO] [stdout] 90 | if args.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `args.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> chp8/company_directory.rs:128:24 [INFO] [stdout] | [INFO] [stdout] 128 | if depts.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `depts.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: panic message is not a string literal [INFO] [stdout] --> chp8/mean_and_mode.rs:45:26 [INFO] [stdout] | [INFO] [stdout] 45 | Err(e) => panic!(e) [INFO] [stdout] | ^ [INFO] [stdout] | [INFO] [stdout] = note: this usage of `panic!()` is deprecated; it will be a hard error in Rust 2021 [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(non_fmt_panics)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: add a "{}" format string to `Display` the message [INFO] [stdout] | [INFO] [stdout] 45 | Err(e) => panic!("{}", e) [INFO] [stdout] | +++++ [INFO] [stdout] help: or use std::panic::panic_any instead [INFO] [stdout] | [INFO] [stdout] 45 - Err(e) => panic!(e) [INFO] [stdout] 45 + Err(e) => std::panic::panic_any(e) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the following explicit lifetimes could be elided: 'b [INFO] [stdout] --> chp8/company_directory.rs:170:21 [INFO] [stdout] | [INFO] [stdout] 170 | fn add_dept_emp<'a, 'b>(dept_name: &'a str, emp_name: &'a str, dir: &'b mut Directory) { [INFO] [stdout] | ^^ ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stdout] = note: `#[warn(clippy::needless_lifetimes)]` on by default [INFO] [stdout] help: elide the lifetimes [INFO] [stdout] | [INFO] [stdout] 170 - fn add_dept_emp<'a, 'b>(dept_name: &'a str, emp_name: &'a str, dir: &'b mut Directory) { [INFO] [stdout] 170 + fn add_dept_emp<'a>(dept_name: &'a str, emp_name: &'a str, dir: &mut Directory) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `or_insert` to construct default value [INFO] [stdout] --> chp8/company_directory.rs:171:47 [INFO] [stdout] | [INFO] [stdout] 171 | dir.listings.entry(dept_name.to_string()).or_insert(HashSet::new()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `or_default()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unwrap_or_default [INFO] [stdout] = note: `#[warn(clippy::unwrap_or_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the variable `i` is used as a loop counter [INFO] [stdout] --> chp8/company_directory.rs:188:9 [INFO] [stdout] | [INFO] [stdout] 188 | for d in depts { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using: `for (i, d) in depts.into_iter().enumerate()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stdout] = note: `#[warn(clippy::explicit_counter_loop)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.54s [INFO] running `Command { std: "docker" "inspect" "2ba1adafae8677e0bb5047eb54270ec54bc7afe5bb19270befe4180dc04520aa", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "2ba1adafae8677e0bb5047eb54270ec54bc7afe5bb19270befe4180dc04520aa", kill_on_drop: false }` [INFO] [stdout] 2ba1adafae8677e0bb5047eb54270ec54bc7afe5bb19270befe4180dc04520aa