[INFO] updating cached repository jheek/rust-chess [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jheek/rust-chess [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jheek/rust-chess" "work/ex/clippy-test-run/sources/stable/gh/jheek/rust-chess"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jheek/rust-chess'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jheek/rust-chess" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jheek/rust-chess"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jheek/rust-chess'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 6b90731901e304cef1d83c16184b66168358cde7 [INFO] sha for GitHub repo jheek/rust-chess: 6b90731901e304cef1d83c16184b66168358cde7 [INFO] validating manifest of jheek/rust-chess 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 jheek/rust-chess 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 jheek/rust-chess [INFO] finished frobbing jheek/rust-chess [INFO] frobbed toml for jheek/rust-chess written to work/ex/clippy-test-run/sources/stable/gh/jheek/rust-chess/Cargo.toml [INFO] started frobbing jheek/rust-chess [INFO] finished frobbing jheek/rust-chess [INFO] frobbed toml for jheek/rust-chess written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jheek/rust-chess/Cargo.toml [INFO] crate jheek/rust-chess has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting jheek/rust-chess against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/jheek/rust-chess:/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] 9e623a66d1a528a991ee0215da08d804273e35e0964f89a1570304a0c4ec1fbd [INFO] running `"docker" "start" "-a" "9e623a66d1a528a991ee0215da08d804273e35e0964f89a1570304a0c4ec1fbd"` [INFO] [stderr] Compiling chess v1.0.4 [INFO] [stderr] Checking mio v0.6.16 [INFO] [stderr] Compiling syn v0.14.9 [INFO] [stderr] Checking mio-extras v2.0.5 [INFO] [stderr] Checking ws v0.7.8 [INFO] [stderr] Compiling serde_derive v1.0.76 [INFO] [stderr] Checking rust_chess v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/eval.rs:9:30 [INFO] [stderr] | [INFO] [stderr] 9 | pub const WIN_SCORE: Score = 100000; [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/eval.rs:12:31 [INFO] [stderr] | [INFO] [stderr] 12 | pub const MIN_SCORE: Score = -1000000; [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/eval.rs:13:30 [INFO] [stderr] | [INFO] [stderr] 13 | pub const MAX_SCORE: Score = 1000000; [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/eval.rs:186:13 [INFO] [stderr] | [INFO] [stderr] 186 | score [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/eval.rs:185:25 [INFO] [stderr] | [INFO] [stderr] 185 | let score = material + position + movability; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/minmax.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/eval.rs:9:30 [INFO] [stderr] | [INFO] [stderr] 9 | pub const WIN_SCORE: Score = 100000; [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/eval.rs:12:31 [INFO] [stderr] | [INFO] [stderr] 12 | pub const MIN_SCORE: Score = -1000000; [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/eval.rs:13:30 [INFO] [stderr] | [INFO] [stderr] 13 | pub const MAX_SCORE: Score = 1000000; [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/eval.rs:186:13 [INFO] [stderr] | [INFO] [stderr] 186 | score [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/eval.rs:185:25 [INFO] [stderr] | [INFO] [stderr] 185 | let score = material + position + movability; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Instant` [INFO] [stderr] --> src/minmax.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::time::Instant; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `piece_captureable_score` [INFO] [stderr] --> src/eval.rs:91:1 [INFO] [stderr] | [INFO] [stderr] 91 | fn piece_captureable_score(piece: Piece) -> Score { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `movability_score` [INFO] [stderr] --> src/eval.rs:136:1 [INFO] [stderr] | [INFO] [stderr] 136 | fn movability_score(board: &Board, moves: &[ChessMove]) -> Score { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `aspiration_search` [INFO] [stderr] --> src/minmax.rs:150:1 [INFO] [stderr] | [INFO] [stderr] 150 | / fn aspiration_search(callback: &mut F, ttable: &TTable, board: &Board, entry_op: &Option, moves: &[ChessMove], depth: i32, guess: Score) -> Option [INFO] [stderr] 151 | | where F: FnMut() -> bool{ [INFO] [stderr] 152 | | let mut margin = 5; [INFO] [stderr] 153 | | let mut lower_bound = guess - margin; [INFO] [stderr] ... | [INFO] [stderr] 172 | | } [INFO] [stderr] 173 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/minmax.rs:74:12 [INFO] [stderr] | [INFO] [stderr] 74 | if self.workers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.workers.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: this function has too many arguments (8/7) [INFO] [stderr] --> src/minmax.rs:233:1 [INFO] [stderr] | [INFO] [stderr] 233 | / fn alpha_beta_raw(callback: &mut F, ttable: &TTable, board: &Board, entry_op: &Option, moves: &[ChessMove], depth: i32, mut alpha: Score, mut beta: Score) -> Option [INFO] [stderr] 234 | | where F: FnMut() -> bool { [INFO] [stderr] 235 | | if callback() { [INFO] [stderr] 236 | | return None; [INFO] [stderr] ... | [INFO] [stderr] 325 | | Some(ABResult { best_move: Some(best_move), best_value }) [INFO] [stderr] 326 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/minmax.rs:240:8 [INFO] [stderr] | [INFO] [stderr] 240 | if moves.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `moves`. [INFO] [stderr] --> src/main.rs:145:42 [INFO] [stderr] | [INFO] [stderr] 145 | for i in 0..*num_moves { [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] 145 | for in moves.iter().take(*num_moves) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `piece_captureable_score` [INFO] [stderr] --> src/eval.rs:91:1 [INFO] [stderr] | [INFO] [stderr] 91 | fn piece_captureable_score(piece: Piece) -> Score { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `movability_score` [INFO] [stderr] --> src/eval.rs:136:1 [INFO] [stderr] | [INFO] [stderr] 136 | fn movability_score(board: &Board, moves: &[ChessMove]) -> Score { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `aspiration_search` [INFO] [stderr] --> src/minmax.rs:150:1 [INFO] [stderr] | [INFO] [stderr] 150 | / fn aspiration_search(callback: &mut F, ttable: &TTable, board: &Board, entry_op: &Option, moves: &[ChessMove], depth: i32, guess: Score) -> Option [INFO] [stderr] 151 | | where F: FnMut() -> bool{ [INFO] [stderr] 152 | | let mut margin = 5; [INFO] [stderr] 153 | | let mut lower_bound = guess - margin; [INFO] [stderr] ... | [INFO] [stderr] 172 | | } [INFO] [stderr] 173 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/minmax.rs:74:12 [INFO] [stderr] | [INFO] [stderr] 74 | if self.workers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.workers.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: this function has too many arguments (8/7) [INFO] [stderr] --> src/minmax.rs:233:1 [INFO] [stderr] | [INFO] [stderr] 233 | / fn alpha_beta_raw(callback: &mut F, ttable: &TTable, board: &Board, entry_op: &Option, moves: &[ChessMove], depth: i32, mut alpha: Score, mut beta: Score) -> Option [INFO] [stderr] 234 | | where F: FnMut() -> bool { [INFO] [stderr] 235 | | if callback() { [INFO] [stderr] 236 | | return None; [INFO] [stderr] ... | [INFO] [stderr] 325 | | Some(ABResult { best_move: Some(best_move), best_value }) [INFO] [stderr] 326 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/minmax.rs:240:8 [INFO] [stderr] | [INFO] [stderr] 240 | if moves.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `moves`. [INFO] [stderr] --> src/main.rs:145:42 [INFO] [stderr] | [INFO] [stderr] 145 | for i in 0..*num_moves { [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] 145 | for in moves.iter().take(*num_moves) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 5m 09s [INFO] running `"docker" "inspect" "9e623a66d1a528a991ee0215da08d804273e35e0964f89a1570304a0c4ec1fbd"` [INFO] running `"docker" "rm" "-f" "9e623a66d1a528a991ee0215da08d804273e35e0964f89a1570304a0c4ec1fbd"` [INFO] [stdout] 9e623a66d1a528a991ee0215da08d804273e35e0964f89a1570304a0c4ec1fbd