[INFO] cloning repository https://github.com/wjzz/chess-in-rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/wjzz/chess-in-rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwjzz%2Fchess-in-rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwjzz%2Fchess-in-rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] bdf6f7965eaa6518ccc8e8044c321ff9462e4f54 [INFO] linting wjzz/chess-in-rust against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fwjzz%2Fchess-in-rust" "/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/wjzz/chess-in-rust [INFO] finished tweaking git repo https://github.com/wjzz/chess-in-rust [INFO] tweaked toml for git repo https://github.com/wjzz/chess-in-rust written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/wjzz/chess-in-rust 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/wjzz/chess-in-rust 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] ffef3a2c946bcee9267ada7adb4e7ac798b111ae42fccfed80fdff81c32938f7 [INFO] running `Command { std: "docker" "start" "-a" "ffef3a2c946bcee9267ada7adb4e7ac798b111ae42fccfed80fdff81c32938f7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "ffef3a2c946bcee9267ada7adb4e7ac798b111ae42fccfed80fdff81c32938f7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "ffef3a2c946bcee9267ada7adb4e7ac798b111ae42fccfed80fdff81c32938f7", kill_on_drop: false }` [INFO] [stdout] ffef3a2c946bcee9267ada7adb4e7ac798b111ae42fccfed80fdff81c32938f7 [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] d71466298d9305600417074ca89de15a467bc5f2472be37043c2df17f360a041 [INFO] running `Command { std: "docker" "start" "-a" "d71466298d9305600417074ca89de15a467bc5f2472be37043c2df17f360a041", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.77 [INFO] [stderr] Compiling getrandom v0.1.15 [INFO] [stderr] Checking ppv-lite86 v0.2.9 [INFO] [stderr] Checking rand_core v0.5.1 [INFO] [stderr] Checking rand_chacha v0.2.2 [INFO] [stderr] Checking rand v0.7.3 [INFO] [stderr] Checking rust-chess v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/position/basic_types.rs:355:25 [INFO] [stdout] | [INFO] [stdout] 355 | pub fn to_usi_ascii(self: &Self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 355 - pub fn to_usi_ascii(self: &Self) -> String { [INFO] [stdout] 355 + pub fn to_usi_ascii(&self) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/position/basic_types.rs:355:25 [INFO] [stdout] | [INFO] [stdout] 355 | pub fn to_usi_ascii(self: &Self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 355 - pub fn to_usi_ascii(self: &Self) -> String { [INFO] [stdout] 355 + pub fn to_usi_ascii(&self) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/eval.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | return eval_material(&self) + eval_pos; [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] 154 - return eval_material(&self) + eval_pos; [INFO] [stdout] 154 + eval_material(&self) + eval_pos [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/move_search/eval.rs:149:48 [INFO] [stdout] | [INFO] [stdout] 149 | let eval_pos = 0.01 * eval_positioning(&self) as f64; [INFO] [stdout] | ^^^^^ help: change this to: `self` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/move_search/eval.rs:154:30 [INFO] [stdout] | [INFO] [stdout] 154 | return eval_material(&self) + eval_pos; [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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] --> src/move_search/search.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | return (best_move, val); [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] 60 - return (best_move, val); [INFO] [stdout] 60 + (best_move, val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 93 | if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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/move_search/search.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | return (best_move, val); [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] 142 - return (best_move, val); [INFO] [stdout] 142 + (best_move, val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | return (best_move, best_val); [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] 179 - return (best_move, best_val); [INFO] [stdout] 179 + (best_move, best_val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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: this `if` statement can be collapsed [INFO] [stdout] --> src/move_search/search.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | / if val > alpha { [INFO] [stdout] 264 | | if level == 0 { [INFO] [stdout] 265 | | unsafe { [INFO] [stdout] 266 | | BEST_MOVE = Some(mv); [INFO] [stdout] ... | [INFO] [stdout] 269 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 263 ~ if val > alpha [INFO] [stdout] 264 ~ && level == 0 { [INFO] [stdout] 265 | unsafe { [INFO] [stdout] 266 | BEST_MOVE = Some(mv); [INFO] [stdout] 267 | } [INFO] [stdout] 268 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | return (best_move, val); [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] 285 - return (best_move, val); [INFO] [stdout] 285 + (best_move, val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:298:5 [INFO] [stdout] | [INFO] [stdout] 298 | return false; [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] 298 - return false; [INFO] [stdout] 298 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:316:9 [INFO] [stdout] | [INFO] [stdout] 316 | return *good_moves.choose(&mut rng).unwrap(); [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] 316 - return *good_moves.choose(&mut rng).unwrap(); [INFO] [stdout] 316 + *good_moves.choose(&mut rng).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | return *moves.choose(&mut rng).unwrap(); [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 *moves.choose(&mut rng).unwrap(); [INFO] [stdout] 318 + *moves.choose(&mut rng).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:315:8 [INFO] [stdout] | [INFO] [stdout] 315 | if good_moves.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!good_moves.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/move_search/search.rs:326:5 [INFO] [stdout] | [INFO] [stdout] 326 | return *moves.choose(&mut rng).unwrap(); [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] 326 - return *moves.choose(&mut rng).unwrap(); [INFO] [stdout] 326 + *moves.choose(&mut rng).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/endgame.rs:107:44 [INFO] [stdout] | [INFO] [stdout] 107 | ... if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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/move_search/endgame.rs:146:59 [INFO] [stdout] | [INFO] [stdout] 146 | ... } else if results[(DRAW + 1) as usize].len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!results[(DRAW + 1) as usize].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/position/basic_types.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | return None; [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] 91 - return None; [INFO] [stdout] 91 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/eval.rs:154:9 [INFO] [stdout] | [INFO] [stdout] 154 | return eval_material(&self) + eval_pos; [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] 154 - return eval_material(&self) + eval_pos; [INFO] [stdout] 154 + eval_material(&self) + eval_pos [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/position/basic_types.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | / for &coord in COORDS.iter() { [INFO] [stdout] 87 | | if coord == s { [INFO] [stdout] 88 | | return Some(coord); [INFO] [stdout] ... | [INFO] [stdout] 91 | | return None; [INFO] [stdout] | |________________^ help: replace with an iterator: `COORDS.iter().find(|&&coord| coord == s).copied().map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` 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/move_search/eval.rs:149:48 [INFO] [stdout] | [INFO] [stdout] 149 | let eval_pos = 0.01 * eval_positioning(&self) as f64; [INFO] [stdout] | ^^^^^ help: change this to: `self` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/move_search/eval.rs:154:30 [INFO] [stdout] | [INFO] [stdout] 154 | return eval_material(&self) + eval_pos; [INFO] [stdout] | ^^^^^ help: change this to: `self` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:20:8 [INFO] [stdout] | [INFO] [stdout] 20 | if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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] --> src/move_search/search.rs:60:5 [INFO] [stdout] | [INFO] [stdout] 60 | return (best_move, val); [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] 60 - return (best_move, val); [INFO] [stdout] 60 + (best_move, val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:93:8 [INFO] [stdout] | [INFO] [stdout] 93 | if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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/move_search/search.rs:142:5 [INFO] [stdout] | [INFO] [stdout] 142 | return (best_move, val); [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] 142 - return (best_move, val); [INFO] [stdout] 142 + (best_move, val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | return (best_move, best_val); [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] 179 - return (best_move, best_val); [INFO] [stdout] 179 + (best_move, best_val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | assert!(0 <= row && row < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | assert!(0 <= col && col < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:128:31 [INFO] [stdout] | [INFO] [stdout] 128 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 128 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:135:13 [INFO] [stdout] | [INFO] [stdout] 135 | assert!(0 <= row && row < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:136:13 [INFO] [stdout] | [INFO] [stdout] 136 | assert!(0 <= col && col < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:143:31 [INFO] [stdout] | [INFO] [stdout] 143 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:143:8 [INFO] [stdout] | [INFO] [stdout] 143 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/position/basic_types.rs:150:21 [INFO] [stdout] | [INFO] [stdout] 150 | let col = match coord.chars().nth(0).unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `coord.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/position/basic_types.rs:173:21 [INFO] [stdout] | [INFO] [stdout] 173 | let col = match coord.chars().nth(0).unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `coord.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/basic_types.rs:222:5 [INFO] [stdout] | [INFO] [stdout] 222 | return intmove; [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] 222 - return intmove; [INFO] [stdout] 222 + intmove [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:231:8 [INFO] [stdout] | [INFO] [stdout] 231 | if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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: this `if` statement can be collapsed [INFO] [stdout] --> src/move_search/search.rs:263:9 [INFO] [stdout] | [INFO] [stdout] 263 | / if val > alpha { [INFO] [stdout] 264 | | if level == 0 { [INFO] [stdout] 265 | | unsafe { [INFO] [stdout] 266 | | BEST_MOVE = Some(mv); [INFO] [stdout] ... | [INFO] [stdout] 269 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 263 ~ if val > alpha [INFO] [stdout] 264 ~ && level == 0 { [INFO] [stdout] 265 | unsafe { [INFO] [stdout] 266 | BEST_MOVE = Some(mv); [INFO] [stdout] 267 | } [INFO] [stdout] 268 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | return (best_move, val); [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] 285 - return (best_move, val); [INFO] [stdout] 285 + (best_move, val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/basic_types.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | return (src, dest, promote_to); [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] 285 - return (src, dest, promote_to); [INFO] [stdout] 285 + (src, dest, promote_to) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:298:5 [INFO] [stdout] | [INFO] [stdout] 298 | return false; [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] 298 - return false; [INFO] [stdout] 298 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:316:9 [INFO] [stdout] | [INFO] [stdout] 316 | return *good_moves.choose(&mut rng).unwrap(); [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] 316 - return *good_moves.choose(&mut rng).unwrap(); [INFO] [stdout] 316 + *good_moves.choose(&mut rng).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/move_search/search.rs:318:9 [INFO] [stdout] | [INFO] [stdout] 318 | return *moves.choose(&mut rng).unwrap(); [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 *moves.choose(&mut rng).unwrap(); [INFO] [stdout] 318 + *moves.choose(&mut rng).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/search.rs:315:8 [INFO] [stdout] | [INFO] [stdout] 315 | if good_moves.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!good_moves.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/move_search/search.rs:326:5 [INFO] [stdout] | [INFO] [stdout] 326 | return *moves.choose(&mut rng).unwrap(); [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] 326 - return *moves.choose(&mut rng).unwrap(); [INFO] [stdout] 326 + *moves.choose(&mut rng).unwrap() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `piece` is only used to index `HASH_BOARD` [INFO] [stdout] --> src/position/board.rs:33:22 [INFO] [stdout] | [INFO] [stdout] 33 | for piece in 0..13 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 33 - for piece in 0..13 { [INFO] [stdout] 33 + for in &mut HASH_BOARD { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `HASH_BOARD` [INFO] [stdout] --> src/position/board.rs:34:22 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..128 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..128 { [INFO] [stdout] 34 + for in &mut HASH_BOARD { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/endgame.rs:107:44 [INFO] [stdout] | [INFO] [stdout] 107 | ... if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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 loop variable `side` is only used to index `HASH_CASTLING` [INFO] [stdout] --> src/position/board.rs:41:25 [INFO] [stdout] | [INFO] [stdout] 41 | for side in 0..2 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 41 - for side in 0..2 { [INFO] [stdout] 41 + for in &mut HASH_CASTLING { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `HASH_EN_PASSANT` [INFO] [stdout] --> src/position/board.rs:46:18 [INFO] [stdout] | [INFO] [stdout] 46 | for i in 0..128 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 46 - for i in 0..128 { [INFO] [stdout] 46 + for in &mut HASH_EN_PASSANT { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/move_search/endgame.rs:146:59 [INFO] [stdout] | [INFO] [stdout] 146 | ... } else if results[(DRAW + 1) as usize].len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!results[(DRAW + 1) as usize].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/position/basic_types.rs:91:5 [INFO] [stdout] | [INFO] [stdout] 91 | return None; [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] 91 - return None; [INFO] [stdout] 91 + None [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `Iterator::find` [INFO] [stdout] --> src/position/basic_types.rs:86:5 [INFO] [stdout] | [INFO] [stdout] 86 | / for &coord in COORDS.iter() { [INFO] [stdout] 87 | | if coord == s { [INFO] [stdout] 88 | | return Some(coord); [INFO] [stdout] ... | [INFO] [stdout] 91 | | return None; [INFO] [stdout] | |________________^ help: replace with an iterator: `COORDS.iter().find(|&&coord| coord == s).copied().map(|v| v as _)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_find [INFO] [stdout] = note: `#[warn(clippy::manual_find)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/position/board.rs:204:12 [INFO] [stdout] | [INFO] [stdout] 204 | if castle_str == "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `castle_str.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/board.rs:224:17 [INFO] [stdout] | [INFO] [stdout] 224 | return &self.board[index]; [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] 224 - return &self.board[index]; [INFO] [stdout] 224 + &self.board[index] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:121:13 [INFO] [stdout] | [INFO] [stdout] 121 | assert!(0 <= row && row < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] = note: `#[warn(clippy::manual_range_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:122:13 [INFO] [stdout] | [INFO] [stdout] 122 | assert!(0 <= col && col < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:128:31 [INFO] [stdout] | [INFO] [stdout] 128 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 128 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:135:13 [INFO] [stdout] | [INFO] [stdout] 135 | assert!(0 <= row && row < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:136:13 [INFO] [stdout] | [INFO] [stdout] 136 | assert!(0 <= col && col < 8); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:143:31 [INFO] [stdout] | [INFO] [stdout] 143 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&col)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `!Range::contains` implementation [INFO] [stdout] --> src/position/basic_types.rs:143:8 [INFO] [stdout] | [INFO] [stdout] 143 | if 0 > row || row >= 8 || 0 > col || col >= 8 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: use: `!(0..8).contains(&row)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/position/basic_types.rs:150:21 [INFO] [stdout] | [INFO] [stdout] 150 | let col = match coord.chars().nth(0).unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `coord.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] = note: `#[warn(clippy::iter_nth_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `prev_en_passant_flag` after checking its variant with `is_some` [INFO] [stdout] --> src/position/make_move.rs:95:27 [INFO] [stdout] | [INFO] [stdout] 94 | if piece == Piece::Pawn && prev_en_passant_flag.is_some() { [INFO] [stdout] | ------------------------------ the check is happening here [INFO] [stdout] 95 | let ep_dest = prev_en_passant_flag.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [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 `.nth(0)` on a `std::iter::Iterator`, when `.next()` is equivalent [INFO] [stdout] --> src/position/basic_types.rs:173:21 [INFO] [stdout] | [INFO] [stdout] 173 | let col = match coord.chars().nth(0).unwrap() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try calling `.next()` instead of `.nth(0)`: `coord.chars().next()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_nth_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/basic_types.rs:222:5 [INFO] [stdout] | [INFO] [stdout] 222 | return intmove; [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] 222 - return intmove; [INFO] [stdout] 222 + intmove [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `[[bool; 2]; 2]` which implements the `Copy` trait [INFO] [stdout] --> src/position/make_move.rs:40:34 [INFO] [stdout] | [INFO] [stdout] 40 | self.castling_stack.push(self.castle_rights.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.castle_rights` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/basic_types.rs:285:5 [INFO] [stdout] | [INFO] [stdout] 285 | return (src, dest, promote_to); [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] 285 - return (src, dest, promote_to); [INFO] [stdout] 285 + (src, dest, promote_to) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `piece` is only used to index `HASH_BOARD` [INFO] [stdout] --> src/position/board.rs:33:22 [INFO] [stdout] | [INFO] [stdout] 33 | for piece in 0..13 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 33 - for piece in 0..13 { [INFO] [stdout] 33 + for in &mut HASH_BOARD { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/position/move_gen.rs:129:28 [INFO] [stdout] | [INFO] [stdout] 129 | if en_passant_ok [INFO] [stdout] | ____________________________^ [INFO] [stdout] 130 | | || (!en_passant_ok [INFO] [stdout] 131 | | && dest_piece != EMPTY [INFO] [stdout] 132 | | && boardcell_player(dest_piece) != color) [INFO] [stdout] | |_________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 129 - if en_passant_ok [INFO] [stdout] 130 - || (!en_passant_ok [INFO] [stdout] 131 - && dest_piece != EMPTY [INFO] [stdout] 132 - && boardcell_player(dest_piece) != color) [INFO] [stdout] 129 + if (boardcell_player(dest_piece) != color || en_passant_ok) && (dest_piece != EMPTY || en_passant_ok) [INFO] [stdout] | [INFO] [stdout] 129 - if en_passant_ok [INFO] [stdout] 130 - || (!en_passant_ok [INFO] [stdout] 131 - && dest_piece != EMPTY [INFO] [stdout] 132 - && boardcell_player(dest_piece) != color) [INFO] [stdout] 129 + if en_passant_ok || dest_piece != EMPTY && boardcell_player(dest_piece) != color [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/position/move_gen.rs:98:38 [INFO] [stdout] | [INFO] [stdout] 98 | Player::White => 16 <= src && src <= 23, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `(16..=23).contains(&src)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/position/move_gen.rs:99:38 [INFO] [stdout] | [INFO] [stdout] 99 | Player::Black => 96 <= src && src <= 103, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(96..=103).contains(&src)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `HASH_BOARD` [INFO] [stdout] --> src/position/board.rs:34:22 [INFO] [stdout] | [INFO] [stdout] 34 | for i in 0..128 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 34 - for i in 0..128 { [INFO] [stdout] 34 + for in &mut HASH_BOARD { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `side` is only used to index `HASH_CASTLING` [INFO] [stdout] --> src/position/board.rs:41:25 [INFO] [stdout] | [INFO] [stdout] 41 | for side in 0..2 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 41 - for side in 0..2 { [INFO] [stdout] 41 + for in &mut HASH_CASTLING { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `HASH_EN_PASSANT` [INFO] [stdout] --> src/position/board.rs:46:18 [INFO] [stdout] | [INFO] [stdout] 46 | for i in 0..128 { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 46 - for i in 0..128 { [INFO] [stdout] 46 + for in &mut HASH_EN_PASSANT { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/position/move_gen.rs:216:13 [INFO] [stdout] | [INFO] [stdout] 216 | / if player_piece != EMPTY { [INFO] [stdout] 217 | | if boardcell_player(player_piece) == color { [INFO] [stdout] 218 | | self.generate_moves_from( [INFO] [stdout] 219 | | index, [INFO] [stdout] ... | [INFO] [stdout] 224 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 216 ~ if player_piece != EMPTY [INFO] [stdout] 217 ~ && boardcell_player(player_piece) == color { [INFO] [stdout] 218 | self.generate_moves_from( [INFO] [stdout] ... [INFO] [stdout] 222 | &mut all_moves); [INFO] [stdout] 223 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/move_gen.rs:299:9 [INFO] [stdout] | [INFO] [stdout] 299 | return false; [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] 299 - return false; [INFO] [stdout] 299 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/position/board.rs:204:12 [INFO] [stdout] | [INFO] [stdout] 204 | if castle_str == "" { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `castle_str.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/board.rs:224:17 [INFO] [stdout] | [INFO] [stdout] 224 | return &self.board[index]; [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] 224 - return &self.board[index]; [INFO] [stdout] 224 + &self.board[index] [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/move_gen.rs:359:9 [INFO] [stdout] | [INFO] [stdout] 359 | 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 359 - return true; [INFO] [stdout] 359 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/position/move_gen.rs:383:9 [INFO] [stdout] | [INFO] [stdout] 383 | self.legal_moves().len() == 0 && self.is_king_in_check(self.to_move) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.legal_moves().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/position/move_gen.rs:387:9 [INFO] [stdout] | [INFO] [stdout] 387 | self.legal_moves().len() == 0 && !self.is_king_in_check(self.to_move) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.legal_moves().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: parameter is only used in recursion [INFO] [stdout] --> src/position/perft.rs:13:41 [INFO] [stdout] | [INFO] [stdout] 13 | fn perft_immutable_iter(depth: u32, level: u32, mut pos: Position) -> u32 { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/position/perft.rs:32:65 [INFO] [stdout] | [INFO] [stdout] 32 | result += Position::perft_immutable_iter(depth - 1, level + 1, pos2); [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/position/perft.rs:99:39 [INFO] [stdout] | [INFO] [stdout] 99 | fn perft_mutable_iter(depth: u32, level: u32, pos: &mut Position) -> u64 { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/position/perft.rs:117:63 [INFO] [stdout] | [INFO] [stdout] 117 | result += Position::perft_mutable_iter(depth - 1, level + 1, pos); [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/move_search/endgame.rs:83:21 [INFO] [stdout] | [INFO] [stdout] 83 | let mut stats = vec![0; 3]; [INFO] [stdout] | ^^^^^^^^^^ help: you can use an array directly: `[0; 3]` [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] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/position/parser.rs:207:31 [INFO] [stdout] | [INFO] [stdout] 207 | assert_eq!(ep.map(|c|coord2index(c)), pos.en_passant); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `coord2index` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `prev_en_passant_flag` after checking its variant with `is_some` [INFO] [stdout] --> src/position/make_move.rs:95:27 [INFO] [stdout] | [INFO] [stdout] 94 | if piece == Piece::Pawn && prev_en_passant_flag.is_some() { [INFO] [stdout] | ------------------------------ the check is happening here [INFO] [stdout] 95 | let ep_dest = prev_en_passant_flag.unwrap(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: try using `match` [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: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/position/board.rs:143:19 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn fields(&self) -> slice::Iter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 143 | pub fn fields(&self) -> slice::Iter<'_, BoardCell> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `[[bool; 2]; 2]` which implements the `Copy` trait [INFO] [stdout] --> src/position/make_move.rs:40:34 [INFO] [stdout] | [INFO] [stdout] 40 | self.castling_stack.push(self.castle_rights.clone()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.castle_rights` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/position/move_gen.rs:129:28 [INFO] [stdout] | [INFO] [stdout] 129 | if en_passant_ok [INFO] [stdout] | ____________________________^ [INFO] [stdout] 130 | | || (!en_passant_ok [INFO] [stdout] 131 | | && dest_piece != EMPTY [INFO] [stdout] 132 | | && boardcell_player(dest_piece) != color) [INFO] [stdout] | |_________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 129 - if en_passant_ok [INFO] [stdout] 130 - || (!en_passant_ok [INFO] [stdout] 131 - && dest_piece != EMPTY [INFO] [stdout] 132 - && boardcell_player(dest_piece) != color) [INFO] [stdout] 129 + if (boardcell_player(dest_piece) != color || en_passant_ok) && (dest_piece != EMPTY || en_passant_ok) [INFO] [stdout] | [INFO] [stdout] 129 - if en_passant_ok [INFO] [stdout] 130 - || (!en_passant_ok [INFO] [stdout] 131 - && dest_piece != EMPTY [INFO] [stdout] 132 - && boardcell_player(dest_piece) != color) [INFO] [stdout] 129 + if en_passant_ok || dest_piece != EMPTY && boardcell_player(dest_piece) != color [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/position/move_gen.rs:98:38 [INFO] [stdout] | [INFO] [stdout] 98 | Player::White => 16 <= src && src <= 23, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `(16..=23).contains(&src)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual `RangeInclusive::contains` implementation [INFO] [stdout] --> src/position/move_gen.rs:99:38 [INFO] [stdout] | [INFO] [stdout] 99 | Player::Black => 96 <= src && src <= 103, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(96..=103).contains(&src)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_range_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/position/move_gen.rs:216:13 [INFO] [stdout] | [INFO] [stdout] 216 | / if player_piece != EMPTY { [INFO] [stdout] 217 | | if boardcell_player(player_piece) == color { [INFO] [stdout] 218 | | self.generate_moves_from( [INFO] [stdout] 219 | | index, [INFO] [stdout] ... | [INFO] [stdout] 224 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 216 ~ if player_piece != EMPTY [INFO] [stdout] 217 ~ && boardcell_player(player_piece) == color { [INFO] [stdout] 218 | self.generate_moves_from( [INFO] [stdout] ... [INFO] [stdout] 222 | &mut all_moves); [INFO] [stdout] 223 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/move_gen.rs:299:9 [INFO] [stdout] | [INFO] [stdout] 299 | return false; [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] 299 - return false; [INFO] [stdout] 299 + false [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/position/move_gen.rs:359:9 [INFO] [stdout] | [INFO] [stdout] 359 | 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 359 - return true; [INFO] [stdout] 359 + true [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/position/move_gen.rs:383:9 [INFO] [stdout] | [INFO] [stdout] 383 | self.legal_moves().len() == 0 && self.is_king_in_check(self.to_move) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.legal_moves().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/position/move_gen.rs:387:9 [INFO] [stdout] | [INFO] [stdout] 387 | self.legal_moves().len() == 0 && !self.is_king_in_check(self.to_move) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.legal_moves().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: parameter is only used in recursion [INFO] [stdout] --> src/position/perft.rs:13:41 [INFO] [stdout] | [INFO] [stdout] 13 | fn perft_immutable_iter(depth: u32, level: u32, mut pos: Position) -> u32 { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/position/perft.rs:32:65 [INFO] [stdout] | [INFO] [stdout] 32 | result += Position::perft_immutable_iter(depth - 1, level + 1, pos2); [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] = note: `#[warn(clippy::only_used_in_recursion)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: parameter is only used in recursion [INFO] [stdout] --> src/position/perft.rs:99:39 [INFO] [stdout] | [INFO] [stdout] 99 | fn perft_mutable_iter(depth: u32, level: u32, pos: &mut Position) -> u64 { [INFO] [stdout] | ^^^^^ help: if this is intentional, prefix it with an underscore: `_level` [INFO] [stdout] | [INFO] [stdout] note: parameter used here [INFO] [stdout] --> src/position/perft.rs:117:63 [INFO] [stdout] | [INFO] [stdout] 117 | result += Position::perft_mutable_iter(depth - 1, level + 1, pos); [INFO] [stdout] | ^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#only_used_in_recursion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/move_search/endgame.rs:83:21 [INFO] [stdout] | [INFO] [stdout] 83 | let mut stats = vec![0; 3]; [INFO] [stdout] | ^^^^^^^^^^ help: you can use an array directly: `[0; 3]` [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] [INFO] [stdout] [INFO] [stdout] warning: hiding a lifetime that's elided elsewhere is confusing [INFO] [stdout] --> src/position/board.rs:143:19 [INFO] [stdout] | [INFO] [stdout] 143 | pub fn fields(&self) -> slice::Iter { [INFO] [stdout] | ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ the same lifetime is hidden here [INFO] [stdout] | | [INFO] [stdout] | the lifetime is elided here [INFO] [stdout] | [INFO] [stdout] = help: the same lifetime is referred to in inconsistent ways, making the signature confusing [INFO] [stdout] = note: `#[warn(mismatched_lifetime_syntaxes)]` on by default [INFO] [stdout] help: use `'_` for type paths [INFO] [stdout] | [INFO] [stdout] 143 | pub fn fields(&self) -> slice::Iter<'_, BoardCell> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/cmp_search_alg.rs:18:23 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn evaluation(self: &Self, pos: &mut Position, depth: i32) -> (IntMove, f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 18 - pub fn evaluation(self: &Self, pos: &mut Position, depth: i32) -> (IntMove, f64) { [INFO] [stdout] 18 + pub fn evaluation(&self, pos: &mut Position, depth: i32) -> (IntMove, f64) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/cmp_search_alg.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn name(self: &Self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 34 - pub fn name(self: &Self) -> String { [INFO] [stdout] 34 + pub fn name(&self) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/bin/perft.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | .map(|s| s.parse().ok()) [INFO] [stdout] | __________^ [INFO] [stdout] 11 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|s| s.parse().ok())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PVS` contains a capitalized acronym [INFO] [stdout] --> src/bin/cmp_search_alg.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | PVS, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Pvs` [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: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:37:17 [INFO] [stdout] | [INFO] [stdout] 37 | format!("Negamax"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Negamax".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:39:17 [INFO] [stdout] | [INFO] [stdout] 39 | format!("AlphaBeta"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"AlphaBeta".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | format!("AlphaBeta ItD"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"AlphaBeta ItD".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:43:16 [INFO] [stdout] | [INFO] [stdout] 43 | format!("PVS"), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"PVS".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/bin/bot.rs:73:34 [INFO] [stdout] | [INFO] [stdout] 73 | } else if line == "quit" { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 74 | | break; [INFO] [stdout] 75 | | } else if line == "stop" { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/bin/bot.rs:75:34 [INFO] [stdout] | [INFO] [stdout] 75 | } else if line == "stop" { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 76 | | break; [INFO] [stdout] 77 | | } else if line.starts_with("position") { [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/bin/bot.rs:124:16 [INFO] [stdout] | [INFO] [stdout] 124 | if line != "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/cmp_search_alg.rs:18:23 [INFO] [stdout] | [INFO] [stdout] 18 | pub fn evaluation(self: &Self, pos: &mut Position, depth: i32) -> (IntMove, f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 18 - pub fn evaluation(self: &Self, pos: &mut Position, depth: i32) -> (IntMove, f64) { [INFO] [stdout] 18 + pub fn evaluation(&self, pos: &mut Position, depth: i32) -> (IntMove, f64) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/cmp_search_alg.rs:34:17 [INFO] [stdout] | [INFO] [stdout] 34 | pub fn name(self: &Self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 34 - pub fn name(self: &Self) -> String { [INFO] [stdout] 34 + pub fn name(&self) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/endgame.rs:154:44 [INFO] [stdout] | [INFO] [stdout] 154 | ... if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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/bin/endgame.rs:193:59 [INFO] [stdout] | [INFO] [stdout] 193 | ... } else if results[(DRAW + 1) as usize].len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!results[(DRAW + 1) as usize].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: useless use of `vec!` [INFO] [stdout] --> src/bin/endgame.rs:126:21 [INFO] [stdout] | [INFO] [stdout] 126 | let mut stats = vec![0; 3]; [INFO] [stdout] | ^^^^^^^^^^ help: you can use an array directly: `[0; 3]` [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] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/bin/endgame.rs:154:44 [INFO] [stdout] | [INFO] [stdout] 154 | ... if moves.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `moves.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/bin/endgame.rs:193:59 [INFO] [stdout] | [INFO] [stdout] 193 | ... } else if results[(DRAW + 1) as usize].len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!results[(DRAW + 1) as usize].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: useless use of `vec!` [INFO] [stdout] --> src/bin/endgame.rs:126:21 [INFO] [stdout] | [INFO] [stdout] 126 | let mut stats = vec![0; 3]; [INFO] [stdout] | ^^^^^^^^^^ help: you can use an array directly: `[0; 3]` [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] [INFO] [stdout] [INFO] [stdout] warning: name `PVS` contains a capitalized acronym [INFO] [stdout] --> src/bin/cmp_search_alg.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | PVS, [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Pvs` [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: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:37:17 [INFO] [stdout] | [INFO] [stdout] 37 | format!("Negamax"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"Negamax".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:39:17 [INFO] [stdout] | [INFO] [stdout] 39 | format!("AlphaBeta"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"AlphaBeta".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:41:17 [INFO] [stdout] | [INFO] [stdout] 41 | format!("AlphaBeta ItD"), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"AlphaBeta ItD".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> src/bin/cmp_search_alg.rs:43:16 [INFO] [stdout] | [INFO] [stdout] 43 | format!("PVS"), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider using `.to_string()`: `"PVS".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/benchmark.rs:13:21 [INFO] [stdout] | [INFO] [stdout] 13 | pub fn bestmove(self: &Self, pos: &mut Position) -> (IntMove, f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 13 - pub fn bestmove(self: &Self, pos: &mut Position) -> (IntMove, f64) { [INFO] [stdout] 13 + pub fn bestmove(&self, pos: &mut Position) -> (IntMove, f64) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/benchmark.rs:26:17 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn name(self: &Self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 26 - pub fn name(self: &Self) -> String { [INFO] [stdout] 26 + pub fn name(&self) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PVS` contains a capitalized acronym [INFO] [stdout] --> src/bin/benchmark.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | PVS(i32), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Pvs` [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: unused import: `std::env` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::env; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_args` is never used [INFO] [stdout] --> src/main.rs:6:4 [INFO] [stdout] | [INFO] [stdout] 6 | fn parse_args(args: Vec) -> u32 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/main.rs:9:10 [INFO] [stdout] | [INFO] [stdout] 9 | .map(|s| s.parse().ok()) [INFO] [stdout] | __________^ [INFO] [stdout] 10 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|s| s.parse().ok())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` has identical blocks [INFO] [stdout] --> src/bin/bot.rs:73:34 [INFO] [stdout] | [INFO] [stdout] 73 | } else if line == "quit" { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 74 | | break; [INFO] [stdout] 75 | | } else if line == "stop" { [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] note: same as this [INFO] [stdout] --> src/bin/bot.rs:75:34 [INFO] [stdout] | [INFO] [stdout] 75 | } else if line == "stop" { [INFO] [stdout] | __________________________________^ [INFO] [stdout] 76 | | break; [INFO] [stdout] 77 | | } else if line.starts_with("position") { [INFO] [stdout] | |_________^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stdout] = note: `#[warn(clippy::if_same_then_else)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: comparison to empty slice [INFO] [stdout] --> src/bin/bot.rs:124:16 [INFO] [stdout] | [INFO] [stdout] 124 | if line != "" { [INFO] [stdout] | ^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!line.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#comparison_to_empty [INFO] [stdout] = note: `#[warn(clippy::comparison_to_empty)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::env` [INFO] [stdout] --> src/main.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::env; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_args` is never used [INFO] [stdout] --> src/main.rs:6:4 [INFO] [stdout] | [INFO] [stdout] 6 | fn parse_args(args: Vec) -> u32 { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/main.rs:9:10 [INFO] [stdout] | [INFO] [stdout] 9 | .map(|s| s.parse().ok()) [INFO] [stdout] | __________^ [INFO] [stdout] 10 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|s| s.parse().ok())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/benchmark.rs:13:21 [INFO] [stdout] | [INFO] [stdout] 13 | pub fn bestmove(self: &Self, pos: &mut Position) -> (IntMove, f64) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] = note: `#[warn(clippy::needless_arbitrary_self_type)]` on by default [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 13 - pub fn bestmove(self: &Self, pos: &mut Position) -> (IntMove, f64) { [INFO] [stdout] 13 + pub fn bestmove(&self, pos: &mut Position) -> (IntMove, f64) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the type of the `self` parameter does not need to be arbitrary [INFO] [stdout] --> src/bin/benchmark.rs:26:17 [INFO] [stdout] | [INFO] [stdout] 26 | pub fn name(self: &Self) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_arbitrary_self_type [INFO] [stdout] help: remove the type [INFO] [stdout] | [INFO] [stdout] 26 - pub fn name(self: &Self) -> String { [INFO] [stdout] 26 + pub fn name(&self) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Option` [INFO] [stdout] --> src/bin/perft.rs:10:10 [INFO] [stdout] | [INFO] [stdout] 10 | .map(|s| s.parse().ok()) [INFO] [stdout] | __________^ [INFO] [stdout] 11 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `and_then` and remove the `.flatten()`: `and_then(|s| s.parse().ok())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: name `PVS` contains a capitalized acronym [INFO] [stdout] --> src/bin/benchmark.rs:9:5 [INFO] [stdout] | [INFO] [stdout] 9 | PVS(i32), [INFO] [stdout] | ^^^ help: consider making the acronym lowercase, except the initial letter (notice the capitalization): `Pvs` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> tests/test_moves.rs:410:13 [INFO] [stdout] | [INFO] [stdout] 410 | assert_eq!(false, pos.is_king_in_check(player)); [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] 410 - assert_eq!(false, pos.is_king_in_check(player)); [INFO] [stdout] 410 + assert!(!pos.is_king_in_check(player)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> tests/test_moves.rs:426:13 [INFO] [stdout] | [INFO] [stdout] 426 | assert_eq!(true, pos.is_king_in_check(player)); [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] 426 - assert_eq!(true, pos.is_king_in_check(player)); [INFO] [stdout] 426 + assert!(pos.is_king_in_check(player)); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.09s [INFO] running `Command { std: "docker" "inspect" "d71466298d9305600417074ca89de15a467bc5f2472be37043c2df17f360a041", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "d71466298d9305600417074ca89de15a467bc5f2472be37043c2df17f360a041", kill_on_drop: false }` [INFO] [stdout] d71466298d9305600417074ca89de15a467bc5f2472be37043c2df17f360a041