[INFO] crate shogi 0.7.0 is already in cache [INFO] extracting crate shogi 0.7.0 into work/ex/clippy-test-run/sources/stable/reg/shogi/0.7.0 [INFO] extracting crate shogi 0.7.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/shogi/0.7.0 [INFO] validating manifest of shogi-0.7.0 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 shogi-0.7.0 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 shogi-0.7.0 [INFO] finished frobbing shogi-0.7.0 [INFO] frobbed toml for shogi-0.7.0 written to work/ex/clippy-test-run/sources/stable/reg/shogi/0.7.0/Cargo.toml [INFO] started frobbing shogi-0.7.0 [INFO] finished frobbing shogi-0.7.0 [INFO] frobbed toml for shogi-0.7.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/shogi/0.7.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting shogi-0.7.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/shogi/0.7.0:/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] 7c1425944cf885fd4a21cffe329706115a0c573e254d4bd35872ca490eed47e9 [INFO] running `"docker" "start" "-a" "7c1425944cf885fd4a21cffe329706115a0c573e254d4bd35872ca490eed47e9"` [INFO] [stderr] warning: `panic` setting is ignored for `test` profile [INFO] [stderr] warning: `panic` setting is ignored for `bench` profile [INFO] [stderr] Compiling bitintr v0.1.18 [INFO] [stderr] Checking shogi v0.7.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | from: from, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:30:25 [INFO] [stderr] | [INFO] [stderr] 30 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:31:25 [INFO] [stderr] | [INFO] [stderr] 31 | promote: promote, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `promote` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:41:25 [INFO] [stderr] | [INFO] [stderr] 41 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/piece.rs:23:17 [INFO] [stderr] | [INFO] [stderr] 23 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | from: from, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:377:13 [INFO] [stderr] | [INFO] [stderr] 377 | moved: moved, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `moved` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:378:13 [INFO] [stderr] | [INFO] [stderr] 378 | captured: captured, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `captured` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:469:13 [INFO] [stderr] | [INFO] [stderr] 469 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:898:21 [INFO] [stderr] | [INFO] [stderr] 898 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | from: from, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:30:25 [INFO] [stderr] | [INFO] [stderr] 30 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:31:25 [INFO] [stderr] | [INFO] [stderr] 31 | promote: promote, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `promote` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/moves.rs:41:25 [INFO] [stderr] | [INFO] [stderr] 41 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/piece.rs:23:17 [INFO] [stderr] | [INFO] [stderr] 23 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | from: from, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:376:13 [INFO] [stderr] | [INFO] [stderr] 376 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:377:13 [INFO] [stderr] | [INFO] [stderr] 377 | moved: moved, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `moved` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:378:13 [INFO] [stderr] | [INFO] [stderr] 378 | captured: captured, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `captured` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:469:13 [INFO] [stderr] | [INFO] [stderr] 469 | to: to, [INFO] [stderr] | ^^^^^^ help: replace it with: `to` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/position.rs:898:21 [INFO] [stderr] | [INFO] [stderr] 898 | color: color, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `color` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bitboard/factory.rs:101:42 [INFO] [stderr] | [INFO] [stderr] 101 | const FULL_BB: Bitboard = Bitboard { p: [0x7fffffffffffffff, 0x000000000003ffff] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x7fff_ffff_ffff_ffff` [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/bitboard/factory.rs:101:62 [INFO] [stderr] | [INFO] [stderr] 101 | const FULL_BB: Bitboard = Bitboard { p: [0x7fffffffffffffff, 0x000000000003ffff] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0000_0000_0003_ffff` [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/bitboard/factory.rs:115:43 [INFO] [stderr] | [INFO] [stderr] 115 | const RANK1_BB: Bitboard = Bitboard { p: [0x40201008040201 << 0, 0x201 << 0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:116:43 [INFO] [stderr] | [INFO] [stderr] 116 | const RANK2_BB: Bitboard = Bitboard { p: [0x40201008040201 << 1, 0x201 << 1] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:117:43 [INFO] [stderr] | [INFO] [stderr] 117 | const RANK3_BB: Bitboard = Bitboard { p: [0x40201008040201 << 2, 0x201 << 2] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:118:43 [INFO] [stderr] | [INFO] [stderr] 118 | const RANK4_BB: Bitboard = Bitboard { p: [0x40201008040201 << 3, 0x201 << 3] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:119:43 [INFO] [stderr] | [INFO] [stderr] 119 | const RANK5_BB: Bitboard = Bitboard { p: [0x40201008040201 << 4, 0x201 << 4] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:120:43 [INFO] [stderr] | [INFO] [stderr] 120 | const RANK6_BB: Bitboard = Bitboard { p: [0x40201008040201 << 5, 0x201 << 5] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:121:43 [INFO] [stderr] | [INFO] [stderr] 121 | const RANK7_BB: Bitboard = Bitboard { p: [0x40201008040201 << 6, 0x201 << 6] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:122:43 [INFO] [stderr] | [INFO] [stderr] 122 | const RANK8_BB: Bitboard = Bitboard { p: [0x40201008040201 << 7, 0x201 << 7] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:123:43 [INFO] [stderr] | [INFO] [stderr] 123 | const RANK9_BB: Bitboard = Bitboard { p: [0x40201008040201 << 8, 0x201 << 8] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:168:39 [INFO] [stderr] | [INFO] [stderr] 168 | static mut ROOK_ATTACK_BB: [Bitboard; 495616] = [Bitboard { p: [0, 0] }; 495616]; [INFO] [stderr] | ^^^^^^ help: consider: `495_616` [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/bitboard/factory.rs:168:74 [INFO] [stderr] | [INFO] [stderr] 168 | static mut ROOK_ATTACK_BB: [Bitboard; 495616] = [Bitboard { p: [0, 0] }; 495616]; [INFO] [stderr] | ^^^^^^ help: consider: `495_616` [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: unneeded return statement [INFO] [stderr] --> src/position.rs:611:9 [INFO] [stderr] | [INFO] [stderr] 611 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/bitboard/factory.rs:101:42 [INFO] [stderr] | [INFO] [stderr] 101 | const FULL_BB: Bitboard = Bitboard { p: [0x7fffffffffffffff, 0x000000000003ffff] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x7fff_ffff_ffff_ffff` [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/bitboard/factory.rs:101:62 [INFO] [stderr] | [INFO] [stderr] 101 | const FULL_BB: Bitboard = Bitboard { p: [0x7fffffffffffffff, 0x000000000003ffff] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0x0000_0000_0003_ffff` [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/bitboard/factory.rs:115:43 [INFO] [stderr] | [INFO] [stderr] 115 | const RANK1_BB: Bitboard = Bitboard { p: [0x40201008040201 << 0, 0x201 << 0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:116:43 [INFO] [stderr] | [INFO] [stderr] 116 | const RANK2_BB: Bitboard = Bitboard { p: [0x40201008040201 << 1, 0x201 << 1] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:117:43 [INFO] [stderr] | [INFO] [stderr] 117 | const RANK3_BB: Bitboard = Bitboard { p: [0x40201008040201 << 2, 0x201 << 2] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:118:43 [INFO] [stderr] | [INFO] [stderr] 118 | const RANK4_BB: Bitboard = Bitboard { p: [0x40201008040201 << 3, 0x201 << 3] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:119:43 [INFO] [stderr] | [INFO] [stderr] 119 | const RANK5_BB: Bitboard = Bitboard { p: [0x40201008040201 << 4, 0x201 << 4] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:120:43 [INFO] [stderr] | [INFO] [stderr] 120 | const RANK6_BB: Bitboard = Bitboard { p: [0x40201008040201 << 5, 0x201 << 5] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:121:43 [INFO] [stderr] | [INFO] [stderr] 121 | const RANK7_BB: Bitboard = Bitboard { p: [0x40201008040201 << 6, 0x201 << 6] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:122:43 [INFO] [stderr] | [INFO] [stderr] 122 | const RANK8_BB: Bitboard = Bitboard { p: [0x40201008040201 << 7, 0x201 << 7] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:123:43 [INFO] [stderr] | [INFO] [stderr] 123 | const RANK9_BB: Bitboard = Bitboard { p: [0x40201008040201 << 8, 0x201 << 8] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider: `0x0040_2010_0804_0201` [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/bitboard/factory.rs:168:39 [INFO] [stderr] | [INFO] [stderr] 168 | static mut ROOK_ATTACK_BB: [Bitboard; 495616] = [Bitboard { p: [0, 0] }; 495616]; [INFO] [stderr] | ^^^^^^ help: consider: `495_616` [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/bitboard/factory.rs:168:74 [INFO] [stderr] | [INFO] [stderr] 168 | static mut ROOK_ATTACK_BB: [Bitboard; 495616] = [Bitboard { p: [0, 0] }; 495616]; [INFO] [stderr] | ^^^^^^ help: consider: `495_616` [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: unneeded return statement [INFO] [stderr] --> src/position.rs:611:9 [INFO] [stderr] | [INFO] [stderr] 611 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/bitboard/mod.rs:215:38 [INFO] [stderr] | [INFO] [stderr] 215 | try!(writeln!(f, " {}", ('a' as u8 + rank) as char)); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/bitboard/mod.rs:240:51 [INFO] [stderr] | [INFO] [stderr] 240 | const SQUARE_BB: [Bitboard; 81] = [Bitboard { p: [1 << 0, 0] }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/bitboard/mod.rs:303:54 [INFO] [stderr] | [INFO] [stderr] 303 | Bitboard { p: [0, 1 << 0] }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x1FF` [INFO] [stderr] --> src/bitboard/factory.rs:103:43 [INFO] [stderr] | [INFO] [stderr] 103 | const FILE1_BB: Bitboard = Bitboard { p: [0x1FF << (9 * 0), 0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/bitboard/factory.rs:103:52 [INFO] [stderr] | [INFO] [stderr] 103 | const FILE1_BB: Bitboard = Bitboard { p: [0x1FF << (9 * 0), 0] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `9` [INFO] [stderr] --> src/bitboard/factory.rs:104:52 [INFO] [stderr] | [INFO] [stderr] 104 | const FILE2_BB: Bitboard = Bitboard { p: [0x1FF << (9 * 1), 0] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x1FF` [INFO] [stderr] --> src/bitboard/factory.rs:110:46 [INFO] [stderr] | [INFO] [stderr] 110 | const FILE8_BB: Bitboard = Bitboard { p: [0, 0x1FF << (9 * 0)] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/bitboard/factory.rs:110:55 [INFO] [stderr] | [INFO] [stderr] 110 | const FILE8_BB: Bitboard = Bitboard { p: [0, 0x1FF << (9 * 0)] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `9` [INFO] [stderr] --> src/bitboard/factory.rs:111:55 [INFO] [stderr] | [INFO] [stderr] 111 | const FILE9_BB: Bitboard = Bitboard { p: [0, 0x1FF << (9 * 1)] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x40201008040201` [INFO] [stderr] --> src/bitboard/factory.rs:115:43 [INFO] [stderr] | [INFO] [stderr] 115 | const RANK1_BB: Bitboard = Bitboard { p: [0x40201008040201 << 0, 0x201 << 0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x201` [INFO] [stderr] --> src/bitboard/factory.rs:115:66 [INFO] [stderr] | [INFO] [stderr] 115 | const RANK1_BB: Bitboard = Bitboard { p: [0x40201008040201 << 0, 0x201 << 0] }; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/bitboard/mod.rs:215:38 [INFO] [stderr] | [INFO] [stderr] 215 | try!(writeln!(f, " {}", ('a' as u8 + rank) as char)); [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/bitboard/mod.rs:240:51 [INFO] [stderr] | [INFO] [stderr] 240 | const SQUARE_BB: [Bitboard; 81] = [Bitboard { p: [1 << 0, 0] }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/bitboard/mod.rs:303:54 [INFO] [stderr] | [INFO] [stderr] 303 | Bitboard { p: [0, 1 << 0] }, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x1FF` [INFO] [stderr] --> src/bitboard/factory.rs:103:43 [INFO] [stderr] | [INFO] [stderr] 103 | const FILE1_BB: Bitboard = Bitboard { p: [0x1FF << (9 * 0), 0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/bitboard/factory.rs:103:52 [INFO] [stderr] | [INFO] [stderr] 103 | const FILE1_BB: Bitboard = Bitboard { p: [0x1FF << (9 * 0), 0] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `9` [INFO] [stderr] --> src/bitboard/factory.rs:104:52 [INFO] [stderr] | [INFO] [stderr] 104 | const FILE2_BB: Bitboard = Bitboard { p: [0x1FF << (9 * 1), 0] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x1FF` [INFO] [stderr] --> src/bitboard/factory.rs:110:46 [INFO] [stderr] | [INFO] [stderr] 110 | const FILE8_BB: Bitboard = Bitboard { p: [0, 0x1FF << (9 * 0)] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/bitboard/factory.rs:110:55 [INFO] [stderr] | [INFO] [stderr] 110 | const FILE8_BB: Bitboard = Bitboard { p: [0, 0x1FF << (9 * 0)] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `9` [INFO] [stderr] --> src/bitboard/factory.rs:111:55 [INFO] [stderr] | [INFO] [stderr] 111 | const FILE9_BB: Bitboard = Bitboard { p: [0, 0x1FF << (9 * 1)] }; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x40201008040201` [INFO] [stderr] --> src/bitboard/factory.rs:115:43 [INFO] [stderr] | [INFO] [stderr] 115 | const RANK1_BB: Bitboard = Bitboard { p: [0x40201008040201 << 0, 0x201 << 0] }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `0x201` [INFO] [stderr] --> src/bitboard/factory.rs:115:66 [INFO] [stderr] | [INFO] [stderr] 115 | const RANK1_BB: Bitboard = Bitboard { p: [0x40201008040201 << 0, 0x201 << 0] }; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/bitboard/factory.rs:191:25 [INFO] [stderr] | [INFO] [stderr] 191 | let mut mask_work = mask.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*mask` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/color.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn flip(&self) -> Color { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/color.rs:49:18 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:26:26 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn get(&self, p: &Piece) -> u8 { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:31:30 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn set(&mut self, p: &Piece, num: u8) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:38:36 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn increment(&mut self, p: &Piece) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:45:36 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn decrement(&mut self, p: &Piece) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | fn index(p: &Piece) -> Option { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:54:20 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn promote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:78:22 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn unpromote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:93:26 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn is_hand_piece(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:103:18 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:41:20 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn promote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:63:22 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn unpromote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | pub fn flip(&self) -> Piece { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:93:28 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn is_placeable_at(&self, sq: Square) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:56:43 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn set(&mut self, sq: Square, pc: &Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:123:27 [INFO] [stderr] | [INFO] [stderr] 123 | pub fn hand(&self, p: &Piece) -> u8 { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/position.rs:249:47 [INFO] [stderr] | [INFO] [stderr] 249 | let sfen = self.generate_sfen().split(" ").take(3).join(" "); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/position.rs:254:30 [INFO] [stderr] | [INFO] [stderr] 254 | let record = self.sfen_history.get(self.sfen_history.len() - 2).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.sfen_history[self.sfen_history.len() - 2]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:272:36 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn make_move(&mut self, m: &Move) -> Result<(), MoveError> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Move` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:383:50 [INFO] [stderr] | [INFO] [stderr] 383 | fn make_drop_move(&mut self, to: Square, pt: &PieceType) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `PieceType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/position.rs:387:16 [INFO] [stderr] | [INFO] [stderr] 387 | if let Some(_) = *self.piece_at(to) { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 388 | | return Err(MoveError::Inconsistent); [INFO] [stderr] 389 | | } [INFO] [stderr] | |_________- help: try this: `if *self.piece_at(to).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/position.rs:430:76 [INFO] [stderr] | [INFO] [stderr] 430 | if self.move_candidates(king_sq, &pc).all(|sq| { [INFO] [stderr] | ____________________________________________________________________________^ [INFO] [stderr] 431 | | if let Some(pc) = *self.piece_at(sq) { [INFO] [stderr] 432 | | if pc.color == opponent { [INFO] [stderr] 433 | | return true; [INFO] [stderr] ... | [INFO] [stderr] 437 | | self.is_attacked_by(sq, stm) [INFO] [stderr] 438 | | }) { [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:564:50 [INFO] [stderr] | [INFO] [stderr] 564 | pub fn move_candidates(&self, sq: Square, p: &Piece) -> Bitboard { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/position.rs:598:32 [INFO] [stderr] | [INFO] [stderr] 598 | let prev = self.sfen_history.get(self.sfen_history.len() - 2).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.sfen_history[self.sfen_history.len() - 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | const ASCII_1: u8 = '1' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'1' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:6:21 [INFO] [stderr] | [INFO] [stderr] 6 | const ASCII_9: u8 = '9' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'9' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:7:27 [INFO] [stderr] | [INFO] [stderr] 7 | const ASCII_LOWER_A: u8 = 'a' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:8:27 [INFO] [stderr] | [INFO] [stderr] 8 | const ASCII_LOWER_I: u8 = 'i' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'i' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn file(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn rank(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:105:18 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn shift(&self, df: i8, dr: i8) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:129:26 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn relative_rank(&self, c: Color) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:138:30 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn in_promotion_zone(&self, c: Color) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:144:18 [INFO] [stderr] | [INFO] [stderr] 144 | pub fn index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/time.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self { [INFO] [stderr] 100 | | &mut TimeControl::Byoyomi { ref mut black_time, ref mut white_time, ref byoyomi } => { [INFO] [stderr] 101 | | let target_time = if c == Color::Black { [INFO] [stderr] 102 | | black_time [INFO] [stderr] ... | [INFO] [stderr] 127 | | } [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 99 | match *self { [INFO] [stderr] 100 | TimeControl::Byoyomi { ref mut black_time, ref mut white_time, ref byoyomi } => { [INFO] [stderr] 101 | let target_time = if c == Color::Black { [INFO] [stderr] 102 | black_time [INFO] [stderr] 103 | } else { [INFO] [stderr] 104 | white_time [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `shogi`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/bitboard/factory.rs:191:25 [INFO] [stderr] | [INFO] [stderr] 191 | let mut mask_work = mask.clone(); [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*mask` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/color.rs:39:17 [INFO] [stderr] | [INFO] [stderr] 39 | pub fn flip(&self) -> Color { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/color.rs:49:18 [INFO] [stderr] | [INFO] [stderr] 49 | pub fn index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:26:26 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn get(&self, p: &Piece) -> u8 { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:31:30 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn set(&mut self, p: &Piece, num: u8) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:38:36 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn increment(&mut self, p: &Piece) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:45:36 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn decrement(&mut self, p: &Piece) { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/hand.rs:58:17 [INFO] [stderr] | [INFO] [stderr] 58 | fn index(p: &Piece) -> Option { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:54:20 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn promote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:78:22 [INFO] [stderr] | [INFO] [stderr] 78 | pub fn unpromote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:93:26 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn is_hand_piece(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece_type.rs:103:18 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:41:20 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn promote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:63:22 [INFO] [stderr] | [INFO] [stderr] 63 | pub fn unpromote(&self) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | pub fn flip(&self) -> Piece { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/piece.rs:93:28 [INFO] [stderr] | [INFO] [stderr] 93 | pub fn is_placeable_at(&self, sq: Square) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:56:43 [INFO] [stderr] | [INFO] [stderr] 56 | pub fn set(&mut self, sq: Square, pc: &Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider passing by value instead: `Option` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:123:27 [INFO] [stderr] | [INFO] [stderr] 123 | pub fn hand(&self, p: &Piece) -> u8 { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/position.rs:249:47 [INFO] [stderr] | [INFO] [stderr] 249 | let sfen = self.generate_sfen().split(" ").take(3).join(" "); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/position.rs:254:30 [INFO] [stderr] | [INFO] [stderr] 254 | let record = self.sfen_history.get(self.sfen_history.len() - 2).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.sfen_history[self.sfen_history.len() - 2]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:272:36 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn make_move(&mut self, m: &Move) -> Result<(), MoveError> { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Move` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:383:50 [INFO] [stderr] | [INFO] [stderr] 383 | fn make_drop_move(&mut self, to: Square, pt: &PieceType) -> Result { [INFO] [stderr] | ^^^^^^^^^^ help: consider passing by value instead: `PieceType` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/position.rs:387:16 [INFO] [stderr] | [INFO] [stderr] 387 | if let Some(_) = *self.piece_at(to) { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 388 | | return Err(MoveError::Inconsistent); [INFO] [stderr] 389 | | } [INFO] [stderr] | |_________- help: try this: `if *self.piece_at(to).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/position.rs:430:76 [INFO] [stderr] | [INFO] [stderr] 430 | if self.move_candidates(king_sq, &pc).all(|sq| { [INFO] [stderr] | ____________________________________________________________________________^ [INFO] [stderr] 431 | | if let Some(pc) = *self.piece_at(sq) { [INFO] [stderr] 432 | | if pc.color == opponent { [INFO] [stderr] 433 | | return true; [INFO] [stderr] ... | [INFO] [stderr] 437 | | self.is_attacked_by(sq, stm) [INFO] [stderr] 438 | | }) { [INFO] [stderr] | |_____________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/position.rs:564:50 [INFO] [stderr] | [INFO] [stderr] 564 | pub fn move_candidates(&self, sq: Square, p: &Piece) -> Bitboard { [INFO] [stderr] | ^^^^^^ help: consider passing by value instead: `Piece` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/position.rs:598:32 [INFO] [stderr] | [INFO] [stderr] 598 | let prev = self.sfen_history.get(self.sfen_history.len() - 2).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.sfen_history[self.sfen_history.len() - 2]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:5:21 [INFO] [stderr] | [INFO] [stderr] 5 | const ASCII_1: u8 = '1' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'1' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:6:21 [INFO] [stderr] | [INFO] [stderr] 6 | const ASCII_9: u8 = '9' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'9' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:7:27 [INFO] [stderr] | [INFO] [stderr] 7 | const ASCII_LOWER_A: u8 = 'a' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/square.rs:8:27 [INFO] [stderr] | [INFO] [stderr] 8 | const ASCII_LOWER_I: u8 = 'i' as u8; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'i' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn file(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn rank(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:105:18 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn shift(&self, df: i8, dr: i8) -> Option { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:129:26 [INFO] [stderr] | [INFO] [stderr] 129 | pub fn relative_rank(&self, c: Color) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:138:30 [INFO] [stderr] | [INFO] [stderr] 138 | pub fn in_promotion_zone(&self, c: Color) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/square.rs:144:18 [INFO] [stderr] | [INFO] [stderr] 144 | pub fn index(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/time.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self { [INFO] [stderr] 100 | | &mut TimeControl::Byoyomi { ref mut black_time, ref mut white_time, ref byoyomi } => { [INFO] [stderr] 101 | | let target_time = if c == Color::Black { [INFO] [stderr] 102 | | black_time [INFO] [stderr] ... | [INFO] [stderr] 127 | | } [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 99 | match *self { [INFO] [stderr] 100 | TimeControl::Byoyomi { ref mut black_time, ref mut white_time, ref byoyomi } => { [INFO] [stderr] 101 | let target_time = if c == Color::Black { [INFO] [stderr] 102 | black_time [INFO] [stderr] 103 | } else { [INFO] [stderr] 104 | white_time [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 2 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `shogi`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "7c1425944cf885fd4a21cffe329706115a0c573e254d4bd35872ca490eed47e9"` [INFO] running `"docker" "rm" "-f" "7c1425944cf885fd4a21cffe329706115a0c573e254d4bd35872ca490eed47e9"` [INFO] [stdout] 7c1425944cf885fd4a21cffe329706115a0c573e254d4bd35872ca490eed47e9