[INFO] cloning repository https://github.com/jprajwal/mygrep [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jprajwal/mygrep" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjprajwal%2Fmygrep", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjprajwal%2Fmygrep'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] bb2389a0aceccc9c1dbaaeb3ee4bab28aa62019e [INFO] linting jprajwal/mygrep against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjprajwal%2Fmygrep" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jprajwal/mygrep [INFO] finished tweaking git repo https://github.com/jprajwal/mygrep [INFO] tweaked toml for git repo https://github.com/jprajwal/mygrep written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jprajwal/mygrep 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/jprajwal/mygrep 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] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 9e2d053a51b55b43b381a3182e270db115d1a40e884317c72707883ddfc1579e [INFO] running `Command { std: "docker" "start" "-a" "9e2d053a51b55b43b381a3182e270db115d1a40e884317c72707883ddfc1579e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "9e2d053a51b55b43b381a3182e270db115d1a40e884317c72707883ddfc1579e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9e2d053a51b55b43b381a3182e270db115d1a40e884317c72707883ddfc1579e", kill_on_drop: false }` [INFO] [stdout] 9e2d053a51b55b43b381a3182e270db115d1a40e884317c72707883ddfc1579e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 8c9358f86abe1f8fd63b841fa3689b8209ca946704f1f8a46f510596ddb7f2b3 [INFO] running `Command { std: "docker" "start" "-a" "8c9358f86abe1f8fd63b841fa3689b8209ca946704f1f8a46f510596ddb7f2b3", kill_on_drop: false }` [INFO] [stderr] Compiling syn v2.0.100 [INFO] [stderr] Checking clap_builder v4.5.35 [INFO] [stderr] Compiling clap_derive v4.5.32 [INFO] [stderr] Checking clap v4.5.35 [INFO] [stderr] Checking mygrep v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/glob.rs:9:25 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn new(pattern: &String) -> Self { [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] 9 ~ pub fn new(pattern: &str) -> Self { [INFO] [stdout] 10 | Self { [INFO] [stdout] 11 ~ glob_pattern: pattern.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/glob.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | return true; [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] 47 - return true; [INFO] [stdout] 47 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/glob.rs:70:29 [INFO] [stdout] | [INFO] [stdout] 70 | / ... if p == "**" { [INFO] [stdout] 71 | | ... return true; [INFO] [stdout] 72 | | ... } else { [INFO] [stdout] 73 | | ... return false; [INFO] [stdout] 74 | | ... } [INFO] [stdout] | |_______________________^ help: you can reduce it to: `return p == "**"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/thread_pool.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | return this; [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] 75 - return this; [INFO] [stdout] 75 + this [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/thread_pool.rs:40:24 [INFO] [stdout] | [INFO] [stdout] 40 | if q.len() > 0 && w.len() < *c { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!q.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] --> src/thread_pool.rs:51:35 [INFO] [stdout] | [INFO] [stdout] 51 | ... while w.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!w.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: length comparison to zero [INFO] [stdout] --> src/thread_pool.rs:55:32 [INFO] [stdout] | [INFO] [stdout] 55 | ... if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: unneeded `return` statement [INFO] [stdout] --> src/thread_pool.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | return; [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] 90 - .expect("something went wrong while accessing ThreadPool queue"); [INFO] [stdout] 91 - return; [INFO] [stdout] 90 + .expect("something went wrong while accessing ThreadPool queue"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/glob.rs:9:25 [INFO] [stdout] | [INFO] [stdout] 9 | pub fn new(pattern: &String) -> Self { [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] 9 ~ pub fn new(pattern: &str) -> Self { [INFO] [stdout] 10 | Self { [INFO] [stdout] 11 ~ glob_pattern: pattern.to_owned(), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/main.rs:83:1 [INFO] [stdout] | [INFO] [stdout] 83 | / impl std::default::Default for GrepData { [INFO] [stdout] 84 | | fn default() -> Self { [INFO] [stdout] 85 | | Self { [INFO] [stdout] 86 | | line_number: 0, [INFO] [stdout] ... | [INFO] [stdout] 91 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 77 + #[derive(Default)] [INFO] [stdout] 78 | struct GrepData { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/glob.rs:47:9 [INFO] [stdout] | [INFO] [stdout] 47 | return true; [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] 47 - return true; [INFO] [stdout] 47 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | fn is_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 93 ~ fn is_match(pattern: &str, line: &String) -> bool { [INFO] [stdout] 94 ~ line.contains(pattern) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:93:37 [INFO] [stdout] | [INFO] [stdout] 93 | fn is_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 93 - fn is_match(pattern: &String, line: &String) -> bool { [INFO] [stdout] 93 + fn is_match(pattern: &String, line: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:97:39 [INFO] [stdout] | [INFO] [stdout] 97 | fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 97 - fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [INFO] [stdout] 97 + fn is_case_insensitive_match(pattern: &str, line: &String) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:97:54 [INFO] [stdout] | [INFO] [stdout] 97 | fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 97 - fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [INFO] [stdout] 97 + fn is_case_insensitive_match(pattern: &String, line: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:147:16 [INFO] [stdout] | [INFO] [stdout] 147 | if !line.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `line.is_err()` [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: this if-then-else expression returns a bool literal [INFO] [stdout] --> src/glob.rs:70:29 [INFO] [stdout] | [INFO] [stdout] 70 | / ... if p == "**" { [INFO] [stdout] 71 | | ... return true; [INFO] [stdout] 72 | | ... } else { [INFO] [stdout] 73 | | ... return false; [INFO] [stdout] 74 | | ... } [INFO] [stdout] | |_______________________^ help: you can reduce it to: `return p == "**"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stdout] = note: `#[warn(clippy::needless_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:181:9 [INFO] [stdout] | [INFO] [stdout] 181 | &grep_state, [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `grep_state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/main.rs:186:20 [INFO] [stdout] | [INFO] [stdout] 186 | fn print_grep_data<'a>(grep_data: &GrepData, grep_state: &GrepState) { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 117 - assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] 117 + assert!(Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:124:9 [INFO] [stdout] | [INFO] [stdout] 124 | assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 124 - assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] 124 + assert!(Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:131:9 [INFO] [stdout] | [INFO] [stdout] 131 | assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 131 - assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] 131 + assert!(Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:259:47 [INFO] [stdout] | [INFO] [stdout] 259 | if self.grep_state.devices == String::from("skip") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"skip"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:318:5 [INFO] [stdout] | [INFO] [stdout] 318 | return result; [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] 318 - return result; [INFO] [stdout] 318 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:139:9 [INFO] [stdout] | [INFO] [stdout] 139 | assert_eq!(Glob::new(&pattern).is_match(&path_1), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 139 - assert_eq!(Glob::new(&pattern).is_match(&path_1), true); [INFO] [stdout] 139 + assert!(Glob::new(&pattern).is_match(&path_1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:140:9 [INFO] [stdout] | [INFO] [stdout] 140 | assert_eq!(Glob::new(&pattern).is_match(&path_2), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 140 - assert_eq!(Glob::new(&pattern).is_match(&path_2), true); [INFO] [stdout] 140 + assert!(Glob::new(&pattern).is_match(&path_2)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:150:9 [INFO] [stdout] | [INFO] [stdout] 150 | assert_eq!(Glob::new(&pattern).is_match(&path_1), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 150 - assert_eq!(Glob::new(&pattern).is_match(&path_1), true); [INFO] [stdout] 150 + assert!(Glob::new(&pattern).is_match(&path_1)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:151:9 [INFO] [stdout] | [INFO] [stdout] 151 | assert_eq!(Glob::new(&pattern).is_match(&path_2), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 151 - assert_eq!(Glob::new(&pattern).is_match(&path_2), true); [INFO] [stdout] 151 + assert!(Glob::new(&pattern).is_match(&path_2)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:152:9 [INFO] [stdout] | [INFO] [stdout] 152 | assert_eq!(Glob::new(&pattern).is_match(&path_3), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 152 - assert_eq!(Glob::new(&pattern).is_match(&path_3), true); [INFO] [stdout] 152 + assert!(Glob::new(&pattern).is_match(&path_3)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | assert_eq!(Glob::new(&pattern).is_match(&path_4), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 153 - assert_eq!(Glob::new(&pattern).is_match(&path_4), true); [INFO] [stdout] 153 + assert!(Glob::new(&pattern).is_match(&path_4)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/main.rs:312:13 [INFO] [stdout] | [INFO] [stdout] 312 | / collected_dirs[start..end] [INFO] [stdout] 313 | | .iter() [INFO] [stdout] 314 | | .map(|item| item.clone()) [INFO] [stdout] | |_________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 312 ~ collected_dirs[start..end] [INFO] [stdout] 313 + .iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 160 - assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] 160 + assert!(Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap_err` on `metadata_res` after checking its variant with `is_err` [INFO] [stdout] --> src/main.rs:356:39 [INFO] [stdout] | [INFO] [stdout] 354 | if metadata_res.is_err() { [INFO] [stdout] | ------------------------ help: try: `if let Err() = metadata_res` [INFO] [stdout] 355 | eprintln( [INFO] [stdout] 356 | format!("{}", metadata_res.unwrap_err()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:162:9 [INFO] [stdout] | [INFO] [stdout] 162 | assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 162 - assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] 162 + assert!(Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.include` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:386:49 [INFO] [stdout] | [INFO] [stdout] 384 | ... if grep_state.include.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.include` [INFO] [stdout] 385 | ... let mut has_match = false; [INFO] [stdout] 386 | ... let globs = grep_state.include.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.exclude` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:410:49 [INFO] [stdout] | [INFO] [stdout] 408 | ... if grep_state.exclude.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.exclude` [INFO] [stdout] 409 | ... let mut has_match = false; [INFO] [stdout] 410 | ... let globs = grep_state.exclude.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.include` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:462:37 [INFO] [stdout] | [INFO] [stdout] 460 | if grep_state.include.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.include` [INFO] [stdout] 461 | let mut has_match = false; [INFO] [stdout] 462 | let globs = grep_state.include.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.exclude` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:486:37 [INFO] [stdout] | [INFO] [stdout] 484 | if grep_state.exclude.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.exclude` [INFO] [stdout] 485 | let mut has_match = false; [INFO] [stdout] 486 | let globs = grep_state.exclude.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:169:9 [INFO] [stdout] | [INFO] [stdout] 169 | assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 169 - assert_eq!(Glob::new(&pattern).is_match(&path), true); [INFO] [stdout] 169 + assert!(Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/main.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 363 | if grep_state_clone.recursive == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!grep_state_clone.recursive` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:176:9 [INFO] [stdout] | [INFO] [stdout] 176 | assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 176 - assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] 176 + assert!(!Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:178:9 [INFO] [stdout] | [INFO] [stdout] 178 | assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 178 - assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] 178 + assert!(!Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:180:9 [INFO] [stdout] | [INFO] [stdout] 180 | assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 180 - assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] 180 + assert!(!Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:187:9 [INFO] [stdout] | [INFO] [stdout] 187 | assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 187 - assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] 187 + assert!(!Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:432:58 [INFO] [stdout] | [INFO] [stdout] 432 | ... if grep_state.devices == String::from("skip") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"skip"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:194:9 [INFO] [stdout] | [INFO] [stdout] 194 | assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 194 - assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] 194 + assert!(!Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:447:37 [INFO] [stdout] | [INFO] [stdout] 447 | ... grep_data.filename = name.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `GrepData { filename: name.clone(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:446:37 [INFO] [stdout] | [INFO] [stdout] 446 | ... let mut grep_data = GrepData::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:453:49 [INFO] [stdout] | [INFO] [stdout] 453 | } else if grep_state.devices == String::from("skip") && !metadata.is_file() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"skip"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:201:9 [INFO] [stdout] | [INFO] [stdout] 201 | assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 201 - assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] 201 + assert!(!Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/glob.rs:208:9 [INFO] [stdout] | [INFO] [stdout] 208 | assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 208 - assert_eq!(Glob::new(&pattern).is_match(&path), false); [INFO] [stdout] 208 + assert!(!Glob::new(&pattern).is_match(&path)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/thread_pool.rs:75:9 [INFO] [stdout] | [INFO] [stdout] 75 | return this; [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] 75 - return this; [INFO] [stdout] 75 + this [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:521:33 [INFO] [stdout] | [INFO] [stdout] 521 | ... grep_data.filename = filename.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `GrepData { filename: filename.clone(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:520:33 [INFO] [stdout] | [INFO] [stdout] 520 | ... let mut grep_data = GrepData::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/thread_pool.rs:40:24 [INFO] [stdout] | [INFO] [stdout] 40 | if q.len() > 0 && w.len() < *c { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!q.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] --> src/thread_pool.rs:51:35 [INFO] [stdout] | [INFO] [stdout] 51 | ... while w.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!w.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: length comparison to zero [INFO] [stdout] --> src/thread_pool.rs:55:32 [INFO] [stdout] | [INFO] [stdout] 55 | ... if q.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `q.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: unneeded `return` statement [INFO] [stdout] --> src/thread_pool.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | return; [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] 90 - .expect("something went wrong while accessing ThreadPool queue"); [INFO] [stdout] 91 - return; [INFO] [stdout] 90 + .expect("something went wrong while accessing ThreadPool queue"); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/main.rs:83:1 [INFO] [stdout] | [INFO] [stdout] 83 | / impl std::default::Default for GrepData { [INFO] [stdout] 84 | | fn default() -> Self { [INFO] [stdout] 85 | | Self { [INFO] [stdout] 86 | | line_number: 0, [INFO] [stdout] ... | [INFO] [stdout] 91 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 77 + #[derive(Default)] [INFO] [stdout] 78 | struct GrepData { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:93:22 [INFO] [stdout] | [INFO] [stdout] 93 | fn is_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 93 ~ fn is_match(pattern: &str, line: &String) -> bool { [INFO] [stdout] 94 ~ line.contains(pattern) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.95s [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:93:37 [INFO] [stdout] | [INFO] [stdout] 93 | fn is_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 93 - fn is_match(pattern: &String, line: &String) -> bool { [INFO] [stdout] 93 + fn is_match(pattern: &String, line: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:97:39 [INFO] [stdout] | [INFO] [stdout] 97 | fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 97 - fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [INFO] [stdout] 97 + fn is_case_insensitive_match(pattern: &str, line: &String) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/main.rs:97:54 [INFO] [stdout] | [INFO] [stdout] 97 | fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [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] help: change this to [INFO] [stdout] | [INFO] [stdout] 97 - fn is_case_insensitive_match(pattern: &String, line: &String) -> bool { [INFO] [stdout] 97 + fn is_case_insensitive_match(pattern: &String, line: &str) -> bool { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/main.rs:147:16 [INFO] [stdout] | [INFO] [stdout] 147 | if !line.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^ help: try: `line.is_err()` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:181:9 [INFO] [stdout] | [INFO] [stdout] 181 | &grep_state, [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `grep_state` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this lifetime isn't used in the function definition [INFO] [stdout] --> src/main.rs:186:20 [INFO] [stdout] | [INFO] [stdout] 186 | fn print_grep_data<'a>(grep_data: &GrepData, grep_state: &GrepState) { [INFO] [stdout] | ^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stdout] = note: `#[warn(clippy::extra_unused_lifetimes)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:259:47 [INFO] [stdout] | [INFO] [stdout] 259 | if self.grep_state.devices == String::from("skip") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"skip"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] = note: `#[warn(clippy::cmp_owned)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:318:5 [INFO] [stdout] | [INFO] [stdout] 318 | return result; [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] 318 - return result; [INFO] [stdout] 318 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/main.rs:312:13 [INFO] [stdout] | [INFO] [stdout] 312 | / collected_dirs[start..end] [INFO] [stdout] 313 | | .iter() [INFO] [stdout] 314 | | .map(|item| item.clone()) [INFO] [stdout] | |_________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] help: consider calling the dedicated `cloned` method [INFO] [stdout] | [INFO] [stdout] 312 ~ collected_dirs[start..end] [INFO] [stdout] 313 + .iter().cloned() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap_err` on `metadata_res` after checking its variant with `is_err` [INFO] [stdout] --> src/main.rs:356:39 [INFO] [stdout] | [INFO] [stdout] 354 | if metadata_res.is_err() { [INFO] [stdout] | ------------------------ help: try: `if let Err() = metadata_res` [INFO] [stdout] 355 | eprintln( [INFO] [stdout] 356 | format!("{}", metadata_res.unwrap_err()), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.include` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:386:49 [INFO] [stdout] | [INFO] [stdout] 384 | ... if grep_state.include.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.include` [INFO] [stdout] 385 | ... let mut has_match = false; [INFO] [stdout] 386 | ... let globs = grep_state.include.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.exclude` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:410:49 [INFO] [stdout] | [INFO] [stdout] 408 | ... if grep_state.exclude.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.exclude` [INFO] [stdout] 409 | ... let mut has_match = false; [INFO] [stdout] 410 | ... let globs = grep_state.exclude.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.include` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:462:37 [INFO] [stdout] | [INFO] [stdout] 460 | if grep_state.include.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.include` [INFO] [stdout] 461 | let mut has_match = false; [INFO] [stdout] 462 | let globs = grep_state.include.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `grep_state.exclude` after checking its variant with `is_some` [INFO] [stdout] --> src/main.rs:486:37 [INFO] [stdout] | [INFO] [stdout] 484 | if grep_state.exclude.is_some() { [INFO] [stdout] | ------------------------------- help: try: `if let Some() = &grep_state.exclude` [INFO] [stdout] 485 | let mut has_match = false; [INFO] [stdout] 486 | let globs = grep_state.exclude.as_ref().unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against false can be replaced by a negation [INFO] [stdout] --> src/main.rs:363:24 [INFO] [stdout] | [INFO] [stdout] 363 | if grep_state_clone.recursive == false { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `!grep_state_clone.recursive` [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 creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:432:58 [INFO] [stdout] | [INFO] [stdout] 432 | ... if grep_state.devices == String::from("skip") [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"skip"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:447:37 [INFO] [stdout] | [INFO] [stdout] 447 | ... grep_data.filename = name.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `GrepData { filename: name.clone(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:446:37 [INFO] [stdout] | [INFO] [stdout] 446 | ... let mut grep_data = GrepData::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] = note: `#[warn(clippy::field_reassign_with_default)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this creates an owned instance just for comparison [INFO] [stdout] --> src/main.rs:453:49 [INFO] [stdout] | [INFO] [stdout] 453 | } else if grep_state.devices == String::from("skip") && !metadata.is_file() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `"skip"` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field assignment outside of initializer for an instance created with Default::default() [INFO] [stdout] --> src/main.rs:521:33 [INFO] [stdout] | [INFO] [stdout] 521 | ... grep_data.filename = filename.clone(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: consider initializing the variable with `GrepData { filename: filename.clone(), ..Default::default() }` and removing relevant reassignments [INFO] [stdout] --> src/main.rs:520:33 [INFO] [stdout] | [INFO] [stdout] 520 | ... let mut grep_data = GrepData::default(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#field_reassign_with_default [INFO] [stdout] [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "8c9358f86abe1f8fd63b841fa3689b8209ca946704f1f8a46f510596ddb7f2b3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8c9358f86abe1f8fd63b841fa3689b8209ca946704f1f8a46f510596ddb7f2b3", kill_on_drop: false }` [INFO] [stdout] 8c9358f86abe1f8fd63b841fa3689b8209ca946704f1f8a46f510596ddb7f2b3