[INFO] crate mastermind 0.1.5 is already in cache [INFO] extracting crate mastermind 0.1.5 into work/ex/clippy-test-run/sources/stable/reg/mastermind/0.1.5 [INFO] extracting crate mastermind 0.1.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mastermind/0.1.5 [INFO] validating manifest of mastermind-0.1.5 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of mastermind-0.1.5 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing mastermind-0.1.5 [INFO] finished frobbing mastermind-0.1.5 [INFO] frobbed toml for mastermind-0.1.5 written to work/ex/clippy-test-run/sources/stable/reg/mastermind/0.1.5/Cargo.toml [INFO] started frobbing mastermind-0.1.5 [INFO] finished frobbing mastermind-0.1.5 [INFO] frobbed toml for mastermind-0.1.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/mastermind/0.1.5/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting mastermind-0.1.5 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/mastermind/0.1.5:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] ff10f43e74f73e95bab7e7c9e525a4a129dc4bb54fae2ddce83d54d9f36e3912 [INFO] running `"docker" "start" "-a" "ff10f43e74f73e95bab7e7c9e525a4a129dc4bb54fae2ddce83d54d9f36e3912"` [INFO] [stderr] Checking mastermind v0.1.5 (/opt/crater/workdir) [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/color.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / if self.to_string() == other.to_string() { [INFO] [stderr] 45 | | true [INFO] [stderr] 46 | | } else { [INFO] [stderr] 47 | | false [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.to_string() == other.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/lib.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | / answer.iter() [INFO] [stderr] 93 | | .position(|p| p.color() == g.color()) [INFO] [stderr] 94 | | .map(|index| { [INFO] [stderr] 95 | | if !answer[index].found() { [INFO] [stderr] ... | [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 92 | if let Some(index) = answer.iter() [INFO] [stderr] 93 | .position(|p| p.color() == g.color()) { ... } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/color.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / if self.to_string() == other.to_string() { [INFO] [stderr] 45 | | true [INFO] [stderr] 46 | | } else { [INFO] [stderr] 47 | | false [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.to_string() == other.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/lib.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | / answer.iter() [INFO] [stderr] 93 | | .position(|p| p.color() == g.color()) [INFO] [stderr] 94 | | .map(|index| { [INFO] [stderr] 95 | | if !answer[index].found() { [INFO] [stderr] ... | [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | }); [INFO] [stderr] | |__________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 92 | if let Some(index) = answer.iter() [INFO] [stderr] 93 | .position(|p| p.color() == g.color()) { ... } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/color.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / if self.to_string() == other.to_string() { [INFO] [stderr] 45 | | true [INFO] [stderr] 46 | | } else { [INFO] [stderr] 47 | | false [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.to_string() == other.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `answer`. [INFO] [stderr] --> src/main.rs:31:14 [INFO] [stderr] | [INFO] [stderr] 31 | for i in 0..answer.len() - 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 31 | for in answer.iter().take(answer.len() - 1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | fn play(answer: &Vec, num_pegs: u32) -> (bool, u32) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 75 | fn play(answer: &[Peg], num_pegs: u32) -> (bool, u32) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `answer.clone()` to [INFO] [stderr] | [INFO] [stderr] 102| let result = check_answer(&mut guess_convert, &mut answer.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:104:12 [INFO] [stderr] | [INFO] [stderr] 104 | if result.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:112:29 [INFO] [stderr] | [INFO] [stderr] 112 | if !result.contains("0") && result.len() as u32 == num_pegs { [INFO] [stderr] | ^^^ help: try using a char instead: `'0'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/color.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / if self.to_string() == other.to_string() { [INFO] [stderr] 45 | | true [INFO] [stderr] 46 | | } else { [INFO] [stderr] 47 | | false [INFO] [stderr] 48 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.to_string() == other.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `answer`. [INFO] [stderr] --> src/main.rs:31:14 [INFO] [stderr] | [INFO] [stderr] 31 | for i in 0..answer.len() - 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 31 | for in answer.iter().take(answer.len() - 1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | fn play(answer: &Vec, num_pegs: u32) -> (bool, u32) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 75 | fn play(answer: &[Peg], num_pegs: u32) -> (bool, u32) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] help: change `answer.clone()` to [INFO] [stderr] | [INFO] [stderr] 102| let result = check_answer(&mut guess_convert, &mut answer.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:104:12 [INFO] [stderr] | [INFO] [stderr] 104 | if result.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!result.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:112:29 [INFO] [stderr] | [INFO] [stderr] 112 | if !result.contains("0") && result.len() as u32 == num_pegs { [INFO] [stderr] | ^^^ help: try using a char instead: `'0'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.07s [INFO] running `"docker" "inspect" "ff10f43e74f73e95bab7e7c9e525a4a129dc4bb54fae2ddce83d54d9f36e3912"` [INFO] running `"docker" "rm" "-f" "ff10f43e74f73e95bab7e7c9e525a4a129dc4bb54fae2ddce83d54d9f36e3912"` [INFO] [stdout] ff10f43e74f73e95bab7e7c9e525a4a129dc4bb54fae2ddce83d54d9f36e3912