[INFO] cloning repository https://github.com/ethan-du-toit/whist [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/ethan-du-toit/whist" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fethan-du-toit%2Fwhist", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fethan-du-toit%2Fwhist'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] dba8f09227084612cef19f79a2a1383f1604ca33 [INFO] linting ethan-du-toit/whist against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fethan-du-toit%2Fwhist" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/ethan-du-toit/whist [INFO] finished tweaking git repo https://github.com/ethan-du-toit/whist [INFO] tweaked toml for git repo https://github.com/ethan-du-toit/whist written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/ethan-du-toit/whist on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/ethan-du-toit/whist already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] f4956eb10009a35fd9438768da9b80bb17d47cc77d18aeeca788729ce611c9d2 [INFO] running `Command { std: "docker" "start" "-a" "f4956eb10009a35fd9438768da9b80bb17d47cc77d18aeeca788729ce611c9d2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "f4956eb10009a35fd9438768da9b80bb17d47cc77d18aeeca788729ce611c9d2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "f4956eb10009a35fd9438768da9b80bb17d47cc77d18aeeca788729ce611c9d2", kill_on_drop: false }` [INFO] [stdout] f4956eb10009a35fd9438768da9b80bb17d47cc77d18aeeca788729ce611c9d2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 9120a47dd877dd70be4310bd68127e3fff57a70a0bf80f64418f01377a37cad7 [INFO] running `Command { std: "docker" "start" "-a" "9120a47dd877dd70be4310bd68127e3fff57a70a0bf80f64418f01377a37cad7", kill_on_drop: false }` [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.93 [INFO] [stderr] Compiling libc v0.2.158 [INFO] [stderr] Compiling log v0.4.22 [INFO] [stderr] Compiling wasm-bindgen v0.2.93 [INFO] [stderr] Checking ppv-lite86 v0.2.10 [INFO] [stderr] Compiling quote v1.0.37 [INFO] [stderr] Compiling syn v2.0.76 [INFO] [stderr] Checking getrandom v0.2.15 [INFO] [stderr] Checking rand_core v0.6.3 [INFO] [stderr] Checking rand_chacha v0.3.1 [INFO] [stderr] Checking rand v0.8.4 [INFO] [stderr] Compiling wasm-bindgen-backend v0.2.93 [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.93 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.93 [INFO] [stderr] Checking js-sys v0.3.70 [INFO] [stderr] Checking whist v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:99:1 [INFO] [stdout] | [INFO] [stdout] 99 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:99:1 [INFO] [stdout] | [INFO] [stdout] 99 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: expected names are: `docsrs`, `feature`, and `test` and 31 more [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition name: `wasm_bindgen_unstable_test_coverage` [INFO] [stdout] --> src/lib.rs:112:1 [INFO] [stdout] | [INFO] [stdout] 112 | #[wasm_bindgen] [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: using a cfg inside a attribute macro will use the cfgs from the destination crate and not the ones from the defining crate [INFO] [stdout] = help: try referring to `wasm_bindgen::prelude::__wasm_bindgen_class_marker` crate for guidance on how handle this unexpected cfg [INFO] [stdout] = help: the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` may come from an old version of the `wasm_bindgen_macro` crate, try updating your dependency with `cargo update -p wasm_bindgen_macro` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: this warning originates in the attribute macro `wasm_bindgen::prelude::__wasm_bindgen_class_marker` (in Nightly builds, run with -Z macro-backtrace for more info) [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `FullState` [INFO] [stdout] --> src/lib.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 115 | / pub fn new() -> FullState { [INFO] [stdout] 116 | | FullState { [INFO] [stdout] 117 | | points: (0, 0), [INFO] [stdout] 118 | | trump: 0, [INFO] [stdout] ... | [INFO] [stdout] 127 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 113 + impl Default for FullState { [INFO] [stdout] 114 + fn default() -> Self { [INFO] [stdout] 115 + Self::new() [INFO] [stdout] 116 + } [INFO] [stdout] 117 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:227:26 [INFO] [stdout] | [INFO] [stdout] 227 | &(*cur.outcomes[path[path.len() - 1]].as_ref().unwrap()).state, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cur.outcomes[path[path.len() - 1]].as_ref().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:240:25 [INFO] [stdout] | [INFO] [stdout] 240 | / if x.value as f64 / x.visited as f64 > highest_value { [INFO] [stdout] 241 | | highest_value = x.value as f64 / x.visited as f64; [INFO] [stdout] 242 | | best_move = i; [INFO] [stdout] 243 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 239 ~ Some(x) [INFO] [stdout] 240 ~ if x.value as f64 / x.visited as f64 > highest_value => { [INFO] [stdout] 241 | highest_value = x.value as f64 / x.visited as f64; [INFO] [stdout] 242 | best_move = i; [INFO] [stdout] 243 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:251:13 [INFO] [stdout] | [INFO] [stdout] 251 | / match &self.ais[i] { [INFO] [stdout] 252 | | Some(node) => match &node.outcomes[cardToNum(card_played) as usize] { [INFO] [stdout] 253 | | None => { [INFO] [stdout] 254 | | self.ais[i] = Some(new_node(state_transit(&node.state, card_played))); [INFO] [stdout] ... | [INFO] [stdout] 260 | | None => {} [INFO] [stdout] 261 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 251 ~ if let Some(node) = &self.ais[i] { match &node.outcomes[cardToNum(card_played) as usize] { [INFO] [stdout] 252 + None => { [INFO] [stdout] 253 + self.ais[i] = Some(new_node(state_transit(&node.state, card_played))); [INFO] [stdout] 254 + } [INFO] [stdout] 255 + Some(x) => { [INFO] [stdout] 256 + self.ais[i] = Some((**x).clone()); [INFO] [stdout] 257 + } [INFO] [stdout] 258 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:389:21 [INFO] [stdout] | [INFO] [stdout] 389 | / if (suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 390 | | || (Some(suitOf(*x)) == state.trump [INFO] [stdout] 391 | | && (!trumped || (rankOf(*x) as i8) > maxRank)) [INFO] [stdout] ... | [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 388 ~ Some(x) [INFO] [stdout] 389 ~ if ((suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 390 | || (Some(suitOf(*x)) == state.trump [INFO] [stdout] 391 ~ && (!trumped || (rankOf(*x) as i8) > maxRank))) [INFO] [stdout] 392 ~ => { [INFO] [stdout] 393 | maxRank = rankOf(*x) as i8; [INFO] [stdout] ... [INFO] [stdout] 397 | } [INFO] [stdout] 398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | / match card { [INFO] [stdout] 388 | | Some(x) => { [INFO] [stdout] 389 | | if (suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 390 | | || (Some(suitOf(*x)) == state.trump [INFO] [stdout] ... | [INFO] [stdout] 400 | | None => (), [INFO] [stdout] 401 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 387 ~ if let Some(x) = card { [INFO] [stdout] 388 + if (suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 389 + || (Some(suitOf(*x)) == state.trump [INFO] [stdout] 390 + && (!trumped || (rankOf(*x) as i8) > maxRank)) [INFO] [stdout] 391 + { [INFO] [stdout] 392 + maxRank = rankOf(*x) as i8; [INFO] [stdout] 393 + winner = (8 + i as u8 - (3 - state.player)) % 4; [INFO] [stdout] 394 + if Some(suitOf(*x)) == state.trump { [INFO] [stdout] 395 + trumped = true; [INFO] [stdout] 396 + } [INFO] [stdout] 397 + } [INFO] [stdout] 398 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `trick` [INFO] [stdout] --> src/lib.rs:419:18 [INFO] [stdout] | [INFO] [stdout] 419 | for i in 0..3 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 419 - for i in 0..3 { [INFO] [stdout] 419 + for in &mut trick { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/lib.rs:420:16 [INFO] [stdout] | [INFO] [stdout] 420 | if trick[i] == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `trick[i].is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `allowed` [INFO] [stdout] --> src/lib.rs:475:14 [INFO] [stdout] | [INFO] [stdout] 475 | for i in 0..52 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 475 - for i in 0..52 { [INFO] [stdout] 475 + for (i, ) in allowed.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `allowed` [INFO] [stdout] --> src/lib.rs:480:18 [INFO] [stdout] | [INFO] [stdout] 480 | for j in 0..4 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 480 - for j in 0..4 { [INFO] [stdout] 480 + for (j, ) in allowed.iter_mut().enumerate().take(4) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/lib.rs:499:21 [INFO] [stdout] | [INFO] [stdout] 499 | seen |= (1 as u64) << i; [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `allowed` [INFO] [stdout] --> src/lib.rs:508:26 [INFO] [stdout] | [INFO] [stdout] 508 | for j in 0..52 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 508 - for j in 0..52 { [INFO] [stdout] 508 + for (j, ) in allowed.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:535:33 [INFO] [stdout] | [INFO] [stdout] 535 | if sizes[j] == 0 && allowed[running][j] == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `allowed[running][j]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/lib.rs:544:16 [INFO] [stdout] | [INFO] [stdout] 544 | if random::() % n == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `random::().is_multiple_of(n)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/lib.rs:558:9 [INFO] [stdout] | [INFO] [stdout] 558 | seen = seen | ((1 as u64) << running); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `seen |= ((1 as u64) << running)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/lib.rs:558:24 [INFO] [stdout] | [INFO] [stdout] 558 | seen = seen | ((1 as u64) << running); [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:583:24 [INFO] [stdout] | [INFO] [stdout] 583 | if !(fromSuit(suitOf(x)) == i / 13) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(fromSuit(suitOf(x)) != i / 13)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:583:21 [INFO] [stdout] | [INFO] [stdout] 583 | / if !(fromSuit(suitOf(x)) == i / 13) [INFO] [stdout] 584 | | && !(outin[usize::from(fromSuit(suitOf(x)))]) [INFO] [stdout] 585 | | { [INFO] [stdout] 586 | | continue; [INFO] [stdout] 587 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 582 ~ Some(x) [INFO] [stdout] 583 | if !(fromSuit(suitOf(x)) == i / 13) [INFO] [stdout] 584 | && !(outin[usize::from(fromSuit(suitOf(x)))]) [INFO] [stdout] 585 ~ => { [INFO] [stdout] 586 | continue; [INFO] [stdout] 587 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:659:9 [INFO] [stdout] | [INFO] [stdout] 659 | let card: Card; [INFO] [stdout] | ^^^^^^^^^^^^^^^ created here [INFO] [stdout] ... [INFO] [stdout] 705 | card = p; [INFO] [stdout] | ^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `card` here [INFO] [stdout] | [INFO] [stdout] 659 ~ [INFO] [stdout] 660 | // ok. find action [INFO] [stdout] ... [INFO] [stdout] 704 | [INFO] [stdout] 705 ~ let card: Card = p; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:674:17 [INFO] [stdout] | [INFO] [stdout] 674 | / if outin[usize::from(fromSuit(suitOf(x)))] > 0 { [INFO] [stdout] 675 | | n = outin[usize::from(fromSuit(suitOf(x)))]; [INFO] [stdout] 676 | | led = fromSuit(suitOf(x)); [INFO] [stdout] 677 | | follow = true; [INFO] [stdout] 678 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 673 ~ Some(x) [INFO] [stdout] 674 ~ if outin[usize::from(fromSuit(suitOf(x)))] > 0 => { [INFO] [stdout] 675 | n = outin[usize::from(fromSuit(suitOf(x)))]; [INFO] [stdout] 676 | led = fromSuit(suitOf(x)); [INFO] [stdout] 677 | follow = true; [INFO] [stdout] 678 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/lib.rs:689:16 [INFO] [stdout] | [INFO] [stdout] 689 | if random::() % n == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `random::().is_multiple_of(n)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `FullState` [INFO] [stdout] --> src/lib.rs:115:5 [INFO] [stdout] | [INFO] [stdout] 115 | / pub fn new() -> FullState { [INFO] [stdout] 116 | | FullState { [INFO] [stdout] 117 | | points: (0, 0), [INFO] [stdout] 118 | | trump: 0, [INFO] [stdout] ... | [INFO] [stdout] 127 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 113 + impl Default for FullState { [INFO] [stdout] 114 + fn default() -> Self { [INFO] [stdout] 115 + Self::new() [INFO] [stdout] 116 + } [INFO] [stdout] 117 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: deref which would be done by auto-deref [INFO] [stdout] --> src/lib.rs:227:26 [INFO] [stdout] | [INFO] [stdout] 227 | &(*cur.outcomes[path[path.len() - 1]].as_ref().unwrap()).state, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `cur.outcomes[path[path.len() - 1]].as_ref().unwrap()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_auto_deref [INFO] [stdout] = note: `#[warn(clippy::explicit_auto_deref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:240:25 [INFO] [stdout] | [INFO] [stdout] 240 | / if x.value as f64 / x.visited as f64 > highest_value { [INFO] [stdout] 241 | | highest_value = x.value as f64 / x.visited as f64; [INFO] [stdout] 242 | | best_move = i; [INFO] [stdout] 243 | | } [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 239 ~ Some(x) [INFO] [stdout] 240 ~ if x.value as f64 / x.visited as f64 > highest_value => { [INFO] [stdout] 241 | highest_value = x.value as f64 / x.visited as f64; [INFO] [stdout] 242 | best_move = i; [INFO] [stdout] 243 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:251:13 [INFO] [stdout] | [INFO] [stdout] 251 | / match &self.ais[i] { [INFO] [stdout] 252 | | Some(node) => match &node.outcomes[cardToNum(card_played) as usize] { [INFO] [stdout] 253 | | None => { [INFO] [stdout] 254 | | self.ais[i] = Some(new_node(state_transit(&node.state, card_played))); [INFO] [stdout] ... | [INFO] [stdout] 260 | | None => {} [INFO] [stdout] 261 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 251 ~ if let Some(node) = &self.ais[i] { match &node.outcomes[cardToNum(card_played) as usize] { [INFO] [stdout] 252 + None => { [INFO] [stdout] 253 + self.ais[i] = Some(new_node(state_transit(&node.state, card_played))); [INFO] [stdout] 254 + } [INFO] [stdout] 255 + Some(x) => { [INFO] [stdout] 256 + self.ais[i] = Some((**x).clone()); [INFO] [stdout] 257 + } [INFO] [stdout] 258 + } } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:389:21 [INFO] [stdout] | [INFO] [stdout] 389 | / if (suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 390 | | || (Some(suitOf(*x)) == state.trump [INFO] [stdout] 391 | | && (!trumped || (rankOf(*x) as i8) > maxRank)) [INFO] [stdout] ... | [INFO] [stdout] 398 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 388 ~ Some(x) [INFO] [stdout] 389 ~ if ((suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 390 | || (Some(suitOf(*x)) == state.trump [INFO] [stdout] 391 ~ && (!trumped || (rankOf(*x) as i8) > maxRank))) [INFO] [stdout] 392 ~ => { [INFO] [stdout] 393 | maxRank = rankOf(*x) as i8; [INFO] [stdout] ... [INFO] [stdout] 397 | } [INFO] [stdout] 398 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lib.rs:387:13 [INFO] [stdout] | [INFO] [stdout] 387 | / match card { [INFO] [stdout] 388 | | Some(x) => { [INFO] [stdout] 389 | | if (suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 390 | | || (Some(suitOf(*x)) == state.trump [INFO] [stdout] ... | [INFO] [stdout] 400 | | None => (), [INFO] [stdout] 401 | | } [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 387 ~ if let Some(x) = card { [INFO] [stdout] 388 + if (suitOf(*x) == suitOf(firstCard) && !trumped && (rankOf(*x) as i8) > maxRank) [INFO] [stdout] 389 + || (Some(suitOf(*x)) == state.trump [INFO] [stdout] 390 + && (!trumped || (rankOf(*x) as i8) > maxRank)) [INFO] [stdout] 391 + { [INFO] [stdout] 392 + maxRank = rankOf(*x) as i8; [INFO] [stdout] 393 + winner = (8 + i as u8 - (3 - state.player)) % 4; [INFO] [stdout] 394 + if Some(suitOf(*x)) == state.trump { [INFO] [stdout] 395 + trumped = true; [INFO] [stdout] 396 + } [INFO] [stdout] 397 + } [INFO] [stdout] 398 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is only used to index `trick` [INFO] [stdout] --> src/lib.rs:419:18 [INFO] [stdout] | [INFO] [stdout] 419 | for i in 0..3 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator [INFO] [stdout] | [INFO] [stdout] 419 - for i in 0..3 { [INFO] [stdout] 419 + for in &mut trick { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: binary comparison to literal `Option::None` [INFO] [stdout] --> src/lib.rs:420:16 [INFO] [stdout] | [INFO] [stdout] 420 | if trick[i] == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `trick[i].is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `allowed` [INFO] [stdout] --> src/lib.rs:475:14 [INFO] [stdout] | [INFO] [stdout] 475 | for i in 0..52 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 475 - for i in 0..52 { [INFO] [stdout] 475 + for (i, ) in allowed.iter_mut().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `allowed` [INFO] [stdout] --> src/lib.rs:480:18 [INFO] [stdout] | [INFO] [stdout] 480 | for j in 0..4 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 480 - for j in 0..4 { [INFO] [stdout] 480 + for (j, ) in allowed.iter_mut().enumerate().take(4) { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/lib.rs:499:21 [INFO] [stdout] | [INFO] [stdout] 499 | seen |= (1 as u64) << i; [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `j` is used to index `allowed` [INFO] [stdout] --> src/lib.rs:508:26 [INFO] [stdout] | [INFO] [stdout] 508 | for j in 0..52 { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 508 - for j in 0..52 { [INFO] [stdout] 508 + for (j, ) in allowed.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: equality checks against true are unnecessary [INFO] [stdout] --> src/lib.rs:535:33 [INFO] [stdout] | [INFO] [stdout] 535 | if sizes[j] == 0 && allowed[running][j] == true { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `allowed[running][j]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_comparison)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/lib.rs:544:16 [INFO] [stdout] | [INFO] [stdout] 544 | if random::() % n == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `random::().is_multiple_of(n)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] = note: `#[warn(clippy::manual_is_multiple_of)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of an assign operation [INFO] [stdout] --> src/lib.rs:558:9 [INFO] [stdout] | [INFO] [stdout] 558 | seen = seen | ((1 as u64) << running); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `seen |= ((1 as u64) << running)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stdout] = note: `#[warn(clippy::assign_op_pattern)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u64` is unnecessary [INFO] [stdout] --> src/lib.rs:558:24 [INFO] [stdout] | [INFO] [stdout] 558 | seen = seen | ((1 as u64) << running); [INFO] [stdout] | ^^^^^^^^^^ help: try: `1_u64` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/lib.rs:583:24 [INFO] [stdout] | [INFO] [stdout] 583 | if !(fromSuit(suitOf(x)) == i / 13) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `(fromSuit(suitOf(x)) != i / 13)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:583:21 [INFO] [stdout] | [INFO] [stdout] 583 | / if !(fromSuit(suitOf(x)) == i / 13) [INFO] [stdout] 584 | | && !(outin[usize::from(fromSuit(suitOf(x)))]) [INFO] [stdout] 585 | | { [INFO] [stdout] 586 | | continue; [INFO] [stdout] 587 | | } [INFO] [stdout] | |_____________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 582 ~ Some(x) [INFO] [stdout] 583 | if !(fromSuit(suitOf(x)) == i / 13) [INFO] [stdout] 584 | && !(outin[usize::from(fromSuit(suitOf(x)))]) [INFO] [stdout] 585 ~ => { [INFO] [stdout] 586 | continue; [INFO] [stdout] 587 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded late initialization [INFO] [stdout] --> src/lib.rs:659:9 [INFO] [stdout] | [INFO] [stdout] 659 | let card: Card; [INFO] [stdout] | ^^^^^^^^^^^^^^^ created here [INFO] [stdout] ... [INFO] [stdout] 705 | card = p; [INFO] [stdout] | ^^^^^^^^ initialised here [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_late_init [INFO] [stdout] = note: `#[warn(clippy::needless_late_init)]` on by default [INFO] [stdout] help: move the declaration `card` here [INFO] [stdout] | [INFO] [stdout] 659 ~ [INFO] [stdout] 660 | // ok. find action [INFO] [stdout] ... [INFO] [stdout] 704 | [INFO] [stdout] 705 ~ let card: Card = p; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/lib.rs:674:17 [INFO] [stdout] | [INFO] [stdout] 674 | / if outin[usize::from(fromSuit(suitOf(x)))] > 0 { [INFO] [stdout] 675 | | n = outin[usize::from(fromSuit(suitOf(x)))]; [INFO] [stdout] 676 | | led = fromSuit(suitOf(x)); [INFO] [stdout] 677 | | follow = true; [INFO] [stdout] 678 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 673 ~ Some(x) [INFO] [stdout] 674 ~ if outin[usize::from(fromSuit(suitOf(x)))] > 0 => { [INFO] [stdout] 675 | n = outin[usize::from(fromSuit(suitOf(x)))]; [INFO] [stdout] 676 | led = fromSuit(suitOf(x)); [INFO] [stdout] 677 | follow = true; [INFO] [stdout] 678 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manual implementation of `.is_multiple_of()` [INFO] [stdout] --> src/lib.rs:689:16 [INFO] [stdout] | [INFO] [stdout] 689 | if random::() % n == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace with: `random::().is_multiple_of(n)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_is_multiple_of [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.86s [INFO] running `Command { std: "docker" "inspect" "9120a47dd877dd70be4310bd68127e3fff57a70a0bf80f64418f01377a37cad7", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "9120a47dd877dd70be4310bd68127e3fff57a70a0bf80f64418f01377a37cad7", kill_on_drop: false }` [INFO] [stdout] 9120a47dd877dd70be4310bd68127e3fff57a70a0bf80f64418f01377a37cad7