[INFO] cloning repository https://github.com/Joey9801/pewter [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Joey9801/pewter" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoey9801%2Fpewter", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoey9801%2Fpewter'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b867bfcecebb67a4274fe895afb0a6b7a7875b2f [INFO] checking Joey9801/pewter/b867bfcecebb67a4274fe895afb0a6b7a7875b2f against master#f609b7e0586f81fefb3523e3e17adf779ac416be for pr-129466-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FJoey9801%2Fpewter" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Joey9801/pewter on toolchain f609b7e0586f81fefb3523e3e17adf779ac416be [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/Joey9801/pewter [INFO] finished tweaking git repo https://github.com/Joey9801/pewter [INFO] tweaked toml for git repo https://github.com/Joey9801/pewter written to /workspace/builds/worker-6-tc1/source/Cargo.toml [INFO] crate git repo https://github.com/Joey9801/pewter 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" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded variant_count v1.1.0 [INFO] [stderr] Downloaded dashmap v4.0.2 [INFO] [stderr] Downloaded wasm-bindgen-shared v0.2.78 [INFO] [stderr] Downloaded futures-sink v0.3.19 [INFO] [stderr] Downloaded memoffset v0.6.4 [INFO] [stderr] Downloaded plotters-svg v0.3.1 [INFO] [stderr] Downloaded wasm-bindgen-futures v0.4.28 [INFO] [stderr] Downloaded wasm-bindgen-macro v0.2.78 [INFO] [stderr] Downloaded nonzero_ext v0.2.0 [INFO] [stderr] Downloaded wasm-bindgen-backend v0.2.78 [INFO] [stderr] Downloaded clap_derive v3.0.0-rc.7 [INFO] [stderr] Downloaded futures-executor v0.3.19 [INFO] [stderr] Downloaded futures v0.3.19 [INFO] [stderr] Downloaded ahash v0.3.8 [INFO] [stderr] Downloaded hashbrown v0.8.2 [INFO] [stderr] Downloaded tokio-util v0.6.9 [INFO] [stderr] Downloaded unicode-segmentation v1.8.0 [INFO] [stderr] Downloaded governor v0.3.2 [INFO] [stderr] Downloaded h2 v0.3.9 [INFO] [stderr] Downloaded futures-util v0.3.19 [INFO] [stderr] Downloaded hyper v0.14.16 [INFO] [stderr] Downloaded openssl v0.10.38 [INFO] [stderr] Downloaded clap v3.0.0-rc.7 [INFO] [stderr] Downloaded proptest v1.0.0 [INFO] [stderr] Downloaded syn v1.0.81 [INFO] [stderr] Downloaded rayon v1.5.1 [INFO] [stderr] Downloaded fern v0.6.0 [INFO] [stderr] Downloaded reqwest v0.11.8 [INFO] [stderr] Downloaded wasm-bindgen v0.2.78 [INFO] [stderr] Downloaded serde_json v1.0.73 [INFO] [stderr] Downloaded criterion v0.3.5 [INFO] [stderr] Downloaded http v0.2.5 [INFO] [stderr] Downloaded security-framework v2.4.2 [INFO] [stderr] Downloaded js-sys v0.3.55 [INFO] [stderr] Downloaded libc v0.2.107 [INFO] [stderr] Downloaded tracing-core v0.1.21 [INFO] [stderr] Downloaded tracing v0.1.29 [INFO] [stderr] Downloaded html5ever v0.25.1 [INFO] [stderr] Downloaded cc v1.0.72 [INFO] [stderr] Downloaded tokio v1.15.0 [INFO] [stderr] Downloaded textwrap v0.14.2 [INFO] [stderr] Downloaded anyhow v1.0.51 [INFO] [stderr] Downloaded bumpalo v3.8.0 [INFO] [stderr] Downloaded web-sys v0.3.55 [INFO] [stderr] Downloaded rayon-core v1.9.1 [INFO] [stderr] Downloaded rand v0.8.4 [INFO] [stderr] Downloaded serde v1.0.132 [INFO] [stderr] Downloaded httparse v1.5.1 [INFO] [stderr] Downloaded openssl-sys v0.9.72 [INFO] [stderr] Downloaded zstd-sys v1.6.2+zstd.1.5.1 [INFO] [stderr] Downloaded scraper v0.12.0 [INFO] [stderr] Downloaded quanta v0.4.1 [INFO] [stderr] Downloaded futures-io v0.3.19 [INFO] [stderr] Downloaded socket2 v0.4.2 [INFO] [stderr] Downloaded serde_urlencoded v0.7.0 [INFO] [stderr] Downloaded schannel v0.1.19 [INFO] [stderr] Downloaded core-foundation v0.9.2 [INFO] [stderr] Downloaded unicode-bidi v0.3.7 [INFO] [stderr] Downloaded lock_api v0.4.5 [INFO] [stderr] Downloaded pin-project-lite v0.2.7 [INFO] [stderr] Downloaded zstd-safe v4.1.2+zstd.1.5.1 [INFO] [stderr] Downloaded cast v0.2.7 [INFO] [stderr] Downloaded plotters-backend v0.3.2 [INFO] [stderr] Downloaded crossbeam-epoch v0.9.5 [INFO] [stderr] Downloaded half v1.8.2 [INFO] [stderr] Downloaded serde_cbor v0.11.2 [INFO] [stderr] Downloaded serde_derive v1.0.132 [INFO] [stderr] Downloaded proc-macro2 v1.0.32 [INFO] [stderr] Downloaded no-std-compat v0.4.1 [INFO] [stderr] Downloaded futures-channel v0.3.19 [INFO] [stderr] Downloaded futures-task v0.3.19 [INFO] [stderr] Downloaded futures-core v0.3.19 [INFO] [stderr] Downloaded ipnet v2.3.1 [INFO] [stderr] Downloaded openssl-probe v0.1.4 [INFO] [stderr] Downloaded security-framework-sys v2.4.2 [INFO] [stderr] Downloaded native-tls v0.2.8 [INFO] [stderr] Downloaded winreg v0.7.0 [INFO] [stderr] Downloaded string_cache_codegen v0.5.1 [INFO] [stderr] Downloaded markup5ever v0.10.1 [INFO] [stderr] Downloaded futf v0.1.4 [INFO] [stderr] Downloaded tendril v0.4.2 [INFO] [stderr] Downloaded once_cell v1.9.0 [INFO] [stderr] Downloaded smallvec v1.7.0 [INFO] [stderr] Downloaded zstd v0.9.1+zstd.1.5.1 [INFO] [stderr] Downloaded semver v1.0.4 [INFO] [stderr] Downloaded oorandom v11.1.3 [INFO] [stderr] Downloaded encoding_rs v0.8.30 [INFO] [stderr] Downloaded wasm-bindgen-macro-support v0.2.78 [INFO] [stderr] Downloaded ppv-lite86 v0.2.15 [INFO] [stderr] Downloaded crossbeam-utils v0.8.5 [INFO] [stderr] Downloaded futures-macro v0.3.19 [INFO] [stderr] Downloaded pkg-config v0.3.24 [INFO] [stderr] Downloaded string_cache v0.8.2 [INFO] [stderr] Downloaded siphasher v0.3.7 [INFO] [stderr] Downloaded tokio-macros v1.7.0 [INFO] [stderr] Downloaded criterion-plot v0.4.4 [INFO] [stderr] Downloaded redox_syscall v0.2.10 [INFO] [stderr] Downloaded crossbeam-deque v0.8.1 [INFO] [stderr] Downloaded rand_hc v0.3.1 [INFO] [stderr] Downloaded http-body v0.4.4 [INFO] [stderr] Downloaded plotters v0.3.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:6252d7ea7fb8caaf7af6d800c5fb250a9cd862b9a7f9508afb3c54fa7fe1102e" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 60ca4266cc61c3fd411c4e1534e73beb0ef62f66d07857cd3efaf7869cde101a [INFO] running `Command { std: "docker" "start" "-a" "60ca4266cc61c3fd411c4e1534e73beb0ef62f66d07857cd3efaf7869cde101a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "60ca4266cc61c3fd411c4e1534e73beb0ef62f66d07857cd3efaf7869cde101a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "60ca4266cc61c3fd411c4e1534e73beb0ef62f66d07857cd3efaf7869cde101a", kill_on_drop: false }` [INFO] [stdout] 60ca4266cc61c3fd411c4e1534e73beb0ef62f66d07857cd3efaf7869cde101a [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:6252d7ea7fb8caaf7af6d800c5fb250a9cd862b9a7f9508afb3c54fa7fe1102e" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] e42c29ad2bd7084304618a78bc61ab4dae42800b985076b75dd771642ff7aa0c [INFO] running `Command { std: "docker" "start" "-a" "e42c29ad2bd7084304618a78bc61ab4dae42800b985076b75dd771642ff7aa0c", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.107 [INFO] [stderr] Compiling proc-macro2 v1.0.32 [INFO] [stderr] Compiling unicode-xid v0.2.2 [INFO] [stderr] Compiling syn v1.0.81 [INFO] [stderr] Compiling autocfg v1.0.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.15 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Compiling serde_derive v1.0.132 [INFO] [stderr] Compiling serde v1.0.132 [INFO] [stderr] Compiling memchr v2.4.1 [INFO] [stderr] Compiling getrandom v0.1.16 [INFO] [stderr] Compiling crossbeam-utils v0.8.5 [INFO] [stderr] Compiling anyhow v1.0.51 [INFO] [stderr] Checking smallvec v1.7.0 [INFO] [stderr] Compiling siphasher v0.3.7 [INFO] [stderr] Compiling parking_lot_core v0.8.5 [INFO] [stderr] Compiling phf_shared v0.8.0 [INFO] [stderr] Checking instant v0.1.12 [INFO] [stderr] Checking itoa v0.4.8 [INFO] [stderr] Checking lock_api v0.4.5 [INFO] [stderr] Checking pin-project-lite v0.2.7 [INFO] [stderr] Compiling version_check v0.9.3 [INFO] [stderr] Compiling futures-core v0.3.19 [INFO] [stderr] Checking arrayvec v0.7.2 [INFO] [stderr] Checking half v1.8.2 [INFO] [stderr] Compiling num-traits v0.2.14 [INFO] [stderr] Compiling indexmap v1.7.0 [INFO] [stderr] Compiling ryu v1.0.5 [INFO] [stderr] Compiling futures-channel v0.3.19 [INFO] [stderr] Checking crossbeam-channel v0.5.1 [INFO] [stderr] Compiling pkg-config v0.3.24 [INFO] [stderr] Checking futures-sink v0.3.19 [INFO] [stderr] Compiling futures-task v0.3.19 [INFO] [stderr] Compiling num-integer v0.1.44 [INFO] [stderr] Compiling memoffset v0.6.4 [INFO] [stderr] Compiling proc-macro-hack v0.5.19 [INFO] [stderr] Compiling futures-util v0.3.19 [INFO] [stderr] Compiling zstd-safe v4.1.2+zstd.1.5.1 [INFO] [stderr] Compiling proc-macro-error-attr v1.0.4 [INFO] [stderr] Checking once_cell v1.9.0 [INFO] [stderr] Compiling quote v1.0.10 [INFO] [stderr] Compiling proc-macro-error v1.0.4 [INFO] [stderr] Compiling crossbeam-epoch v0.9.5 [INFO] [stderr] Compiling semver v1.0.4 [INFO] [stderr] Checking futures-io v0.3.19 [INFO] [stderr] Checking slab v0.4.5 [INFO] [stderr] Compiling jobserver v0.1.24 [INFO] [stderr] Checking getrandom v0.2.3 [INFO] [stderr] Checking num_cpus v1.13.0 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking signal-hook-registry v1.4.0 [INFO] [stderr] Checking time v0.1.44 [INFO] [stderr] Checking mio v0.7.14 [INFO] [stderr] Compiling rand_core v0.5.1 [INFO] [stderr] Checking unicode-width v0.1.9 [INFO] [stderr] Compiling rand_core v0.6.3 [INFO] [stderr] Compiling cc v1.0.72 [INFO] [stderr] Compiling unicode-segmentation v1.8.0 [INFO] [stderr] Compiling rayon-core v1.9.1 [INFO] [stderr] Checking parking_lot v0.11.2 [INFO] [stderr] Compiling rand_pcg v0.2.1 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Compiling rand_chacha v0.2.2 [INFO] [stderr] Checking fern v0.6.0 [INFO] [stderr] Checking new_debug_unreachable v1.0.4 [INFO] [stderr] Checking either v1.6.1 [INFO] [stderr] Checking byteorder v1.4.3 [INFO] [stderr] Compiling openssl v0.10.38 [INFO] [stderr] Checking crossbeam-deque v0.8.1 [INFO] [stderr] Compiling rustc_version v0.4.0 [INFO] [stderr] Checking rand v0.8.4 [INFO] [stderr] Compiling rand v0.7.3 [INFO] [stderr] Checking http v0.2.5 [INFO] [stderr] Checking os_str_bytes v6.0.0 [INFO] [stderr] Compiling heck v0.3.3 [INFO] [stderr] Compiling rayon v1.5.1 [INFO] [stderr] Checking tracing-core v0.1.21 [INFO] [stderr] Compiling httparse v1.5.1 [INFO] [stderr] Compiling native-tls v0.2.8 [INFO] [stderr] Checking termcolor v1.1.2 [INFO] [stderr] Checking textwrap v0.14.2 [INFO] [stderr] Checking precomputed-hash v0.1.1 [INFO] [stderr] Checking mac v0.1.1 [INFO] [stderr] Checking chrono v0.4.19 [INFO] [stderr] Compiling cast v0.2.7 [INFO] [stderr] Checking futf v0.1.4 [INFO] [stderr] Checking tinyvec v1.5.1 [INFO] [stderr] Compiling hashbrown v0.8.2 [INFO] [stderr] Checking try-lock v0.2.3 [INFO] [stderr] Checking utf-8 v0.7.6 [INFO] [stderr] Checking dtoa v0.4.8 [INFO] [stderr] Checking openssl-probe v0.1.4 [INFO] [stderr] Compiling serde_json v1.0.73 [INFO] [stderr] Checking tracing v0.1.29 [INFO] [stderr] Checking want v0.3.0 [INFO] [stderr] Checking tendril v0.4.2 [INFO] [stderr] Checking dtoa-short v0.3.3 [INFO] [stderr] Checking socket2 v0.4.2 [INFO] [stderr] Checking remove_dir_all v0.5.3 [INFO] [stderr] Checking stable_deref_trait v1.2.0 [INFO] [stderr] Checking plotters-backend v0.3.2 [INFO] [stderr] Checking nodrop v0.1.14 [INFO] [stderr] Checking itoa v1.0.1 [INFO] [stderr] Compiling encoding_rs v0.8.30 [INFO] [stderr] Checking ahash v0.3.8 [INFO] [stderr] Compiling zstd-sys v1.6.2+zstd.1.5.1 [INFO] [stderr] Compiling openssl-sys v0.9.72 [INFO] [stderr] Checking unicode-bidi v0.3.7 [INFO] [stderr] Checking tower-service v0.3.1 [INFO] [stderr] Checking regex-syntax v0.6.25 [INFO] [stderr] Checking tempfile v3.2.0 [INFO] [stderr] Checking plotters-svg v0.3.1 [INFO] [stderr] Checking servo_arc v0.1.1 [INFO] [stderr] Compiling phf_generator v0.8.0 [INFO] [stderr] Compiling phf_codegen v0.8.0 [INFO] [stderr] Compiling string_cache_codegen v0.5.1 [INFO] [stderr] Checking fxhash v0.2.1 [INFO] [stderr] Checking itertools v0.10.3 [INFO] [stderr] Compiling pewter-core v0.1.0 (/opt/rustwide/workdir/crates/pewter-core) [INFO] [stderr] Checking textwrap v0.11.0 [INFO] [stderr] Checking wait-timeout v0.2.0 [INFO] [stderr] Checking csv-core v0.1.10 [INFO] [stderr] Checking bit-vec v0.6.3 [INFO] [stderr] Compiling selectors v0.22.0 [INFO] [stderr] Checking same-file v1.0.6 [INFO] [stderr] Checking thin-slice v0.1.1 [INFO] [stderr] Checking quick-error v1.2.3 [INFO] [stderr] Checking walkdir v2.3.2 [INFO] [stderr] Checking unicode-normalization v0.1.19 [INFO] [stderr] Checking rusty-fork v0.3.0 [INFO] [stderr] Checking clap v2.34.0 [INFO] [stderr] Checking plotters v0.3.1 [INFO] [stderr] Checking bit-set v0.5.2 [INFO] [stderr] Checking rand_xorshift v0.3.0 [INFO] [stderr] Checking no-std-compat v0.4.1 [INFO] [stderr] Checking getopts v0.2.21 [INFO] [stderr] Checking dashmap v4.0.2 [INFO] [stderr] Checking quanta v0.4.1 [INFO] [stderr] Checking ipnet v2.3.1 [INFO] [stderr] Compiling markup5ever v0.10.1 [INFO] [stderr] Checking nonzero_ext v0.2.0 [INFO] [stderr] Checking futures-timer v3.0.2 [INFO] [stderr] Checking ego-tree v0.6.2 [INFO] [stderr] Checking oorandom v11.1.3 [INFO] [stderr] Checking base64 v0.13.0 [INFO] [stderr] Checking quick-error v2.0.1 [INFO] [stderr] Checking mime v0.3.16 [INFO] [stderr] Checking http-body v0.4.4 [INFO] [stderr] Checking idna v0.2.3 [INFO] [stderr] Checking criterion-plot v0.4.4 [INFO] [stderr] Checking url v2.2.2 [INFO] [stderr] Checking regex v1.5.4 [INFO] [stderr] Checking proptest v1.0.0 [INFO] [stderr] Compiling thiserror-impl v1.0.30 [INFO] [stderr] Compiling variant_count v1.1.0 [INFO] [stderr] Compiling futures-macro v0.3.19 [INFO] [stderr] Compiling tokio-macros v1.7.0 [INFO] [stderr] Compiling phf_macros v0.8.0 [INFO] [stderr] Compiling clap_derive v3.0.0-rc.7 [INFO] [stderr] Compiling cssparser v0.27.2 [INFO] [stderr] Compiling html5ever v0.25.1 [INFO] [stderr] Checking tokio v1.15.0 [INFO] [stderr] Compiling cssparser-macros v0.6.0 [INFO] [stderr] Compiling derive_more v0.99.17 [INFO] [stderr] Checking phf v0.8.0 [INFO] [stderr] Checking thiserror v1.0.30 [INFO] [stderr] Checking clap v3.0.0-rc.7 [INFO] [stderr] Checking futures-executor v0.3.19 [INFO] [stderr] Checking futures v0.3.19 [INFO] [stderr] Checking governor v0.3.2 [INFO] [stderr] Checking tokio-util v0.6.9 [INFO] [stderr] Checking tokio-native-tls v0.3.0 [INFO] [stderr] Checking h2 v0.3.9 [INFO] [stderr] Checking serde_cbor v0.11.2 [INFO] [stderr] Checking string_cache v0.8.2 [INFO] [stderr] Checking bstr v0.2.17 [INFO] [stderr] Checking serde_urlencoded v0.7.0 [INFO] [stdout] error[E0557]: feature has been removed [INFO] [stdout] --> crates/pewter-core/src/lib.rs:6:12 [INFO] [stdout] | [INFO] [stdout] 6 | #![feature(const_eval_limit)] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ feature has been removed [INFO] [stdout] | [INFO] [stdout] = note: removed the limit entirely [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::state::CastleRights` [INFO] [stdout] --> crates/pewter-core/src/zobrist.rs:3:20 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::state::{CastleRights, State}; [INFO] [stdout] | ^^^^^^^^^^^^ no `CastleRights` in `state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0432]: unresolved import `crate::state::CastleRights` [INFO] [stdout] --> crates/pewter-core/src/lib.rs:26:24 [INFO] [stdout] | [INFO] [stdout] 26 | pub use crate::state::{CastleRights, CastleSide, State}; [INFO] [stdout] | ^^^^^^^^^^^^ no `CastleRights` in `state` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `const_eval_limit` in this scope [INFO] [stdout] --> crates/pewter-core/src/lib.rs:7:4 [INFO] [stdout] | [INFO] [stdout] 7 | #![const_eval_limit = "20000000"] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | #[error("There were non-ascii bytes in a long-algebraic move string")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | #[error("There weren't enough chars in the string for a long-algebraic move")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | #[error("One of the squares referenced on a long-algebraic string was invalid")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | #[error("A promotion char in a long-algebraic string wasn't one of {{q, r, b, r}}")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:16:7 [INFO] [stdout] | [INFO] [stdout] 16 | #[error("A SAN encoded move could not be decoded")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:19:7 [INFO] [stdout] | [INFO] [stdout] 19 | #[error("A SAN encoded move could have referred to multiple legal moves")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:22:7 [INFO] [stdout] | [INFO] [stdout] 22 | #[error("A SAN encoded move was not legal in the current board state")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:25:7 [INFO] [stdout] | [INFO] [stdout] 25 | #[error("This PGN parser does not have the ability to parse PGN files that contain comments")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: cannot find attribute `error` in this scope [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:28:7 [INFO] [stdout] | [INFO] [stdout] 28 | #[error("There were non-ascii characters in the PGN file")] [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `CastleRights` in this scope [INFO] [stdout] --> crates/pewter-core/src/state.rs:25:6 [INFO] [stdout] | [INFO] [stdout] 25 | impl CastleRights { [INFO] [stdout] | ^^^^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0412]: cannot find type `CastleRights` in this scope [INFO] [stdout] --> crates/pewter-core/src/state.rs:50:24 [INFO] [stdout] | [INFO] [stdout] 50 | pub castle_rights: CastleRights, [INFO] [stdout] | ^^^^^^^^^^^^ not found in this scope [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `thiserror::Error` [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:4:5 [INFO] [stdout] | [INFO] [stdout] 4 | use thiserror::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `variant_count::VariantCount` [INFO] [stdout] --> crates/pewter-core/src/color.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use variant_count::VariantCount; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `thiserror::Error` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use thiserror::Error; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::io::Write` [INFO] [stdout] --> crates/pewter-core/src/io/uci.rs:805:9 [INFO] [stdout] | [INFO] [stdout] 805 | use std::io::Write; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `variant_count::VariantCount` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use variant_count::VariantCount; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no variant or associated item named `VARIANT_COUNT` found for enum `Piece` in the current scope [INFO] [stdout] --> crates/pewter-core/src/board.rs:5:37 [INFO] [stdout] | [INFO] [stdout] 5 | piece_boards: [BitBoard; Piece::VARIANT_COUNT], [INFO] [stdout] | ^^^^^^^^^^^^^ variant or associated item not found in `Piece` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | -------------- variant or associated item `VARIANT_COUNT` not found for this enum [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no variant or associated item named `VARIANT_COUNT` found for enum `Color` in the current scope [INFO] [stdout] --> crates/pewter-core/src/board.rs:6:37 [INFO] [stdout] | [INFO] [stdout] 6 | color_boards: [BitBoard; Color::VARIANT_COUNT], [INFO] [stdout] | ^^^^^^^^^^^^^ variant or associated item not found in `Color` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | -------------- variant or associated item `VARIANT_COUNT` not found for this enum [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*c` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:243:41 [INFO] [stdout] | [INFO] [stdout] 243 | self.chunks.iter().flat_map(|c| c.iter()) [INFO] [stdout] | ^ ------ `*c` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*c` has type `MoveSetChunk`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `MoveSetChunk::iter` takes ownership of the receiver `self`, which moves `*c` [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:148:17 [INFO] [stdout] | [INFO] [stdout] 148 | pub fn iter(self) -> MoveSetChunkIter { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `FenParseError` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/io/fen.rs:30:28 [INFO] [stdout] | [INFO] [stdout] 30 | impl std::error::Error for FenParseError {} [INFO] [stdout] | ^^^^^^^^^^^^^ `FenParseError` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `FenParseError` [INFO] [stdout] = note: add `#[derive(Debug)]` to `FenParseError` or manually `impl std::fmt::Debug for FenParseError` [INFO] [stdout] note: required by a bound in `StdError` [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/error.rs:29:1 [INFO] [stdout] help: consider annotating `FenParseError` with `#[derive(Debug)]` [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum FenParseError { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no variant or associated item named `VARIANT_COUNT` found for enum `Piece` in the current scope [INFO] [stdout] --> crates/pewter-core/src/piece.rs:48:40 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | -------------- variant or associated item `VARIANT_COUNT` not found for this enum [INFO] [stdout] ... [INFO] [stdout] 48 | pub const fn all() -> [Self; Self::VARIANT_COUNT] { [INFO] [stdout] | ^^^^^^^^^^^^^ variant or associated item not found in `Piece` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:78:27 [INFO] [stdout] | [INFO] [stdout] 78 | let mut diag_table = [BitBoard::new_empty(); 30]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 78 | let mut diag_table = [const { BitBoard::new_empty() }; 30]; [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:227:23 [INFO] [stdout] | [INFO] [stdout] 227 | let mut table = [[BitBoard::new_empty(); 64]; 64]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 227 | let mut table = [[const { BitBoard::new_empty() }; 64]; 64]; [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:303:23 [INFO] [stdout] | [INFO] [stdout] 303 | let mut table = [[BitBoard::new_empty(); 64]; 64]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 303 | let mut table = [[const { BitBoard::new_empty() }; 64]; 64]; [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:332:23 [INFO] [stdout] | [INFO] [stdout] 332 | let mut table = [[BitBoard::new_empty(); 64]; 2]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 332 | let mut table = [[const { BitBoard::new_empty() }; 64]; 2]; [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:384:23 [INFO] [stdout] | [INFO] [stdout] 384 | let mut table = [[BitBoard::new_empty(); 64]; 2]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 384 | let mut table = [[const { BitBoard::new_empty() }; 64]; 2]; [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:459:22 [INFO] [stdout] | [INFO] [stdout] 459 | let mut table = [BitBoard::new_empty(); 64]; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 459 | let mut table = [const { BitBoard::new_empty() }; 64]; [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no variant or associated item named `VARIANT_COUNT` found for enum `Piece` in the current scope [INFO] [stdout] --> crates/pewter-core/src/board.rs:12:58 [INFO] [stdout] | [INFO] [stdout] 12 | piece_boards: [BitBoard::new_empty(); Piece::VARIANT_COUNT], [INFO] [stdout] | ^^^^^^^^^^^^^ variant or associated item not found in `Piece` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | -------------- variant or associated item `VARIANT_COUNT` not found for this enum [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no variant or associated item named `VARIANT_COUNT` found for enum `Color` in the current scope [INFO] [stdout] --> crates/pewter-core/src/board.rs:13:58 [INFO] [stdout] | [INFO] [stdout] 13 | color_boards: [BitBoard::new_empty(); Color::VARIANT_COUNT], [INFO] [stdout] | ^^^^^^^^^^^^^ variant or associated item not found in `Color` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | -------------- variant or associated item `VARIANT_COUNT` not found for this enum [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/board.rs:12:28 [INFO] [stdout] | [INFO] [stdout] 12 | piece_boards: [BitBoard::new_empty(); Piece::VARIANT_COUNT], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 12 | piece_boards: [const { BitBoard::new_empty() }; Piece::VARIANT_COUNT], [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: the trait bound `BitBoard: std::marker::Copy` is not satisfied [INFO] [stdout] --> crates/pewter-core/src/board.rs:13:28 [INFO] [stdout] | [INFO] [stdout] 13 | color_boards: [BitBoard::new_empty(); Color::VARIANT_COUNT], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ the trait `std::marker::Copy` is not implemented for `BitBoard` [INFO] [stdout] | [INFO] [stdout] = note: the `Copy` trait is required because this value will be copied for each element of the array [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Copy)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Copy)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] help: create an inline `const` block [INFO] [stdout] | [INFO] [stdout] 13 | color_boards: [const { BitBoard::new_empty() }; Color::VARIANT_COUNT], [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `std::option::Option<(Color, Piece)>` [INFO] [stdout] --> crates/pewter-core/src/board.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | debug_assert_eq!(self.get(pos), None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | std::option::Option<(Color, Piece)> [INFO] [stdout] | std::option::Option<(Color, Piece)> [INFO] [stdout] | [INFO] [stdout] note: the following types would have to `impl` their required traits for this operation to be valid [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(PartialEq)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | debug_assert_eq!(self.get(pos), None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Piece` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | debug_assert_eq!(self.get(pos), None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Piece` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Piece`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Piece` or manually `impl std::fmt::Debug for Piece` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Piece` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | debug_assert_eq!(self.get(pos), None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Piece` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | debug_assert_eq!(self.get(pos), None); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Piece` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Piece`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Piece` or manually `impl std::fmt::Debug for Piece` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Piece` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `std::option::Option<(Color, Piece)>` [INFO] [stdout] --> crates/pewter-core/src/board.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | debug_assert_eq!(self.get(pos), Some((color, piece))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | std::option::Option<(Color, Piece)> [INFO] [stdout] | std::option::Option<(Color, Piece)> [INFO] [stdout] | [INFO] [stdout] note: the following types would have to `impl` their required traits for this operation to be valid [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(PartialEq)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | debug_assert_eq!(self.get(pos), Some((color, piece))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Piece` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | debug_assert_eq!(self.get(pos), Some((color, piece))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Piece` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Piece`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Piece` or manually `impl std::fmt::Debug for Piece` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Piece` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | debug_assert_eq!(self.get(pos), Some((color, piece))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Piece` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | debug_assert_eq!(self.get(pos), Some((color, piece))); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Piece` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Piece`, which is required by `std::option::Option<(Color, Piece)>: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Piece` or manually `impl std::fmt::Debug for Piece` [INFO] [stdout] = help: the trait `std::fmt::Debug` is implemented for `std::option::Option` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Piece` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: can't compare `Piece` with `_` [INFO] [stdout] --> crates/pewter-core/src/board.rs:122:22 [INFO] [stdout] | [INFO] [stdout] 122 | if a != b { [INFO] [stdout] | ^^ no implementation for `Piece == _` [INFO] [stdout] | [INFO] [stdout] = help: the trait `PartialEq<_>` is not implemented for `Piece` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BitBoard` [INFO] [stdout] --> crates/pewter-core/src/board.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | assert_eq!(piece_union, color_union); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | BitBoard [INFO] [stdout] | BitBoard [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BitBoard` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(PartialEq)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `BitBoard` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | assert_eq!(piece_union, color_union); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `BitBoard` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `BitBoard` [INFO] [stdout] = note: add `#[derive(Debug)]` to `BitBoard` or manually `impl std::fmt::Debug for BitBoard` [INFO] [stdout] = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Debug)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `BitBoard` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/board.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | assert_eq!(piece_union, color_union); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `BitBoard` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `BitBoard` [INFO] [stdout] = note: add `#[derive(Debug)]` to `BitBoard` or manually `impl std::fmt::Debug for BitBoard` [INFO] [stdout] = note: this error originates in the macro `assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(Debug)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `ParseLongAlgebraicError` doesn't implement `std::fmt::Display` [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:127:74 [INFO] [stdout] | [INFO] [stdout] 127 | Move::from_long_algebraic(v).map_err(|e| E::custom(format!("{}", e))) [INFO] [stdout] | ^ `ParseLongAlgebraicError` cannot be formatted with the default formatter [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Display` is not implemented for `ParseLongAlgebraicError` [INFO] [stdout] = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead [INFO] [stdout] = note: this error originates in the macro `$crate::__export::format_args` which comes from the expansion of the macro `format` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `FenParseError` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/io/fen.rs:26:27 [INFO] [stdout] | [INFO] [stdout] 26 | write!(f, "{:?}", self) [INFO] [stdout] | ^^^^ `FenParseError` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `FenParseError`, which is required by `&FenParseError: std::fmt::Debug` [INFO] [stdout] = note: add `#[derive(Debug)]` to `FenParseError` or manually `impl std::fmt::Debug for FenParseError` [INFO] [stdout] = note: this error originates in the macro `$crate::format_args` which comes from the expansion of the macro `write` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `FenParseError` with `#[derive(Debug)]` [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum FenParseError { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `!=` cannot be applied to type `Rank` [INFO] [stdout] --> crates/pewter-core/src/io/fen.rs:179:18 [INFO] [stdout] | [INFO] [stdout] 179 | if *rank != FEN_RANKS[FEN_RANKS.len() - 1] { [INFO] [stdout] | ----- ^^ ------------------------------ Rank [INFO] [stdout] | | [INFO] [stdout] | Rank [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Rank` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Rank` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Rank { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:120:26 [INFO] [stdout] | [INFO] [stdout] 120 | .filter(|m| m.to == dest_pos) [INFO] [stdout] | ---- ^^ -------- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `std::option::Option<(Color, Piece)>` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:121:45 [INFO] [stdout] | [INFO] [stdout] 121 | .filter(|m| state.board.get(m.from) == Some((state.to_play, piece))) [INFO] [stdout] | ----------------------- ^^ ---------------------------- std::option::Option<(Color, Piece)> [INFO] [stdout] | | [INFO] [stdout] | std::option::Option<(Color, Piece)> [INFO] [stdout] | [INFO] [stdout] note: the following types would have to `impl` their required traits for this operation to be valid [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Color` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(PartialEq)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `coordinates::File` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:122:51 [INFO] [stdout] | [INFO] [stdout] 122 | .filter(|m| from_file.map(|f| m.from.file == f).unwrap_or(true)) [INFO] [stdout] | ----------- ^^ - coordinates::File [INFO] [stdout] | | [INFO] [stdout] | coordinates::File [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `coordinates::File` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | pub enum File { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `coordinates::File` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 + #[derive(PartialEq)] [INFO] [stdout] 88 | pub enum File { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Rank` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:123:51 [INFO] [stdout] | [INFO] [stdout] 123 | .filter(|m| from_rank.map(|r| m.from.rank == r).unwrap_or(true)) [INFO] [stdout] | ----------- ^^ - Rank [INFO] [stdout] | | [INFO] [stdout] | Rank [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Rank` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Rank` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Rank { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `std::option::Option` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:124:33 [INFO] [stdout] | [INFO] [stdout] 124 | .filter(|m| m.promotion == promotion); [INFO] [stdout] | ----------- ^^ --------- std::option::Option [INFO] [stdout] | | [INFO] [stdout] | std::option::Option [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `FenParseError` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:164:41 [INFO] [stdout] | [INFO] [stdout] 164 | let mut state = parse_fen(starting).unwrap(); [INFO] [stdout] | ^^^^^^ `FenParseError` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `FenParseError` [INFO] [stdout] = note: add `#[derive(Debug)]` to `FenParseError` or manually `impl std::fmt::Debug for FenParseError` [INFO] [stdout] note: required by a bound in `Result::::unwrap` [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/result.rs:1096:5 [INFO] [stdout] help: consider annotating `FenParseError` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/io/fen.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum FenParseError { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no method named `clone` found for struct `State` in the current scope [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:165:31 [INFO] [stdout] | [INFO] [stdout] 165 | let initial_state = state.clone(); [INFO] [stdout] | ^^^^^ method not found in `State` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:47:1 [INFO] [stdout] | [INFO] [stdout] 47 | pub struct State { [INFO] [stdout] | ---------------- method `clone` not found for this struct [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] = note: the following trait defines an item `clone`, perhaps you need to implement it: [INFO] [stdout] candidate #1: `Clone` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `!=` cannot be applied to type `GameResult` [INFO] [stdout] --> crates/pewter-core/src/io/pgn.rs:205:23 [INFO] [stdout] | [INFO] [stdout] 205 | if result != GameResult::Ongoing { [INFO] [stdout] | ------ ^^ ------------------- GameResult [INFO] [stdout] | | [INFO] [stdout] | GameResult [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `GameResult` [INFO] [stdout] --> crates/pewter-core/src/state.rs:39:1 [INFO] [stdout] | [INFO] [stdout] 39 | pub enum GameResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `GameResult` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/state.rs:39:1 [INFO] [stdout] | [INFO] [stdout] 39 + #[derive(PartialEq)] [INFO] [stdout] 40 | pub enum GameResult { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking csv v1.1.6 [INFO] [stdout] error[E0599]: no function or associated item named `default` found for struct `GoCommand` in the current scope [INFO] [stdout] --> crates/pewter-core/src/io/uci.rs:542:33 [INFO] [stdout] | [INFO] [stdout] 26 | pub struct GoCommand { [INFO] [stdout] | -------------------- function or associated item `default` not found for this struct [INFO] [stdout] ... [INFO] [stdout] 542 | let mut go_cmd = GoCommand::default(); [INFO] [stdout] | ^^^^^^^ function or associated item not found in `GoCommand` [INFO] [stdout] | [INFO] [stdout] = help: items from traits can only be used if the trait is implemented and in scope [INFO] [stdout] = note: the following trait defines an item `default`, perhaps you need to implement it: [INFO] [stdout] candidate #1: `Default` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Rank` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:60:33 [INFO] [stdout] | [INFO] [stdout] 60 | let pushes = if source.rank == color.numbered_rank(2) && [INFO] [stdout] | ----------- ^^ ---------------------- Rank [INFO] [stdout] | | [INFO] [stdout] | Rank [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Rank` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Rank` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Rank { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Rank` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:73:33 [INFO] [stdout] | [INFO] [stdout] 73 | let promotion = source.rank == color.numbered_rank(7); [INFO] [stdout] | ----------- ^^ ---------------------- Rank [INFO] [stdout] | | [INFO] [stdout] | Rank [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Rank` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Rank` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Rank { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:71:28 [INFO] [stdout] | [INFO] [stdout] 71 | castle_rights: CastleRights::empty(), [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `coordinates::File` [INFO] [stdout] --> crates/pewter-core/src/state.rs:163:34 [INFO] [stdout] | [INFO] [stdout] 163 | let kingside = m.to.file == File::G; [INFO] [stdout] | --------- ^^ ------- coordinates::File [INFO] [stdout] | | [INFO] [stdout] | coordinates::File [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `coordinates::File` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | pub enum File { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `coordinates::File` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 + #[derive(PartialEq)] [INFO] [stdout] 88 | pub enum File { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:165:45 [INFO] [stdout] | [INFO] [stdout] 165 | let required_flag = if self.to_play == Color::Black { [INFO] [stdout] | ------------ ^^ ------------ Color [INFO] [stdout] | | [INFO] [stdout] | Color [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Color` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Color` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(PartialEq)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:167:17 [INFO] [stdout] | [INFO] [stdout] 167 | CastleRights::BLACK_KINGSIDE [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:169:17 [INFO] [stdout] | [INFO] [stdout] 169 | CastleRights::BLACK_QUEENSIDE [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:173:17 [INFO] [stdout] | [INFO] [stdout] 173 | CastleRights::WHITE_KINGSIDE [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:175:17 [INFO] [stdout] | [INFO] [stdout] 175 | CastleRights::WHITE_QUEENSIDE [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Piece` [INFO] [stdout] --> crates/pewter-core/src/state.rs:200:18 [INFO] [stdout] | [INFO] [stdout] 200 | if piece == Piece::King { [INFO] [stdout] | ----- ^^ ----------- Piece [INFO] [stdout] | | [INFO] [stdout] | Piece [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:204:47 [INFO] [stdout] | [INFO] [stdout] 204 | self.castle_rights.remove(CastleRights::ALL_WHITE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:207:47 [INFO] [stdout] | [INFO] [stdout] 207 | self.castle_rights.remove(CastleRights::ALL_BLACK); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Piece` [INFO] [stdout] --> crates/pewter-core/src/state.rs:212:18 [INFO] [stdout] | [INFO] [stdout] 212 | if piece == Piece::Rook { [INFO] [stdout] | ----- ^^ ----------- Piece [INFO] [stdout] | | [INFO] [stdout] | Piece [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:216:31 [INFO] [stdout] | [INFO] [stdout] 216 | if m.from == A1 { [INFO] [stdout] | ------ ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:217:51 [INFO] [stdout] | [INFO] [stdout] 217 | self.castle_rights.remove(CastleRights::WHITE_QUEENSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:218:38 [INFO] [stdout] | [INFO] [stdout] 218 | } else if m.from == H1 { [INFO] [stdout] | ------ ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:219:51 [INFO] [stdout] | [INFO] [stdout] 219 | self.castle_rights.remove(CastleRights::WHITE_KINGSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:223:31 [INFO] [stdout] | [INFO] [stdout] 223 | if m.from == A8 { [INFO] [stdout] | ------ ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:224:51 [INFO] [stdout] | [INFO] [stdout] 224 | self.castle_rights.remove(CastleRights::BLACK_QUEENSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:225:38 [INFO] [stdout] | [INFO] [stdout] 225 | } else if m.from == H8 { [INFO] [stdout] | ------ ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:226:51 [INFO] [stdout] | [INFO] [stdout] 226 | self.castle_rights.remove(CastleRights::BLACK_KINGSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:236:29 [INFO] [stdout] | [INFO] [stdout] 236 | if m.to == A1 { [INFO] [stdout] | ---- ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:237:51 [INFO] [stdout] | [INFO] [stdout] 237 | self.castle_rights.remove(CastleRights::WHITE_QUEENSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:238:36 [INFO] [stdout] | [INFO] [stdout] 238 | } else if m.to == H1 { [INFO] [stdout] | ---- ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:239:51 [INFO] [stdout] | [INFO] [stdout] 239 | self.castle_rights.remove(CastleRights::WHITE_KINGSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:243:29 [INFO] [stdout] | [INFO] [stdout] 243 | if m.to == A8 { [INFO] [stdout] | ---- ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:244:51 [INFO] [stdout] | [INFO] [stdout] 244 | self.castle_rights.remove(CastleRights::BLACK_QUEENSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:245:36 [INFO] [stdout] | [INFO] [stdout] 245 | } else if m.to == H8 { [INFO] [stdout] | ---- ^^ -- BoardPos [INFO] [stdout] | | [INFO] [stdout] | BoardPos [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0433]: failed to resolve: use of undeclared type `CastleRights` [INFO] [stdout] --> crates/pewter-core/src/state.rs:246:51 [INFO] [stdout] | [INFO] [stdout] 246 | self.castle_rights.remove(CastleRights::BLACK_KINGSIDE); [INFO] [stdout] | ^^^^^^^^^^^^ use of undeclared type `CastleRights` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | debug_assert_eq!(_color, our_color); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | Color [INFO] [stdout] | Color [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Color` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(PartialEq)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/state.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | debug_assert_eq!(_color, our_color); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/state.rs:290:9 [INFO] [stdout] | [INFO] [stdout] 290 | debug_assert_eq!(_color, our_color); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:295:13 [INFO] [stdout] | [INFO] [stdout] 295 | debug_assert_eq!(c, opp_color); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | Color [INFO] [stdout] | Color [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Color` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(PartialEq)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/state.rs:295:13 [INFO] [stdout] | [INFO] [stdout] 295 | debug_assert_eq!(c, opp_color); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Color` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/state.rs:295:13 [INFO] [stdout] | [INFO] [stdout] 295 | debug_assert_eq!(c, opp_color); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Color` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Color` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Color` or manually `impl std::fmt::Debug for Color` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Color` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(Debug)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `std::option::Option` [INFO] [stdout] --> crates/pewter-core/src/state.rs:312:34 [INFO] [stdout] | [INFO] [stdout] 312 | if next_state.en_passant == Some(m.to) && piece == Piece::Pawn { [INFO] [stdout] | --------------------- ^^ ---------- std::option::Option [INFO] [stdout] | | [INFO] [stdout] | std::option::Option [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BoardPos` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 | pub struct BoardPos { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BoardPos` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:154:1 [INFO] [stdout] | [INFO] [stdout] 154 + #[derive(PartialEq)] [INFO] [stdout] 155 | pub struct BoardPos { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Piece` [INFO] [stdout] --> crates/pewter-core/src/state.rs:312:57 [INFO] [stdout] | [INFO] [stdout] 312 | if next_state.en_passant == Some(m.to) && piece == Piece::Pawn { [INFO] [stdout] | ----- ^^ ----------- Piece [INFO] [stdout] | | [INFO] [stdout] | Piece [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Piece` [INFO] [stdout] --> crates/pewter-core/src/state.rs:321:18 [INFO] [stdout] | [INFO] [stdout] 321 | if piece == Piece::King && (move_bb & masks::castling_moves_all() == move_bb) { [INFO] [stdout] | ----- ^^ ----------- Piece [INFO] [stdout] | | [INFO] [stdout] | Piece [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BitBoard` [INFO] [stdout] --> crates/pewter-core/src/state.rs:321:75 [INFO] [stdout] | [INFO] [stdout] 321 | if piece == Piece::King && (move_bb & masks::castling_moves_all() == move_bb) { [INFO] [stdout] | ------------------------------------- ^^ ------- BitBoard [INFO] [stdout] | | [INFO] [stdout] | BitBoard [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BitBoard` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(PartialEq)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Piece` [INFO] [stdout] --> crates/pewter-core/src/state.rs:329:19 [INFO] [stdout] | [INFO] [stdout] 329 | if (piece == Piece::Pawn) && (move_bb & masks::double_pawn_moves(our_color) == move_bb) { [INFO] [stdout] | ----- ^^ ----------- Piece [INFO] [stdout] | | [INFO] [stdout] | Piece [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `BitBoard` [INFO] [stdout] --> crates/pewter-core/src/state.rs:329:85 [INFO] [stdout] | [INFO] [stdout] 329 | if (piece == Piece::Pawn) && (move_bb & masks::double_pawn_moves(our_color) == move_bb) { [INFO] [stdout] | --------------------------------------------- ^^ ------- BitBoard [INFO] [stdout] | | [INFO] [stdout] | BitBoard [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `BitBoard` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `BitBoard` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 + #[derive(PartialEq)] [INFO] [stdout] 8 | pub struct BitBoard(pub u64); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Piece` [INFO] [stdout] --> crates/pewter-core/src/state.rs:342:13 [INFO] [stdout] | [INFO] [stdout] 342 | debug_assert_eq!(piece, Piece::Pawn); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | Piece [INFO] [stdout] | Piece [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Piece` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/state.rs:342:13 [INFO] [stdout] | [INFO] [stdout] 342 | debug_assert_eq!(piece, Piece::Pawn); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Piece` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Piece` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Piece` or manually `impl std::fmt::Debug for Piece` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Piece` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0277]: `Piece` doesn't implement `std::fmt::Debug` [INFO] [stdout] --> crates/pewter-core/src/state.rs:342:13 [INFO] [stdout] | [INFO] [stdout] 342 | debug_assert_eq!(piece, Piece::Pawn); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Piece` cannot be formatted using `{:?}` [INFO] [stdout] | [INFO] [stdout] = help: the trait `std::fmt::Debug` is not implemented for `Piece` [INFO] [stdout] = note: add `#[derive(Debug)]` to `Piece` or manually `impl std::fmt::Debug for Piece` [INFO] [stdout] = note: this error originates in the macro `$crate::assert_eq` which comes from the expansion of the macro `debug_assert_eq` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] help: consider annotating `Piece` with `#[derive(Debug)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(Debug)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Rank` [INFO] [stdout] --> crates/pewter-core/src/state.rs:343:37 [INFO] [stdout] | [INFO] [stdout] 343 | debug_assert!(m.to.rank == Rank::R1 || m.to.rank == Rank::R8); [INFO] [stdout] | --------- ^^ -------- Rank [INFO] [stdout] | | [INFO] [stdout] | Rank [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Rank` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Rank` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Rank { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Rank` [INFO] [stdout] --> crates/pewter-core/src/state.rs:343:62 [INFO] [stdout] | [INFO] [stdout] 343 | debug_assert!(m.to.rank == Rank::R1 || m.to.rank == Rank::R8); [INFO] [stdout] | --------- ^^ -------- Rank [INFO] [stdout] | | [INFO] [stdout] | Rank [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Rank` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Rank` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Rank { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Piece` [INFO] [stdout] --> crates/pewter-core/src/state.rs:348:45 [INFO] [stdout] | [INFO] [stdout] 348 | if capture_piece.is_some() || piece == Piece::Pawn { [INFO] [stdout] | ----- ^^ ----------- Piece [INFO] [stdout] | | [INFO] [stdout] | Piece [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Piece` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Piece` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 + #[derive(PartialEq)] [INFO] [stdout] 5 | pub enum Piece { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `Color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:354:31 [INFO] [stdout] | [INFO] [stdout] 354 | if next_state.to_play == Color::Black { [INFO] [stdout] | ------------------ ^^ ------------ Color [INFO] [stdout] | | [INFO] [stdout] | Color [INFO] [stdout] | [INFO] [stdout] note: an implementation of `PartialEq` might be missing for `Color` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ must implement `PartialEq` [INFO] [stdout] help: consider annotating `Color` with `#[derive(PartialEq)]` [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 + #[derive(PartialEq)] [INFO] [stdout] 7 | pub enum Color { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0599]: no variant or associated item named `VARIANT_COUNT` found for enum `Piece` in the current scope [INFO] [stdout] --> crates/pewter-core/src/zobrist.rs:40:48 [INFO] [stdout] | [INFO] [stdout] 40 | let idx = color.to_num() as usize * Piece::VARIANT_COUNT * 64 [INFO] [stdout] | ^^^^^^^^^^^^^ variant or associated item not found in `Piece` [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | -------------- variant or associated item `VARIANT_COUNT` not found for this enum [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[BitBoard; 8]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | RANKS[rank.to_num() as usize] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:24:5 [INFO] [stdout] | [INFO] [stdout] 24 | RANKS[rank.to_num() as usize] [INFO] [stdout] | ----------------------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[BitBoard; 8]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | FILES[file.to_num() as usize] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:45:5 [INFO] [stdout] | [INFO] [stdout] 45 | FILES[file.to_num() as usize] [INFO] [stdout] | ----------------------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[BitBoard; 30]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | DIAG_LOOKUP[(pos.file.to_num() + 22 - pos.rank.to_num()) as usize] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:103:5 [INFO] [stdout] | [INFO] [stdout] 103 | DIAG_LOOKUP[(pos.file.to_num() + 22 - pos.rank.to_num()) as usize] [INFO] [stdout] | ------------------------------------------------------------------ you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[BitBoard; 30]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | DIAG_LOOKUP[(pos.file.to_num() + pos.rank.to_num()) as usize] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:107:5 [INFO] [stdout] | [INFO] [stdout] 107 | DIAG_LOOKUP[(pos.file.to_num() + pos.rank.to_num()) as usize] [INFO] [stdout] | ------------------------------------------------------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of partially moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:117:23 [INFO] [stdout] | [INFO] [stdout] 116 | .union_with(file(pos.file)) [INFO] [stdout] | -------- value partially moved here [INFO] [stdout] 117 | .with_cleared(pos) [INFO] [stdout] | ^^^ value used here after partial move [INFO] [stdout] | [INFO] [stdout] = note: partial move occurs because `pos.file` has type `coordinates::File`, which does not implement the `Copy` trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:126:34 [INFO] [stdout] | [INFO] [stdout] 123 | pub const fn bishop_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 124 | BitBoard::new_empty() [INFO] [stdout] 125 | .union_with(diagonal(pos)) [INFO] [stdout] | --- value moved here [INFO] [stdout] 126 | .union_with(antidiagonal(pos)) [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `diagonal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:102:28 [INFO] [stdout] | [INFO] [stdout] 102 | pub const fn diagonal(pos: BoardPos) -> BitBoard { [INFO] [stdout] | -------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:127:23 [INFO] [stdout] | [INFO] [stdout] 123 | pub const fn bishop_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 126 | .union_with(antidiagonal(pos)) [INFO] [stdout] | --- value moved here [INFO] [stdout] 127 | .with_cleared(pos) [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `antidiagonal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:106:32 [INFO] [stdout] | [INFO] [stdout] 106 | pub const fn antidiagonal(pos: BoardPos) -> BitBoard { [INFO] [stdout] | ------------ ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:133:33 [INFO] [stdout] | [INFO] [stdout] 130 | pub const fn queen_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 131 | BitBoard::new_empty() [INFO] [stdout] 132 | .union_with(rook_rays(pos)) [INFO] [stdout] | --- value moved here [INFO] [stdout] 133 | .union_with(bishop_rays(pos)) [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `rook_rays` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:113:29 [INFO] [stdout] | [INFO] [stdout] 113 | pub const fn rook_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | --------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `a` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:212:39 [INFO] [stdout] | [INFO] [stdout] 203 | const fn line_slow(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | - move occurs because `a` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 211 | let a_diag = diagonal(a); [INFO] [stdout] | - value moved here [INFO] [stdout] 212 | let a_antidiag = antidiagonal(a); [INFO] [stdout] | ^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `diagonal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:102:28 [INFO] [stdout] | [INFO] [stdout] 102 | pub const fn diagonal(pos: BoardPos) -> BitBoard { [INFO] [stdout] | -------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `b` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:214:39 [INFO] [stdout] | [INFO] [stdout] 203 | const fn line_slow(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | - move occurs because `b` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 213 | let b_diag = diagonal(b); [INFO] [stdout] | - value moved here [INFO] [stdout] 214 | let b_antidiag = antidiagonal(b); [INFO] [stdout] | ^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `diagonal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:102:28 [INFO] [stdout] | [INFO] [stdout] 102 | pub const fn diagonal(pos: BoardPos) -> BitBoard { [INFO] [stdout] | -------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `LINE_TABLE[_][_]` as `LINE_TABLE` is a static item [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:254:5 [INFO] [stdout] | [INFO] [stdout] 254 | LINE_TABLE[a][b] [INFO] [stdout] | ^^^^^^^^^^^^^^^^ move occurs because `LINE_TABLE[_][_]` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:254:5 [INFO] [stdout] | [INFO] [stdout] 254 | LINE_TABLE[a][b] [INFO] [stdout] | ---------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `a` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:274:17 [INFO] [stdout] | [INFO] [stdout] 258 | const fn between_slow(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | - move occurs because `a` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 271 | let mut bb = line_slow(a, b); [INFO] [stdout] | - value moved here [INFO] [stdout] ... [INFO] [stdout] 274 | let a = a.file.to_num() as i8; [INFO] [stdout] | ^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `line_slow` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:203:23 [INFO] [stdout] | [INFO] [stdout] 203 | const fn line_slow(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | --------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `b` [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:275:17 [INFO] [stdout] | [INFO] [stdout] 258 | const fn between_slow(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | - move occurs because `b` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 271 | let mut bb = line_slow(a, b); [INFO] [stdout] | - value moved here [INFO] [stdout] ... [INFO] [stdout] 275 | let b = b.file.to_num() as i8; [INFO] [stdout] | ^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `line_slow` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:203:36 [INFO] [stdout] | [INFO] [stdout] 203 | const fn line_slow(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | --------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[[BitBoard; 64]; 64]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:327:5 [INFO] [stdout] | [INFO] [stdout] 327 | BETWEEN_TABLE[a][b] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:327:5 [INFO] [stdout] | [INFO] [stdout] 327 | BETWEEN_TABLE[a][b] [INFO] [stdout] | ------------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[[BitBoard; 64]; 2]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:380:5 [INFO] [stdout] | [INFO] [stdout] 380 | PAWN_PUSHES[color.to_num() as usize][pos.to_bitboard_offset() as usize] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:380:5 [INFO] [stdout] | [INFO] [stdout] 380 | PAWN_PUSHES[color.to_num() as usize][pos.to_bitboard_offset() as usize] [INFO] [stdout] | ----------------------------------------------------------------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[[BitBoard; 64]; 2]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:443:5 [INFO] [stdout] | [INFO] [stdout] 443 | PAWN_ATTACKS[color.to_num() as usize][pos.to_bitboard_offset() as usize] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:443:5 [INFO] [stdout] | [INFO] [stdout] 443 | PAWN_ATTACKS[color.to_num() as usize][pos.to_bitboard_offset() as usize] [INFO] [stdout] | ------------------------------------------------------------------------ you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[BitBoard; 64]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:496:5 [INFO] [stdout] | [INFO] [stdout] 496 | KNIGHT_MOVES[pos.to_bitboard_offset() as usize] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/bitboard/masks.rs:496:5 [INFO] [stdout] | [INFO] [stdout] 496 | KNIGHT_MOVES[pos.to_bitboard_offset() as usize] [INFO] [stdout] | ----------------------------------------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*self` which is behind a mutable reference [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:28:17 [INFO] [stdout] | [INFO] [stdout] 28 | *self = self.with_set(pos); [INFO] [stdout] | ^^^^ ------------- `*self` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*self` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `BitBoard::with_set` takes ownership of the receiver `self`, which moves `*self` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:22:31 [INFO] [stdout] | [INFO] [stdout] 22 | pub const fn with_set(mut self, pos: BoardPos) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] ... [INFO] [stdout] 28 | *self = self.with_set(pos); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*self` which is behind a mutable reference [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:37:17 [INFO] [stdout] | [INFO] [stdout] 37 | *self = self.with_cleared(pos); [INFO] [stdout] | ^^^^ ----------------- `*self` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*self` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `BitBoard::with_cleared` takes ownership of the receiver `self`, which moves `*self` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:31:35 [INFO] [stdout] | [INFO] [stdout] 31 | pub const fn with_cleared(mut self, pos: BoardPos) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] ... [INFO] [stdout] 37 | *self = self.with_cleared(pos); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of partially moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:184:9 [INFO] [stdout] | [INFO] [stdout] 181 | if let Some(pos) = pos { [INFO] [stdout] | --- value partially moved here [INFO] [stdout] ... [INFO] [stdout] 184 | pos [INFO] [stdout] | ^^^ value used here after partial move [INFO] [stdout] | [INFO] [stdout] = note: partial move occurs because value has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] help: borrow this binding in the pattern to avoid moving the value [INFO] [stdout] | [INFO] [stdout] 181 | if let Some(ref pos) = pos { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/board.rs:71:50 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn get(&self, pos: BoardPos) -> Option<(Color, Piece)> { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 69 | let color = if self.color_board(Color::White)[pos] { [INFO] [stdout] | --- value moved here [INFO] [stdout] 70 | Color::White [INFO] [stdout] 71 | } else if self.color_board(Color::Black)[pos] { [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/board.rs:84:32 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn get(&self, pos: BoardPos) -> Option<(Color, Piece)> { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 69 | let color = if self.color_board(Color::White)[pos] { [INFO] [stdout] | --- value moved here [INFO] [stdout] 70 | Color::White [INFO] [stdout] 71 | } else if self.color_board(Color::Black)[pos] { [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 84 | let piece = if (p | r)[pos] { [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `p` [INFO] [stdout] --> crates/pewter-core/src/board.rs:85:16 [INFO] [stdout] | [INFO] [stdout] 77 | let p = self.piece_board(Piece::Pawn); [INFO] [stdout] | - move occurs because `p` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 84 | let piece = if (p | r)[pos] { [INFO] [stdout] | ------- `p` moved due to usage in operator [INFO] [stdout] 85 | if p[pos] { [INFO] [stdout] | ^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/board.rs:84:25 [INFO] [stdout] | [INFO] [stdout] 84 | let piece = if (p | r)[pos] { [INFO] [stdout] | - you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/board.rs:91:24 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn get(&self, pos: BoardPos) -> Option<(Color, Piece)> { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 84 | let piece = if (p | r)[pos] { [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 91 | if (n | b)[pos] { [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `n` [INFO] [stdout] --> crates/pewter-core/src/board.rs:92:20 [INFO] [stdout] | [INFO] [stdout] 79 | let n = self.piece_board(Piece::Knight); [INFO] [stdout] | - move occurs because `n` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 91 | if (n | b)[pos] { [INFO] [stdout] | ------- `n` moved due to usage in operator [INFO] [stdout] 92 | if n[pos] { [INFO] [stdout] | ^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/board.rs:91:17 [INFO] [stdout] | [INFO] [stdout] 91 | if (n | b)[pos] { [INFO] [stdout] | - you could clone this value [INFO] [stdout] note: calling this operator moves the left-hand side [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/ops/bit.rs:261:14 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/board.rs:98:22 [INFO] [stdout] | [INFO] [stdout] 68 | pub fn get(&self, pos: BoardPos) -> Option<(Color, Piece)> { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 91 | if (n | b)[pos] { [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 98 | if k[pos] { [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `mask` [INFO] [stdout] --> crates/pewter-core/src/board.rs:115:40 [INFO] [stdout] | [INFO] [stdout] 110 | let mask = BitBoard::single(pos); [INFO] [stdout] | ---- move occurs because `mask` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 113 | debug_assert!(!(self.all_union_board() & mask).any()); [INFO] [stdout] | ---- value moved here [INFO] [stdout] 114 | [INFO] [stdout] 115 | self.xor_inplace(color, piece, mask); [INFO] [stdout] | ^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/board.rs:113:50 [INFO] [stdout] | [INFO] [stdout] 113 | debug_assert!(!(self.all_union_board() & mask).any()); [INFO] [stdout] | ---- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.promotion` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:70:34 [INFO] [stdout] | [INFO] [stdout] 70 | if let Some(promotion) = self.promotion { [INFO] [stdout] | --------- ^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `promotion` has type `Piece`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 70 | if let Some(promotion) = &self.promotion { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.inner.source` which is behind a mutable reference [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:175:23 [INFO] [stdout] | [INFO] [stdout] 175 | from: self.inner.source, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ move occurs because `self.inner.source` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `dest` [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:196:43 [INFO] [stdout] | [INFO] [stdout] 173 | if let Some(dest) = self.inner.dest_set.first_set() { [INFO] [stdout] | ---- move occurs because `dest` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 176 | to: dest, [INFO] [stdout] | ---- value moved here [INFO] [stdout] ... [INFO] [stdout] 196 | self.inner.dest_set.clear(dest); [INFO] [stdout] | ^^^^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*c` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:237:36 [INFO] [stdout] | [INFO] [stdout] 237 | self.chunks.iter().map(|c| c.len() as usize).sum() [INFO] [stdout] | ^ ----- `*c` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*c` has type `MoveSetChunk`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `MoveSetChunk::len` takes ownership of the receiver `self`, which moves `*c` [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:155:16 [INFO] [stdout] | [INFO] [stdout] 155 | pub fn len(self) -> u8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*c` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:247:36 [INFO] [stdout] | [INFO] [stdout] 247 | self.chunks.iter().any(|c| c.any()) [INFO] [stdout] | ^ ----- `*c` moved due to this method call [INFO] [stdout] | | [INFO] [stdout] | move occurs because `*c` has type `MoveSetChunk`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: `MoveSetChunk::any` takes ownership of the receiver `self`, which moves `*c` [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:159:16 [INFO] [stdout] | [INFO] [stdout] 159 | pub fn any(self) -> bool { [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.file` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:262:53 [INFO] [stdout] | [INFO] [stdout] 262 | Some(rank) => Some(Self::from_file_rank(self.file, rank)), [INFO] [stdout] | ^^^^^^^^^ move occurs because `self.file` has type `coordinates::File`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `coordinates::File` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | pub enum File { [INFO] [stdout] | ^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] ... [INFO] [stdout] 262 | Some(rank) => Some(Self::from_file_rank(self.file, rank)), [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `color` [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:268:33 [INFO] [stdout] | [INFO] [stdout] 267 | pub fn two_forward(&self, color: Color) -> Option { [INFO] [stdout] | ----- move occurs because `color` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] 268 | self.forward(color).map(|p| p.forward(color)).flatten() [INFO] [stdout] | ----- ^^^ ----- use occurs due to use in closure [INFO] [stdout] | | | [INFO] [stdout] | | value used here after move [INFO] [stdout] | value moved here [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `forward` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:249:40 [INFO] [stdout] | [INFO] [stdout] 249 | pub const fn forward(&self, color: Color) -> Option { [INFO] [stdout] | ------- ^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/coordinates.rs:268:22 [INFO] [stdout] | [INFO] [stdout] 268 | self.forward(color).map(|p| p.forward(color)).flatten() [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.rank` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:276:48 [INFO] [stdout] | [INFO] [stdout] 276 | .map(|file| Self::from_file_rank(file, self.rank)) [INFO] [stdout] | ^^^^^^^^^ move occurs because `self.rank` has type `Rank`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Rank` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] ... [INFO] [stdout] 276 | .map(|file| Self::from_file_rank(file, self.rank)) [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.rank` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:284:48 [INFO] [stdout] | [INFO] [stdout] 284 | .map(|file| Self::from_file_rank(file, self.rank)) [INFO] [stdout] | ^^^^^^^^^ move occurs because `self.rank` has type `Rank`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Rank` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] ... [INFO] [stdout] 284 | .map(|file| Self::from_file_rank(file, self.rank)) [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*file` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/io/ascii.rs:18:46 [INFO] [stdout] | [INFO] [stdout] 18 | sym(BoardPos::from_file_rank(*file, *rank)) [INFO] [stdout] | ^^^^^ move occurs because `*file` has type `coordinates::File`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `coordinates::File` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | pub enum File { [INFO] [stdout] | ^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/io/ascii.rs:18:46 [INFO] [stdout] | [INFO] [stdout] 18 | sym(BoardPos::from_file_rank(*file, *rank)) [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*rank` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/io/ascii.rs:18:53 [INFO] [stdout] | [INFO] [stdout] 18 | sym(BoardPos::from_file_rank(*file, *rank)) [INFO] [stdout] | ^^^^^ move occurs because `*rank` has type `Rank`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Rank` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/io/ascii.rs:18:53 [INFO] [stdout] | [INFO] [stdout] 18 | sym(BoardPos::from_file_rank(*file, *rank)) [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*rank` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/io/fen.rs:100:48 [INFO] [stdout] | [INFO] [stdout] 100 | state.add_piece(color, piece, (*rank, *file).into()) [INFO] [stdout] | ^^^^^ move occurs because `*rank` has type `Rank`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Rank` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Rank { [INFO] [stdout] | ^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/io/fen.rs:100:48 [INFO] [stdout] | [INFO] [stdout] 100 | state.add_piece(color, piece, (*rank, *file).into()) [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `*file` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/io/fen.rs:100:55 [INFO] [stdout] | [INFO] [stdout] 100 | state.add_piece(color, piece, (*rank, *file).into()) [INFO] [stdout] | ^^^^^ move occurs because `*file` has type `coordinates::File`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `coordinates::File` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/coordinates.rs:87:1 [INFO] [stdout] | [INFO] [stdout] 87 | pub enum File { [INFO] [stdout] | ^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/io/fen.rs:100:55 [INFO] [stdout] | [INFO] [stdout] 100 | state.add_piece(color, piece, (*rank, *file).into()) [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `piece` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:76:11 [INFO] [stdout] | [INFO] [stdout] 70 | piece: Piece, [INFO] [stdout] | ----- move occurs because `piece` has type `Piece`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 74 | let mut chunk = super::pseudo_legal::pseudo_legal_moves(state, piece, pos); [INFO] [stdout] | ----- value moved here [INFO] [stdout] 75 | [INFO] [stdout] 76 | match piece { [INFO] [stdout] | ^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `pseudo_legal_moves` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:29:49 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn pseudo_legal_moves(state: &State, piece: Piece, source: BoardPos) -> MoveSetChunk { [INFO] [stdout] | ------------------ in this function ^^^^^ this parameter takes ownership of the value [INFO] [stdout] note: if `Piece` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/piece.rs:4:1 [INFO] [stdout] | [INFO] [stdout] 4 | pub enum Piece { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:74:68 [INFO] [stdout] | [INFO] [stdout] 74 | let mut chunk = super::pseudo_legal::pseudo_legal_moves(state, piece, pos); [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:77:44 [INFO] [stdout] | [INFO] [stdout] 71 | pos: BoardPos, [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 74 | let mut chunk = super::pseudo_legal::pseudo_legal_moves(state, piece, pos); [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 77 | Piece::Pawn => pawn_special(state, pos, &mut chunk, check_mask), [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `pseudo_legal_moves` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:29:64 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn pseudo_legal_moves(state: &State, piece: Piece, source: BoardPos) -> MoveSetChunk { [INFO] [stdout] | ------------------ in this function ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `k_pos`, a captured variable in an `FnMut` closure [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:141:42 [INFO] [stdout] | [INFO] [stdout] 118 | let k_pos = state.king_pos(state.to_play); [INFO] [stdout] | ----- captured outer variable [INFO] [stdout] ... [INFO] [stdout] 141 | .map(|danger_pos| masks::between(k_pos, danger_pos)) [INFO] [stdout] | ------------ ^^^^^ move occurs because `k_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] | | [INFO] [stdout] | captured by this `FnMut` closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.en_passant` as enum variant `Some` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:89:24 [INFO] [stdout] | [INFO] [stdout] 89 | let ep_pos = match state.en_passant { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] 90 | Some(ep_pos) => ep_pos, [INFO] [stdout] | ------ [INFO] [stdout] | | [INFO] [stdout] | data moved here [INFO] [stdout] | move occurs because `ep_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 89 | let ep_pos = match &state.en_passant { [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:94:34 [INFO] [stdout] | [INFO] [stdout] 94 | let pa = masks::pawn_attacks(state.to_play, pos); [INFO] [stdout] | ^^^^^^^^^^^^^ move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:94:34 [INFO] [stdout] | [INFO] [stdout] 94 | let pa = masks::pawn_attacks(state.to_play, pos); [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `ep_pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:99:24 [INFO] [stdout] | [INFO] [stdout] 89 | let ep_pos = match state.en_passant { [INFO] [stdout] | ------ move occurs because `ep_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 95 | if !pa.get(ep_pos) { [INFO] [stdout] | ------ value moved here [INFO] [stdout] ... [INFO] [stdout] 99 | let old_pawn_pos = ep_pos.forward(!state.to_play).unwrap(); [INFO] [stdout] | ^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `get` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:40:34 [INFO] [stdout] | [INFO] [stdout] 40 | pub const fn get(&self, pos: BoardPos) -> bool { [INFO] [stdout] | --- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:99:40 [INFO] [stdout] | [INFO] [stdout] 99 | let old_pawn_pos = ep_pos.forward(!state.to_play).unwrap(); [INFO] [stdout] | -^^^^^^^^^^^^^ [INFO] [stdout] | || [INFO] [stdout] | |move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | `state.to_play` moved due to usage in operator [INFO] [stdout] | [INFO] [stdout] note: calling this operator moves the value [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/ops/bit.rs:51:12 [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:99:40 [INFO] [stdout] | [INFO] [stdout] 99 | let old_pawn_pos = ep_pos.forward(!state.to_play).unwrap(); [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.checkers` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:101:8 [INFO] [stdout] | [INFO] [stdout] 101 | if state [INFO] [stdout] | ________^ [INFO] [stdout] 102 | | .checkers [INFO] [stdout] | |_________________^ move occurs because `state.checkers` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] 103 | .with_cleared(old_pawn_pos) [INFO] [stdout] | -------------------------- `state.checkers` moved due to this method call [INFO] [stdout] | [INFO] [stdout] note: `BitBoard::with_cleared` takes ownership of the receiver `self`, which moves `state.checkers` [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:31:35 [INFO] [stdout] | [INFO] [stdout] 31 | pub const fn with_cleared(mut self, pos: BoardPos) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:101:8 [INFO] [stdout] | [INFO] [stdout] 101 | if state [INFO] [stdout] | ________- [INFO] [stdout] 102 | | .checkers [INFO] [stdout] | |_________________- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:115:23 [INFO] [stdout] | [INFO] [stdout] 86 | fn pawn_special(state: &State, pos: BoardPos, chunk: &mut MoveSetChunk, check_mask: BitBoard) { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 94 | let pa = masks::pawn_attacks(state.to_play, pos); [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 115 | .with_cleared(pos) [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `pawn_attacks` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:442:46 [INFO] [stdout] | [INFO] [stdout] 442 | pub const fn pawn_attacks(color: Color, pos: BoardPos) -> BitBoard { [INFO] [stdout] | ------------ in this function ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `old_pawn_pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:116:23 [INFO] [stdout] | [INFO] [stdout] 99 | let old_pawn_pos = ep_pos.forward(!state.to_play).unwrap(); [INFO] [stdout] | ------------ move occurs because `old_pawn_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 103 | .with_cleared(old_pawn_pos) [INFO] [stdout] | ------------ value moved here [INFO] [stdout] ... [INFO] [stdout] 116 | .with_cleared(old_pawn_pos); [INFO] [stdout] | ^^^^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `with_cleared` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:31:46 [INFO] [stdout] | [INFO] [stdout] 31 | pub const fn with_cleared(mut self, pos: BoardPos) -> Self { [INFO] [stdout] | ------------ in this method ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:118:32 [INFO] [stdout] | [INFO] [stdout] 118 | let k_pos = state.king_pos(state.to_play); [INFO] [stdout] | ^^^^^^^^^^^^^ move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:118:32 [INFO] [stdout] | [INFO] [stdout] 118 | let k_pos = state.king_pos(state.to_play); [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:120:46 [INFO] [stdout] | [INFO] [stdout] 120 | let opp_board = state.board.color_board(!state.to_play); [INFO] [stdout] | -^^^^^^^^^^^^^ [INFO] [stdout] | || [INFO] [stdout] | |move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | `state.to_play` moved due to usage in operator [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:120:46 [INFO] [stdout] | [INFO] [stdout] 120 | let opp_board = state.board.color_board(!state.to_play); [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `opp_board` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:132:25 [INFO] [stdout] | [INFO] [stdout] 120 | let opp_board = state.board.color_board(!state.to_play); [INFO] [stdout] | --------- move occurs because `opp_board` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 126 | .intersect_with(opp_board) [INFO] [stdout] | --------- value moved here [INFO] [stdout] ... [INFO] [stdout] 132 | .intersect_with(opp_board) [INFO] [stdout] | ^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `intersect_with` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:64:47 [INFO] [stdout] | [INFO] [stdout] 64 | pub const fn intersect_with(&self, other: Self) -> Self { [INFO] [stdout] | -------------- ^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:126:25 [INFO] [stdout] | [INFO] [stdout] 126 | .intersect_with(opp_board) [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `k_pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:133:44 [INFO] [stdout] | [INFO] [stdout] 118 | let k_pos = state.king_pos(state.to_play); [INFO] [stdout] | ----- move occurs because `k_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 127 | .intersect_with(masks::rook_rays(k_pos)); [INFO] [stdout] | ----- value moved here [INFO] [stdout] ... [INFO] [stdout] 133 | .intersect_with(masks::bishop_rays(k_pos)); [INFO] [stdout] | ^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `rook_rays` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:113:29 [INFO] [stdout] | [INFO] [stdout] 113 | pub const fn rook_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | --------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `k_pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:141:14 [INFO] [stdout] | [INFO] [stdout] 118 | let k_pos = state.king_pos(state.to_play); [INFO] [stdout] | ----- move occurs because `k_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 133 | .intersect_with(masks::bishop_rays(k_pos)); [INFO] [stdout] | ----- value moved here [INFO] [stdout] ... [INFO] [stdout] 141 | .map(|danger_pos| masks::between(k_pos, danger_pos)) [INFO] [stdout] | ^^^^^^^^^^^^ ----- use occurs due to use in closure [INFO] [stdout] | | [INFO] [stdout] | value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `bishop_rays` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:123:31 [INFO] [stdout] | [INFO] [stdout] 123 | pub const fn bishop_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | ----------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `ep_pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:146:28 [INFO] [stdout] | [INFO] [stdout] 89 | let ep_pos = match state.en_passant { [INFO] [stdout] | ------ move occurs because `ep_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 114 | .with_set(ep_pos) [INFO] [stdout] | ------ value moved here [INFO] [stdout] ... [INFO] [stdout] 146 | chunk.dest_set.set(ep_pos); [INFO] [stdout] | ^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `with_set` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:22:42 [INFO] [stdout] | [INFO] [stdout] 22 | pub const fn with_set(mut self, pos: BoardPos) -> Self { [INFO] [stdout] | -------- in this method ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `pos`, a captured variable in an `FnMut` closure [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:174:44 [INFO] [stdout] | [INFO] [stdout] 150 | fn legal_king_pos(state: &State, pos: BoardPos) -> bool { [INFO] [stdout] | --- captured outer variable [INFO] [stdout] ... [INFO] [stdout] 174 | .map(|attacker_pos| masks::between(pos, attacker_pos)) [INFO] [stdout] | -------------- ^^^ move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] | | [INFO] [stdout] | captured by this `FnMut` closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:155:56 [INFO] [stdout] | [INFO] [stdout] 155 | .intersect_with(!state.board.color_piece_board(state.to_play, Piece::King)) [INFO] [stdout] | ^^^^^^^^^^^^^ move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:155:56 [INFO] [stdout] | [INFO] [stdout] 155 | .intersect_with(!state.board.color_piece_board(state.to_play, Piece::King)) [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:161:50 [INFO] [stdout] | [INFO] [stdout] 161 | .intersect_with(state.board.color_board(!state.to_play)) [INFO] [stdout] | -^^^^^^^^^^^^^ [INFO] [stdout] | || [INFO] [stdout] | |move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | `state.to_play` moved due to usage in operator [INFO] [stdout] | [INFO] [stdout] note: calling this operator moves the value [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/ops/bit.rs:51:12 [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:161:50 [INFO] [stdout] | [INFO] [stdout] 161 | .intersect_with(state.board.color_board(!state.to_play)) [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:162:42 [INFO] [stdout] | [INFO] [stdout] 150 | fn legal_king_pos(state: &State, pos: BoardPos) -> bool { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 156 | .with_set(pos); [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 162 | .intersect_with(masks::rook_rays(pos)); [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `with_set` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:22:42 [INFO] [stdout] | [INFO] [stdout] 22 | pub const fn with_set(mut self, pos: BoardPos) -> Self { [INFO] [stdout] | -------- in this method ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:167:50 [INFO] [stdout] | [INFO] [stdout] 167 | .intersect_with(state.board.color_board(!state.to_play)) [INFO] [stdout] | -^^^^^^^^^^^^^ [INFO] [stdout] | || [INFO] [stdout] | |move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | `state.to_play` moved due to usage in operator [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:167:50 [INFO] [stdout] | [INFO] [stdout] 167 | .intersect_with(state.board.color_board(!state.to_play)) [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:168:44 [INFO] [stdout] | [INFO] [stdout] 150 | fn legal_king_pos(state: &State, pos: BoardPos) -> bool { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 162 | .intersect_with(masks::rook_rays(pos)); [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 168 | .intersect_with(masks::bishop_rays(pos)); [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `rook_rays` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:113:29 [INFO] [stdout] | [INFO] [stdout] 113 | pub const fn rook_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | --------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:174:14 [INFO] [stdout] | [INFO] [stdout] 150 | fn legal_king_pos(state: &State, pos: BoardPos) -> bool { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 168 | .intersect_with(masks::bishop_rays(pos)); [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 174 | .map(|attacker_pos| masks::between(pos, attacker_pos)) [INFO] [stdout] | ^^^^^^^^^^^^^^ --- use occurs due to use in closure [INFO] [stdout] | | [INFO] [stdout] | value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `bishop_rays` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:123:31 [INFO] [stdout] | [INFO] [stdout] 123 | pub const fn bishop_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | ----------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:180:29 [INFO] [stdout] | [INFO] [stdout] 180 | .color_piece_board(!state.to_play, Piece::Knight) [INFO] [stdout] | -^^^^^^^^^^^^^ [INFO] [stdout] | || [INFO] [stdout] | |move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | `state.to_play` moved due to usage in operator [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:180:29 [INFO] [stdout] | [INFO] [stdout] 180 | .color_piece_board(!state.to_play, Piece::Knight) [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:181:45 [INFO] [stdout] | [INFO] [stdout] 150 | fn legal_king_pos(state: &State, pos: BoardPos) -> bool { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 174 | .map(|attacker_pos| masks::between(pos, attacker_pos)) [INFO] [stdout] | -------------- --- variable moved due to use in closure [INFO] [stdout] | | [INFO] [stdout] | value moved into closure here [INFO] [stdout] ... [INFO] [stdout] 181 | .intersect_with(masks::knight_moves(pos)) [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `between` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:324:25 [INFO] [stdout] | [INFO] [stdout] 324 | pub const fn between(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | ------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:184:48 [INFO] [stdout] | [INFO] [stdout] 184 | let pawns = state.board.color_piece_board(!state.to_play, Piece::Pawn); [INFO] [stdout] | -^^^^^^^^^^^^^ [INFO] [stdout] | || [INFO] [stdout] | |move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | `state.to_play` moved due to usage in operator [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:184:48 [INFO] [stdout] | [INFO] [stdout] 184 | let pawns = state.board.color_piece_board(!state.to_play, Piece::Pawn); [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:186:45 [INFO] [stdout] | [INFO] [stdout] 186 | .intersect_with(masks::pawn_attacks(state.to_play, pos)) [INFO] [stdout] | ^^^^^^^^^^^^^ move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:186:45 [INFO] [stdout] | [INFO] [stdout] 186 | .intersect_with(masks::pawn_attacks(state.to_play, pos)) [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:186:60 [INFO] [stdout] | [INFO] [stdout] 150 | fn legal_king_pos(state: &State, pos: BoardPos) -> bool { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 181 | .intersect_with(masks::knight_moves(pos)) [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 186 | .intersect_with(masks::pawn_attacks(state.to_play, pos)) [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `knight_moves` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:495:32 [INFO] [stdout] | [INFO] [stdout] 495 | pub const fn knight_moves(pos: BoardPos) -> BitBoard { [INFO] [stdout] | ------------ ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:189:51 [INFO] [stdout] | [INFO] [stdout] 189 | let opp_king = state.board.color_piece_board(!state.to_play, Piece::King); [INFO] [stdout] | -^^^^^^^^^^^^^ [INFO] [stdout] | || [INFO] [stdout] | |move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | `state.to_play` moved due to usage in operator [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/legal.rs:189:51 [INFO] [stdout] | [INFO] [stdout] 189 | let opp_king = state.board.color_piece_board(!state.to_play, Piece::King); [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/movegen/legal.rs:191:50 [INFO] [stdout] | [INFO] [stdout] 150 | fn legal_king_pos(state: &State, pos: BoardPos) -> bool { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 186 | .intersect_with(masks::pawn_attacks(state.to_play, pos)) [INFO] [stdout] | --- value moved here [INFO] [stdout] ... [INFO] [stdout] 191 | .intersect_with(pseudo_legal::king_moves(pos, BitBoard::new_empty())) [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `pawn_attacks` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:442:46 [INFO] [stdout] | [INFO] [stdout] 442 | pub const fn pawn_attacks(color: Color, pos: BoardPos) -> BitBoard { [INFO] [stdout] | ------------ in this function ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `state.to_play` which is behind a shared reference [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | let color = state.to_play; [INFO] [stdout] | ^^^^^^^^^^^^^ move occurs because `state.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/pseudo_legal.rs:30:17 [INFO] [stdout] | [INFO] [stdout] 30 | let color = state.to_play; [INFO] [stdout] | ------------- you could clone this value [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 30 | let color = &state.to_play; [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `color` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:32:47 [INFO] [stdout] | [INFO] [stdout] 30 | let color = state.to_play; [INFO] [stdout] | ----- move occurs because `color` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] 31 | let our_pieces = state.board.color_board(color); [INFO] [stdout] | ----- value moved here [INFO] [stdout] 32 | let opp_pieces = state.board.color_board(!color); [INFO] [stdout] | ^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `color_board` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/board.rs:21:44 [INFO] [stdout] | [INFO] [stdout] 21 | pub const fn color_board(&self, color: Color) -> BitBoard { [INFO] [stdout] | ----------- ^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/pseudo_legal.rs:31:46 [INFO] [stdout] | [INFO] [stdout] 31 | let our_pieces = state.board.color_board(color); [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `color` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:35:42 [INFO] [stdout] | [INFO] [stdout] 30 | let color = state.to_play; [INFO] [stdout] | ----- move occurs because `color` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] 31 | let our_pieces = state.board.color_board(color); [INFO] [stdout] 32 | let opp_pieces = state.board.color_board(!color); [INFO] [stdout] | ------ `color` moved due to usage in operator [INFO] [stdout] ... [INFO] [stdout] 35 | Piece::Pawn => pawn_psuedo_legal(color, source, our_pieces, opp_pieces), [INFO] [stdout] | ^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/pseudo_legal.rs:32:47 [INFO] [stdout] | [INFO] [stdout] 32 | let opp_pieces = state.board.color_board(!color); [INFO] [stdout] | ----- you could clone this value [INFO] [stdout] note: calling this operator moves the value [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/ops/bit.rs:51:12 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `source` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:42:48 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn pseudo_legal_moves(state: &State, piece: Piece, source: BoardPos) -> MoveSetChunk { [INFO] [stdout] | ------ move occurs because `source` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 41 | let r = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &ROOK_DIRS); [INFO] [stdout] | ------ value moved here [INFO] [stdout] 42 | let b = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &BISHOP_DIRS); [INFO] [stdout] | ^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `sliding_piece_pseudo_legal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 92 | fn sliding_piece_pseudo_legal( [INFO] [stdout] | -------------------------- in this function [INFO] [stdout] 93 | source: BoardPos, [INFO] [stdout] | ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `our_pieces` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:42:56 [INFO] [stdout] | [INFO] [stdout] 31 | let our_pieces = state.board.color_board(color); [INFO] [stdout] | ---------- move occurs because `our_pieces` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 41 | let r = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &ROOK_DIRS); [INFO] [stdout] | ---------- value moved here [INFO] [stdout] 42 | let b = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &BISHOP_DIRS); [INFO] [stdout] | ^^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `sliding_piece_pseudo_legal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:94:17 [INFO] [stdout] | [INFO] [stdout] 92 | fn sliding_piece_pseudo_legal( [INFO] [stdout] | -------------------------- in this function [INFO] [stdout] 93 | source: BoardPos, [INFO] [stdout] 94 | our_pieces: BitBoard, [INFO] [stdout] | ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/pseudo_legal.rs:41:56 [INFO] [stdout] | [INFO] [stdout] 41 | let r = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &ROOK_DIRS); [INFO] [stdout] | ---------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `opp_pieces` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:42:68 [INFO] [stdout] | [INFO] [stdout] 32 | let opp_pieces = state.board.color_board(!color); [INFO] [stdout] | ---------- move occurs because `opp_pieces` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 41 | let r = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &ROOK_DIRS); [INFO] [stdout] | ---------- value moved here [INFO] [stdout] 42 | let b = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &BISHOP_DIRS); [INFO] [stdout] | ^^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `sliding_piece_pseudo_legal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:95:17 [INFO] [stdout] | [INFO] [stdout] 92 | fn sliding_piece_pseudo_legal( [INFO] [stdout] | -------------------------- in this function [INFO] [stdout] ... [INFO] [stdout] 95 | opp_pieces: BitBoard, [INFO] [stdout] | ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/pseudo_legal.rs:41:68 [INFO] [stdout] | [INFO] [stdout] 41 | let r = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &ROOK_DIRS); [INFO] [stdout] | ---------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `source` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:44:17 [INFO] [stdout] | [INFO] [stdout] 29 | pub fn pseudo_legal_moves(state: &State, piece: Piece, source: BoardPos) -> MoveSetChunk { [INFO] [stdout] | ------ move occurs because `source` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 42 | let b = sliding_piece_pseudo_legal(source, our_pieces, opp_pieces, &BISHOP_DIRS); [INFO] [stdout] | ------ value moved here [INFO] [stdout] 43 | MoveSetChunk { [INFO] [stdout] 44 | source, [INFO] [stdout] | ^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `sliding_piece_pseudo_legal` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:93:13 [INFO] [stdout] | [INFO] [stdout] 92 | fn sliding_piece_pseudo_legal( [INFO] [stdout] | -------------------------- in this function [INFO] [stdout] 93 | source: BoardPos, [INFO] [stdout] | ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `source` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:86:9 [INFO] [stdout] | [INFO] [stdout] 81 | fn knight_pseudo_legal(source: BoardPos, our_pieces: BitBoard) -> MoveSetChunk { [INFO] [stdout] | ------ move occurs because `source` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 82 | let dest_set = masks::knight_moves(source) [INFO] [stdout] | ------ value moved here [INFO] [stdout] ... [INFO] [stdout] 86 | source, [INFO] [stdout] | ^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `knight_moves` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:495:32 [INFO] [stdout] | [INFO] [stdout] 495 | pub const fn knight_moves(pos: BoardPos) -> BitBoard { [INFO] [stdout] | ------------ ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: borrow of moved value: `source` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:100:52 [INFO] [stdout] | [INFO] [stdout] 93 | source: BoardPos, [INFO] [stdout] | ------ move occurs because `source` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 98 | let mut chunk = MoveSetChunk::new_empty(source); [INFO] [stdout] | ------ value moved here [INFO] [stdout] 99 | [INFO] [stdout] 100 | let source_nums = (source.file.to_num() as i8, source.rank.to_num() as i8); [INFO] [stdout] | ^^^^^^^^^^^ value borrowed here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `new_empty` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/chessmove.rs:140:36 [INFO] [stdout] | [INFO] [stdout] 140 | pub const fn new_empty(source: BoardPos) -> Self { [INFO] [stdout] | --------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `dest` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:124:32 [INFO] [stdout] | [INFO] [stdout] 114 | let dest = BoardPos::from_file_rank( [INFO] [stdout] | ---- move occurs because `dest` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 119 | let dest_mask = BitBoard::single(dest); [INFO] [stdout] | ---- value moved here [INFO] [stdout] ... [INFO] [stdout] 124 | chunk.dest_set.set(dest); [INFO] [stdout] | ^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `single` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:18:30 [INFO] [stdout] | [INFO] [stdout] 18 | pub const fn single(pos: BoardPos) -> Self { [INFO] [stdout] | ------ ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `dest_mask` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:125:42 [INFO] [stdout] | [INFO] [stdout] 119 | let dest_mask = BitBoard::single(dest); [INFO] [stdout] | --------- move occurs because `dest_mask` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] 120 | if our_pieces.intersect_with(dest_mask).any() { [INFO] [stdout] | --------- value moved here [INFO] [stdout] ... [INFO] [stdout] 125 | if opp_pieces.intersect_with(dest_mask).any() { [INFO] [stdout] | ^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `intersect_with` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:64:47 [INFO] [stdout] | [INFO] [stdout] 64 | pub const fn intersect_with(&self, other: Self) -> Self { [INFO] [stdout] | -------------- ^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/movegen/pseudo_legal.rs:120:42 [INFO] [stdout] | [INFO] [stdout] 120 | if our_pieces.intersect_with(dest_mask).any() { [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `source` [INFO] [stdout] --> crates/pewter-core/src/movegen/pseudo_legal.rs:151:30 [INFO] [stdout] | [INFO] [stdout] 148 | fn king_pseudo_legal(source: BoardPos, our_pieces: BitBoard) -> MoveSetChunk { [INFO] [stdout] | ------ move occurs because `source` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 149 | MoveSetChunk { [INFO] [stdout] 150 | source, [INFO] [stdout] | ------ value moved here [INFO] [stdout] 151 | dest_set: king_moves(source, our_pieces), [INFO] [stdout] | ^^^^^^ value used here after move [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `m` [INFO] [stdout] --> crates/pewter-core/src/movegen/mod.rs:24:49 [INFO] [stdout] | [INFO] [stdout] 24 | .map(|m| (m, perft(state.apply_move(m), depth - 1))) [INFO] [stdout] | - - ^ value used here after move [INFO] [stdout] | | | [INFO] [stdout] | | value moved here [INFO] [stdout] | move occurs because `m` has type `Move`, which does not implement the `Copy` trait [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0507]: cannot move out of `self.to_play` which is behind a mutable reference [INFO] [stdout] --> crates/pewter-core/src/state.rs:104:25 [INFO] [stdout] | [INFO] [stdout] 104 | let our_color = self.to_play; [INFO] [stdout] | ^^^^^^^^^^^^ move occurs because `self.to_play` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:104:25 [INFO] [stdout] | [INFO] [stdout] 104 | let our_color = self.to_play; [INFO] [stdout] | ------------ you could clone this value [INFO] [stdout] help: consider borrowing here [INFO] [stdout] | [INFO] [stdout] 104 | let our_color = &self.to_play; [INFO] [stdout] | + [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `our_color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:107:35 [INFO] [stdout] | [INFO] [stdout] 104 | let our_color = self.to_play; [INFO] [stdout] | --------- move occurs because `our_color` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] 105 | let opp_color = !our_color; [INFO] [stdout] | ---------- `our_color` moved due to usage in operator [INFO] [stdout] 106 | [INFO] [stdout] 107 | let k_pos = self.king_pos(our_color); [INFO] [stdout] | ^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:105:26 [INFO] [stdout] | [INFO] [stdout] 105 | let opp_color = !our_color; [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] note: calling this operator moves the value [INFO] [stdout] --> /rustc/f609b7e0586f81fefb3523e3e17adf779ac416be/library/core/src/ops/bit.rs:51:12 [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `k_pos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:117:48 [INFO] [stdout] | [INFO] [stdout] 107 | let k_pos = self.king_pos(our_color); [INFO] [stdout] | ----- move occurs because `k_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 108 | let k_mask = BitBoard::single(k_pos); [INFO] [stdout] | ----- value moved here [INFO] [stdout] ... [INFO] [stdout] 117 | .intersect_with(masks::bishop_rays(k_pos)); [INFO] [stdout] | ^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `single` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:18:30 [INFO] [stdout] | [INFO] [stdout] 18 | pub const fn single(pos: BoardPos) -> Self { [INFO] [stdout] | ------ ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `queens` [INFO] [stdout] --> crates/pewter-core/src/state.rs:122:25 [INFO] [stdout] | [INFO] [stdout] 110 | let queens = self.board.piece_board(Piece::Queen); [INFO] [stdout] | ------ move occurs because `queens` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 115 | .union_with(queens) [INFO] [stdout] | ------ value moved here [INFO] [stdout] ... [INFO] [stdout] 122 | .union_with(queens) [INFO] [stdout] | ^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `union_with` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:60:43 [INFO] [stdout] | [INFO] [stdout] 60 | pub const fn union_with(&self, other: Self) -> Self { [INFO] [stdout] | ---------- ^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:115:25 [INFO] [stdout] | [INFO] [stdout] 115 | .union_with(queens) [INFO] [stdout] | ------ you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `opp_color_mask` [INFO] [stdout] --> crates/pewter-core/src/state.rs:123:29 [INFO] [stdout] | [INFO] [stdout] 109 | let opp_color_mask = self.board.color_board(opp_color); [INFO] [stdout] | -------------- move occurs because `opp_color_mask` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 116 | .intersect_with(opp_color_mask) [INFO] [stdout] | -------------- value moved here [INFO] [stdout] ... [INFO] [stdout] 123 | .intersect_with(opp_color_mask) [INFO] [stdout] | ^^^^^^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `intersect_with` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:64:47 [INFO] [stdout] | [INFO] [stdout] 64 | pub const fn intersect_with(&self, other: Self) -> Self { [INFO] [stdout] | -------------- ^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:116:29 [INFO] [stdout] | [INFO] [stdout] 116 | .intersect_with(opp_color_mask) [INFO] [stdout] | -------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `k_pos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:124:46 [INFO] [stdout] | [INFO] [stdout] 107 | let k_pos = self.king_pos(our_color); [INFO] [stdout] | ----- move occurs because `k_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 117 | .intersect_with(masks::bishop_rays(k_pos)); [INFO] [stdout] | ----- value moved here [INFO] [stdout] ... [INFO] [stdout] 124 | .intersect_with(masks::rook_rays(k_pos)); [INFO] [stdout] | ^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `bishop_rays` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:123:31 [INFO] [stdout] | [INFO] [stdout] 123 | pub const fn bishop_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | ----------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `union_board` [INFO] [stdout] --> crates/pewter-core/src/state.rs:130:56 [INFO] [stdout] | [INFO] [stdout] 128 | let union_board = self.board.all_union_board(); [INFO] [stdout] | ----------- move occurs because `union_board` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] 129 | for pos in all_pinners.iter_set() { [INFO] [stdout] | --------------------------------- inside of this loop [INFO] [stdout] 130 | let between = masks::between(pos, k_pos) & union_board; [INFO] [stdout] | ^^^^^^^^^^^ value moved here, in previous iteration of loop [INFO] [stdout] | [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:130:56 [INFO] [stdout] | [INFO] [stdout] 130 | let between = masks::between(pos, k_pos) & union_board; [INFO] [stdout] | ----------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:132:40 [INFO] [stdout] | [INFO] [stdout] 129 | for pos in all_pinners.iter_set() { [INFO] [stdout] | --- move occurs because `pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] 130 | let between = masks::between(pos, k_pos) & union_board; [INFO] [stdout] | --- value moved here [INFO] [stdout] 131 | match between.count() { [INFO] [stdout] 132 | 0 => self.checkers.set(pos), [INFO] [stdout] | ^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `between` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:324:25 [INFO] [stdout] | [INFO] [stdout] 324 | pub const fn between(a: BoardPos, b: BoardPos) -> BitBoard { [INFO] [stdout] | ------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `opp_color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:140:32 [INFO] [stdout] | [INFO] [stdout] 105 | let opp_color = !our_color; [INFO] [stdout] | --------- move occurs because `opp_color` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 109 | let opp_color_mask = self.board.color_board(opp_color); [INFO] [stdout] | --------- value moved here [INFO] [stdout] ... [INFO] [stdout] 140 | .color_piece_board(opp_color, Piece::Pawn) [INFO] [stdout] | ^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `color_board` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/board.rs:21:44 [INFO] [stdout] | [INFO] [stdout] 21 | pub const fn color_board(&self, color: Color) -> BitBoard { [INFO] [stdout] | ----------- ^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:109:53 [INFO] [stdout] | [INFO] [stdout] 109 | let opp_color_mask = self.board.color_board(opp_color); [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `k_mask` [INFO] [stdout] --> crates/pewter-core/src/state.rs:144:33 [INFO] [stdout] | [INFO] [stdout] 108 | let k_mask = BitBoard::single(k_pos); [INFO] [stdout] | ------ move occurs because `k_mask` has type `BitBoard`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 138 | / for pawn in self [INFO] [stdout] 139 | | .board [INFO] [stdout] 140 | | .color_piece_board(opp_color, Piece::Pawn) [INFO] [stdout] 141 | | .iter_set() [INFO] [stdout] | |_______________________- inside of this loop [INFO] [stdout] ... [INFO] [stdout] 144 | .intersect_with(k_mask); [INFO] [stdout] | ^^^^^^ value moved here, in previous iteration of loop [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `intersect_with` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:64:47 [INFO] [stdout] | [INFO] [stdout] 64 | pub const fn intersect_with(&self, other: Self) -> Self { [INFO] [stdout] | -------------- ^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `BitBoard` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/bitboard/mod.rs:7:1 [INFO] [stdout] | [INFO] [stdout] 7 | pub struct BitBoard(pub u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:144:33 [INFO] [stdout] | [INFO] [stdout] 144 | .intersect_with(k_mask); [INFO] [stdout] | ------ you could clone this value [INFO] [stdout] help: consider moving the expression out of the loop so it is only moved once [INFO] [stdout] | [INFO] [stdout] 138 ~ let mut value = masks::pawn_attacks(opp_color, pawn) [INFO] [stdout] 139 + .intersect_with(k_mask); [INFO] [stdout] 140 ~ for pawn in self [INFO] [stdout] 141 | .board [INFO] [stdout] ... [INFO] [stdout] 144 | { [INFO] [stdout] 145 ~ let pawn_attacks = value; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `pawn` [INFO] [stdout] --> crates/pewter-core/src/state.rs:147:35 [INFO] [stdout] | [INFO] [stdout] 138 | for pawn in self [INFO] [stdout] | ---- move occurs because `pawn` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 143 | let pawn_attacks = masks::pawn_attacks(opp_color, pawn) [INFO] [stdout] | ---- value moved here [INFO] [stdout] ... [INFO] [stdout] 147 | self.checkers.set(pawn); [INFO] [stdout] | ^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `pawn_attacks` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:442:46 [INFO] [stdout] | [INFO] [stdout] 442 | pub const fn pawn_attacks(color: Color, pos: BoardPos) -> BitBoard { [INFO] [stdout] | ------------ in this function ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `opp_color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:153:32 [INFO] [stdout] | [INFO] [stdout] 105 | let opp_color = !our_color; [INFO] [stdout] | --------- move occurs because `opp_color` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 140 | .color_piece_board(opp_color, Piece::Pawn) [INFO] [stdout] | --------- value moved here [INFO] [stdout] ... [INFO] [stdout] 153 | .color_piece_board(opp_color, Piece::Knight) [INFO] [stdout] | ^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `color_piece_board` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/board.rs:25:50 [INFO] [stdout] | [INFO] [stdout] 25 | pub const fn color_piece_board(&self, color: Color, piece: Piece) -> BitBoard { [INFO] [stdout] | ----------------- ^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:140:32 [INFO] [stdout] | [INFO] [stdout] 140 | .color_piece_board(opp_color, Piece::Pawn) [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `k_pos` [INFO] [stdout] --> crates/pewter-core/src/state.rs:154:49 [INFO] [stdout] | [INFO] [stdout] 107 | let k_pos = self.king_pos(our_color); [INFO] [stdout] | ----- move occurs because `k_pos` has type `BoardPos`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 124 | .intersect_with(masks::rook_rays(k_pos)); [INFO] [stdout] | ----- value moved here [INFO] [stdout] ... [INFO] [stdout] 154 | .intersect_with(masks::knight_moves(k_pos)); [INFO] [stdout] | ^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in function `rook_rays` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/bitboard/masks.rs:113:29 [INFO] [stdout] | [INFO] [stdout] 113 | pub const fn rook_rays(pos: BoardPos) -> BitBoard { [INFO] [stdout] | --------- ^^^^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this function [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0382]: use of moved value: `our_color` [INFO] [stdout] --> crates/pewter-core/src/state.rs:159:55 [INFO] [stdout] | [INFO] [stdout] 104 | let our_color = self.to_play; [INFO] [stdout] | --------- move occurs because `our_color` has type `Color`, which does not implement the `Copy` trait [INFO] [stdout] ... [INFO] [stdout] 107 | let k_pos = self.king_pos(our_color); [INFO] [stdout] | --------- value moved here [INFO] [stdout] ... [INFO] [stdout] 159 | .intersect_inplace(self.board.color_board(our_color)); [INFO] [stdout] | ^^^^^^^^^ value used here after move [INFO] [stdout] | [INFO] [stdout] note: consider changing this parameter type in method `king_pos` to borrow instead if owning the value isn't necessary [INFO] [stdout] --> crates/pewter-core/src/state.rs:86:35 [INFO] [stdout] | [INFO] [stdout] 86 | pub fn king_pos(&self, color: Color) -> BoardPos { [INFO] [stdout] | -------- ^^^^^ this parameter takes ownership of the value [INFO] [stdout] | | [INFO] [stdout] | in this method [INFO] [stdout] note: if `Color` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/color.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | pub enum Color { [INFO] [stdout] | ^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] | [INFO] [stdout] ::: crates/pewter-core/src/state.rs:107:35 [INFO] [stdout] | [INFO] [stdout] 107 | let k_pos = self.king_pos(our_color); [INFO] [stdout] | --------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0508]: cannot move out of type `[ZobristHash; 8]`, a non-copy array [INFO] [stdout] --> crates/pewter-core/src/zobrist.rs:49:21 [INFO] [stdout] | [INFO] [stdout] 49 | Some(ep) => consts::ZOBRIST_EP[ep.file.to_num() as usize], [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | cannot move out of here [INFO] [stdout] | move occurs because value has type `ZobristHash`, which does not implement the `Copy` trait [INFO] [stdout] | [INFO] [stdout] note: if `ZobristHash` implemented `Clone`, you could clone the value [INFO] [stdout] --> crates/pewter-core/src/zobrist.rs:8:1 [INFO] [stdout] | [INFO] [stdout] 8 | pub struct ZobristHash(u64); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ consider implementing `Clone` for this type [INFO] [stdout] ... [INFO] [stdout] 49 | Some(ep) => consts::ZOBRIST_EP[ep.file.to_num() as usize], [INFO] [stdout] | --------------------------------------------- you could clone this value [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error: aborting due to 203 previous errors; 5 warnings emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] Some errors have detailed explanations: E0277, E0369, E0382, E0412, E0432, E0433, E0507, E0508, E0557... [INFO] [stdout] [INFO] [stdout] For more information about an error, try `rustc --explain E0277`. [INFO] [stdout] [INFO] [stderr] error: could not compile `pewter-core` (lib) due to 204 previous errors; 5 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] running `Command { std: "docker" "inspect" "e42c29ad2bd7084304618a78bc61ab4dae42800b985076b75dd771642ff7aa0c", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "e42c29ad2bd7084304618a78bc61ab4dae42800b985076b75dd771642ff7aa0c", kill_on_drop: false }` [INFO] [stdout] e42c29ad2bd7084304618a78bc61ab4dae42800b985076b75dd771642ff7aa0c