[INFO] updating cached repository denismerigoux/tarot [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/denismerigoux/tarot [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/denismerigoux/tarot" "work/ex/clippy-test-run/sources/stable/gh/denismerigoux/tarot"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/denismerigoux/tarot'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/denismerigoux/tarot" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/denismerigoux/tarot"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/denismerigoux/tarot'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 717f36582bf18cc2055415a83ea5e6bab0d2e719 [INFO] sha for GitHub repo denismerigoux/tarot: 717f36582bf18cc2055415a83ea5e6bab0d2e719 [INFO] validating manifest of denismerigoux/tarot on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of denismerigoux/tarot on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing denismerigoux/tarot [INFO] finished frobbing denismerigoux/tarot [INFO] frobbed toml for denismerigoux/tarot written to work/ex/clippy-test-run/sources/stable/gh/denismerigoux/tarot/Cargo.toml [INFO] started frobbing denismerigoux/tarot [INFO] finished frobbing denismerigoux/tarot [INFO] frobbed toml for denismerigoux/tarot written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/denismerigoux/tarot/Cargo.toml [INFO] crate denismerigoux/tarot has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting denismerigoux/tarot against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/denismerigoux/tarot:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] b9d5a032bbe8563eb9746ff0c3ee853ae79f1540f73565335228e485cea3c4c4 [INFO] running `"docker" "start" "-a" "b9d5a032bbe8563eb9746ff0c3ee853ae79f1540f73565335228e485cea3c4c4"` [INFO] [stderr] Checking tarot v0.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/deck.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | suit: suit, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `suit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/deck.rs:16:17 [INFO] [stderr] | [INFO] [stderr] 16 | symbol: symbol, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `symbol` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | hand: hand, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `hand` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | taker_id: taker_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `taker_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/deck.rs:15:17 [INFO] [stderr] | [INFO] [stderr] 15 | suit: suit, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `suit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/deck.rs:16:17 [INFO] [stderr] | [INFO] [stderr] 16 | symbol: symbol, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `symbol` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | name: name, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | hand: hand, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `hand` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 58 | taker_id: taker_id, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `taker_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:219:27 [INFO] [stderr] | [INFO] [stderr] 219 | Card::Face(Face { suit: _, symbol: Symbol::Jack }) => 10, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Face { symbol: Symbol::Jack, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:220:27 [INFO] [stderr] | [INFO] [stderr] 220 | Card::Face(Face { suit: _, symbol: Symbol::Knight }) => 20, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol: Symbol::Knight, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:221:27 [INFO] [stderr] | [INFO] [stderr] 221 | Card::Face(Face { suit: _, symbol: Symbol::Queen }) => 30, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol: Symbol::Queen, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:222:27 [INFO] [stderr] | [INFO] [stderr] 222 | Card::Face(Face { suit: _, symbol: Symbol::King }) => 40, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol: Symbol::King, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:154:17 [INFO] [stderr] | [INFO] [stderr] 154 | None => return valid_hand, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_hand` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:161:21 [INFO] [stderr] | [INFO] [stderr] 161 | return valid_cards(player, &new_cards_played); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_cards(player, &new_cards_played)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:178:25 [INFO] [stderr] | [INFO] [stderr] 178 | return higher_trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `higher_trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:189:29 [INFO] [stderr] | [INFO] [stderr] 189 | return lower_trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `lower_trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:192:29 [INFO] [stderr] | [INFO] [stderr] 192 | return valid_hand; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_hand` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:209:25 [INFO] [stderr] | [INFO] [stderr] 209 | return same_suit_faces; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `same_suit_faces` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:226:29 [INFO] [stderr] | [INFO] [stderr] 226 | return valid_trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:237:33 [INFO] [stderr] | [INFO] [stderr] 237 | return trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:241:33 [INFO] [stderr] | [INFO] [stderr] 241 | return valid_hand; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_hand` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:198:53 [INFO] [stderr] | [INFO] [stderr] 198 | card::Card::Face(card::Face { suit, symbol: _ }) => { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { suit, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:202:76 [INFO] [stderr] | [INFO] [stderr] 202 | card::Card::Face(card::Face { suit: this_suit, symbol: _ }) => { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { suit: this_suit, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:305:55 [INFO] [stderr] | [INFO] [stderr] 305 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:330:55 [INFO] [stderr] | [INFO] [stderr] 330 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/ai.rs:37:47 [INFO] [stderr] | [INFO] [stderr] 37 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/scoring.rs:33:39 [INFO] [stderr] | [INFO] [stderr] 33 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:219:27 [INFO] [stderr] | [INFO] [stderr] 219 | Card::Face(Face { suit: _, symbol: Symbol::Jack }) => 10, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `Face { symbol: Symbol::Jack, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:220:27 [INFO] [stderr] | [INFO] [stderr] 220 | Card::Face(Face { suit: _, symbol: Symbol::Knight }) => 20, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol: Symbol::Knight, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:221:27 [INFO] [stderr] | [INFO] [stderr] 221 | Card::Face(Face { suit: _, symbol: Symbol::Queen }) => 30, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol: Symbol::Queen, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/card.rs:222:27 [INFO] [stderr] | [INFO] [stderr] 222 | Card::Face(Face { suit: _, symbol: Symbol::King }) => 40, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol: Symbol::King, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:154:17 [INFO] [stderr] | [INFO] [stderr] 154 | None => return valid_hand, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_hand` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:161:21 [INFO] [stderr] | [INFO] [stderr] 161 | return valid_cards(player, &new_cards_played); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_cards(player, &new_cards_played)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:178:25 [INFO] [stderr] | [INFO] [stderr] 178 | return higher_trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `higher_trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:189:29 [INFO] [stderr] | [INFO] [stderr] 189 | return lower_trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `lower_trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:192:29 [INFO] [stderr] | [INFO] [stderr] 192 | return valid_hand; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_hand` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:209:25 [INFO] [stderr] | [INFO] [stderr] 209 | return same_suit_faces; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `same_suit_faces` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:226:29 [INFO] [stderr] | [INFO] [stderr] 226 | return valid_trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:237:33 [INFO] [stderr] | [INFO] [stderr] 237 | return trumps; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `trumps` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/game.rs:241:33 [INFO] [stderr] | [INFO] [stderr] 241 | return valid_hand; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `valid_hand` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:198:53 [INFO] [stderr] | [INFO] [stderr] 198 | card::Card::Face(card::Face { suit, symbol: _ }) => { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { suit, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:202:76 [INFO] [stderr] | [INFO] [stderr] 202 | card::Card::Face(card::Face { suit: this_suit, symbol: _ }) => { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { suit: this_suit, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:305:55 [INFO] [stderr] | [INFO] [stderr] 305 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/game.rs:330:55 [INFO] [stderr] | [INFO] [stderr] 330 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/ai.rs:37:47 [INFO] [stderr] | [INFO] [stderr] 37 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/scoring.rs:33:39 [INFO] [stderr] | [INFO] [stderr] 33 | card::Card::Face(card::Face { suit: _, symbol }) => { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `Face { symbol, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:131:26 [INFO] [stderr] | [INFO] [stderr] 131 | fn sort_by_playing_order(mut players: &mut Vec, starting_player_id: i32) { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:282:19 [INFO] [stderr] | [INFO] [stderr] 282 | fn deal_with_fool(mut cards_played: &mut Heap, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:283:19 [INFO] [stderr] | [INFO] [stderr] 283 | mut game: &mut Game, [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ai.rs:21:21 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn exchange_dog(mut players: &mut Vec, [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | / match self { [INFO] [stderr] 15 | | &Suit::Clubs => write!(f, "trèfle"), [INFO] [stderr] 16 | | &Suit::Diamonds => write!(f, "carreau"), [INFO] [stderr] 17 | | &Suit::Hearts => write!(f, "cœur"), [INFO] [stderr] 18 | | &Suit::Spades => write!(f, "pique"), [INFO] [stderr] 19 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 14 | match *self { [INFO] [stderr] 15 | Suit::Clubs => write!(f, "trèfle"), [INFO] [stderr] 16 | Suit::Diamonds => write!(f, "carreau"), [INFO] [stderr] 17 | Suit::Hearts => write!(f, "cœur"), [INFO] [stderr] 18 | Suit::Spades => write!(f, "pique"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | / match self { [INFO] [stderr] 50 | | &Symbol::Ace => write!(f, "as"), [INFO] [stderr] 51 | | &Symbol::Two => write!(f, "2"), [INFO] [stderr] 52 | | &Symbol::Three => write!(f, "3"), [INFO] [stderr] ... | [INFO] [stderr] 63 | | &Symbol::King => write!(f, "roi"), [INFO] [stderr] 64 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 49 | match *self { [INFO] [stderr] 50 | Symbol::Ace => write!(f, "as"), [INFO] [stderr] 51 | Symbol::Two => write!(f, "2"), [INFO] [stderr] 52 | Symbol::Three => write!(f, "3"), [INFO] [stderr] 53 | Symbol::Four => write!(f, "4"), [INFO] [stderr] 54 | Symbol::Five => write!(f, "5"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:131:26 [INFO] [stderr] | [INFO] [stderr] 131 | fn sort_by_playing_order(mut players: &mut Vec, starting_player_id: i32) { [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self { [INFO] [stderr] 131 | | &Trump::One => write!(f, "1"), [INFO] [stderr] 132 | | &Trump::Two => write!(f, "2"), [INFO] [stderr] 133 | | &Trump::Three => write!(f, "3"), [INFO] [stderr] ... | [INFO] [stderr] 151 | | &Trump::TwentyOne => write!(f, "21"), [INFO] [stderr] 152 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self { [INFO] [stderr] 131 | Trump::One => write!(f, "1"), [INFO] [stderr] 132 | Trump::Two => write!(f, "2"), [INFO] [stderr] 133 | Trump::Three => write!(f, "3"), [INFO] [stderr] 134 | Trump::Four => write!(f, "4"), [INFO] [stderr] 135 | Trump::Five => write!(f, "5"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self { [INFO] [stderr] 192 | | &Card::Fool => write!(f, "excuse"), [INFO] [stderr] 193 | | &Card::Face(Face { ref suit, ref symbol }) => write!(f, "{} de {}", symbol, suit), [INFO] [stderr] 194 | | &Card::Trump(Trump::One) => write!(f, "petit"), [INFO] [stderr] 195 | | &Card::Trump(ref trump) => write!(f, "{} d'atout", trump), [INFO] [stderr] 196 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 191 | match *self { [INFO] [stderr] 192 | Card::Fool => write!(f, "excuse"), [INFO] [stderr] 193 | Card::Face(Face { ref suit, ref symbol }) => write!(f, "{} de {}", symbol, suit), [INFO] [stderr] 194 | Card::Trump(Trump::One) => write!(f, "petit"), [INFO] [stderr] 195 | Card::Trump(ref trump) => write!(f, "{} d'atout", trump), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/card.rs:214:31 [INFO] [stderr] | [INFO] [stderr] 214 | pub fn potential_value(&card: &Card) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Card` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/deck.rs:30:31 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn distribute_cards(deck: &Deck) -> (Hand, Vec) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in 0..hands.len().enumerate()` or similar iterators [INFO] [stderr] --> src/game.rs:26:14 [INFO] [stderr] | [INFO] [stderr] 26 | for _ in 0..hands.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:282:19 [INFO] [stderr] | [INFO] [stderr] 282 | fn deal_with_fool(mut cards_played: &mut Heap, [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/game.rs:283:19 [INFO] [stderr] | [INFO] [stderr] 283 | mut game: &mut Game, [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `players`. [INFO] [stderr] --> src/game.rs:49:14 [INFO] [stderr] | [INFO] [stderr] 49 | for i in 1..params::NUMBER_OF_PLAYERS { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 49 | for in players.iter().take(params::NUMBER_OF_PLAYERS).skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/game.rs:150:47 [INFO] [stderr] | [INFO] [stderr] 150 | fn valid_cards(player: &Player, cards_played: &Heap) -> deck::Hand { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 159 | let mut new_cards_played = cards_played.clone(); [INFO] [stderr] | -------------------- help: change `cards_played.clone()` to: `cards_played.to_owned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/ai.rs:21:21 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn exchange_dog(mut players: &mut Vec, [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:171:38 [INFO] [stderr] | [INFO] [stderr] 171 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:182:42 [INFO] [stderr] | [INFO] [stderr] 182 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:200:38 [INFO] [stderr] | [INFO] [stderr] 200 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:214:42 [INFO] [stderr] | [INFO] [stderr] 214 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:230:46 [INFO] [stderr] | [INFO] [stderr] 230 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/game.rs:252:28 [INFO] [stderr] | [INFO] [stderr] 252 | fn max_trump(cards_played: &Heap) -> Option { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:255:9 [INFO] [stderr] | [INFO] [stderr] 255 | / match card { [INFO] [stderr] 256 | | card::Card::Trump(trump) => { [INFO] [stderr] 257 | | match max_trump { [INFO] [stderr] 258 | | None => max_trump = Some(trump), [INFO] [stderr] ... | [INFO] [stderr] 266 | | _ => (), [INFO] [stderr] 267 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 255 | if let card::Card::Trump(trump) = card { [INFO] [stderr] 256 | match max_trump { [INFO] [stderr] 257 | None => max_trump = Some(trump), [INFO] [stderr] 258 | Some(max) => { [INFO] [stderr] 259 | if max < trump { [INFO] [stderr] 260 | max_trump = Some(trump); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/game.rs:301:40 [INFO] [stderr] | [INFO] [stderr] 301 | let card_to_exchange = attack_copy.iter() [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 302 | | .enumerate() [INFO] [stderr] 303 | | .filter(|&(_, &(card, _))| match card { [INFO] [stderr] 304 | | card::Card::Trump(_) => false, [INFO] [stderr] ... | [INFO] [stderr] 313 | | }) [INFO] [stderr] 314 | | .next(); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/game.rs:326:40 [INFO] [stderr] | [INFO] [stderr] 326 | let card_to_exchange = defense_copy.iter() [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 327 | | .enumerate() [INFO] [stderr] 328 | | .filter(|&(_, &(card, _))| match card { [INFO] [stderr] 329 | | card::Card::Trump(_) => false, [INFO] [stderr] ... | [INFO] [stderr] 338 | | }) [INFO] [stderr] 339 | | .next(); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | / match self { [INFO] [stderr] 15 | | &Suit::Clubs => write!(f, "trèfle"), [INFO] [stderr] 16 | | &Suit::Diamonds => write!(f, "carreau"), [INFO] [stderr] 17 | | &Suit::Hearts => write!(f, "cœur"), [INFO] [stderr] 18 | | &Suit::Spades => write!(f, "pique"), [INFO] [stderr] 19 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 14 | match *self { [INFO] [stderr] 15 | Suit::Clubs => write!(f, "trèfle"), [INFO] [stderr] 16 | Suit::Diamonds => write!(f, "carreau"), [INFO] [stderr] 17 | Suit::Hearts => write!(f, "cœur"), [INFO] [stderr] 18 | Suit::Spades => write!(f, "pique"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ai.rs:6:26 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn auctions(players: &Vec) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[game::Player]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | / match self { [INFO] [stderr] 50 | | &Symbol::Ace => write!(f, "as"), [INFO] [stderr] 51 | | &Symbol::Two => write!(f, "2"), [INFO] [stderr] 52 | | &Symbol::Three => write!(f, "3"), [INFO] [stderr] ... | [INFO] [stderr] 63 | | &Symbol::King => write!(f, "roi"), [INFO] [stderr] 64 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 49 | match *self { [INFO] [stderr] 50 | Symbol::Ace => write!(f, "as"), [INFO] [stderr] 51 | Symbol::Two => write!(f, "2"), [INFO] [stderr] 52 | Symbol::Three => write!(f, "3"), [INFO] [stderr] 53 | Symbol::Four => write!(f, "4"), [INFO] [stderr] 54 | Symbol::Five => write!(f, "5"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:130:9 [INFO] [stderr] | [INFO] [stderr] 130 | / match self { [INFO] [stderr] 131 | | &Trump::One => write!(f, "1"), [INFO] [stderr] 132 | | &Trump::Two => write!(f, "2"), [INFO] [stderr] 133 | | &Trump::Three => write!(f, "3"), [INFO] [stderr] ... | [INFO] [stderr] 151 | | &Trump::TwentyOne => write!(f, "21"), [INFO] [stderr] 152 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 130 | match *self { [INFO] [stderr] 131 | Trump::One => write!(f, "1"), [INFO] [stderr] 132 | Trump::Two => write!(f, "2"), [INFO] [stderr] 133 | Trump::Three => write!(f, "3"), [INFO] [stderr] 134 | Trump::Four => write!(f, "4"), [INFO] [stderr] 135 | Trump::Five => write!(f, "5"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/card.rs:191:9 [INFO] [stderr] | [INFO] [stderr] 191 | / match self { [INFO] [stderr] 192 | | &Card::Fool => write!(f, "excuse"), [INFO] [stderr] 193 | | &Card::Face(Face { ref suit, ref symbol }) => write!(f, "{} de {}", symbol, suit), [INFO] [stderr] 194 | | &Card::Trump(Trump::One) => write!(f, "petit"), [INFO] [stderr] 195 | | &Card::Trump(ref trump) => write!(f, "{} d'atout", trump), [INFO] [stderr] 196 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ai.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | let ref mut taker = match players.iter_mut().find(|player| player.id == game.taker_id) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 191 | match *self { [INFO] [stderr] 192 | Card::Fool => write!(f, "excuse"), [INFO] [stderr] 193 | Card::Face(Face { ref suit, ref symbol }) => write!(f, "{} de {}", symbol, suit), [INFO] [stderr] 194 | Card::Trump(Trump::One) => write!(f, "petit"), [INFO] [stderr] 195 | Card::Trump(ref trump) => write!(f, "{} d'atout", trump), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 24 | let taker = &mut (match players.iter_mut().find(|player| player.id == game.taker_id) { [INFO] [stderr] 25 | None => panic!("cannot find the taker"), [INFO] [stderr] 26 | Some(player) => player, [INFO] [stderr] 27 | }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/ai.rs:55:29 [INFO] [stderr] | [INFO] [stderr] 55 | let exchange_card = taker_hand.iter().filter(|&&card| dog_card > card).next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `filter(|&&card| dog_card > card).next()` with `find(|&&card| dog_card > card)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ai.rs:77:67 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn select_card(_: &game::Player, valid_cards: &deck::Hand, _: &game::Heap) -> card::Card { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ai.rs:80:23 [INFO] [stderr] | [INFO] [stderr] 80 | Some(card) => card.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/card.rs:214:31 [INFO] [stderr] | [INFO] [stderr] 214 | pub fn potential_value(&card: &Card) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `Card` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/scoring.rs:31:22 [INFO] [stderr] | [INFO] [stderr] 31 | fn card_score(&card: &card::Card) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `card::Card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/deck.rs:30:31 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn distribute_cards(deck: &Deck) -> (Hand, Vec) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the variable `counter` is used as a loop counter. Consider using `for (counter, item) in 0..hands.len().enumerate()` or similar iterators [INFO] [stderr] --> src/game.rs:26:14 [INFO] [stderr] | [INFO] [stderr] 26 | for _ in 0..hands.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `players`. [INFO] [stderr] --> src/game.rs:49:14 [INFO] [stderr] | [INFO] [stderr] 49 | for i in 1..params::NUMBER_OF_PLAYERS { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 49 | for in players.iter().take(params::NUMBER_OF_PLAYERS).skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/game.rs:150:47 [INFO] [stderr] | [INFO] [stderr] 150 | fn valid_cards(player: &Player, cards_played: &Heap) -> deck::Hand { [INFO] [stderr] | ^^^^^ [INFO] [stderr] ... [INFO] [stderr] 159 | let mut new_cards_played = cards_played.clone(); [INFO] [stderr] | -------------------- help: change `cards_played.clone()` to: `cards_played.to_owned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:171:38 [INFO] [stderr] | [INFO] [stderr] 171 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:182:42 [INFO] [stderr] | [INFO] [stderr] 182 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:200:38 [INFO] [stderr] | [INFO] [stderr] 200 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:214:42 [INFO] [stderr] | [INFO] [stderr] 214 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/game.rs:230:46 [INFO] [stderr] | [INFO] [stderr] 230 | .map(|&card| card.clone()) [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/game.rs:252:28 [INFO] [stderr] | [INFO] [stderr] 252 | fn max_trump(cards_played: &Heap) -> Option { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:255:9 [INFO] [stderr] | [INFO] [stderr] 255 | / match card { [INFO] [stderr] 256 | | card::Card::Trump(trump) => { [INFO] [stderr] 257 | | match max_trump { [INFO] [stderr] 258 | | None => max_trump = Some(trump), [INFO] [stderr] ... | [INFO] [stderr] 266 | | _ => (), [INFO] [stderr] 267 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 255 | if let card::Card::Trump(trump) = card { [INFO] [stderr] 256 | match max_trump { [INFO] [stderr] 257 | None => max_trump = Some(trump), [INFO] [stderr] 258 | Some(max) => { [INFO] [stderr] 259 | if max < trump { [INFO] [stderr] 260 | max_trump = Some(trump); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/game.rs:301:40 [INFO] [stderr] | [INFO] [stderr] 301 | let card_to_exchange = attack_copy.iter() [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 302 | | .enumerate() [INFO] [stderr] 303 | | .filter(|&(_, &(card, _))| match card { [INFO] [stderr] 304 | | card::Card::Trump(_) => false, [INFO] [stderr] ... | [INFO] [stderr] 313 | | }) [INFO] [stderr] 314 | | .next(); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::filter_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/game.rs:326:40 [INFO] [stderr] | [INFO] [stderr] 326 | let card_to_exchange = defense_copy.iter() [INFO] [stderr] | ________________________________________^ [INFO] [stderr] 327 | | .enumerate() [INFO] [stderr] 328 | | .filter(|&(_, &(card, _))| match card { [INFO] [stderr] 329 | | card::Card::Trump(_) => false, [INFO] [stderr] ... | [INFO] [stderr] 338 | | }) [INFO] [stderr] 339 | | .next(); [INFO] [stderr] | |___________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ai.rs:6:26 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn auctions(players: &Vec) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[game::Player]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/ai.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | let ref mut taker = match players.iter_mut().find(|player| player.id == game.taker_id) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 24 | let taker = &mut (match players.iter_mut().find(|player| player.id == game.taker_id) { [INFO] [stderr] 25 | None => panic!("cannot find the taker"), [INFO] [stderr] 26 | Some(player) => player, [INFO] [stderr] 27 | }); [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: called `filter(p).next()` on an `Iterator`. This is more succinctly expressed by calling `.find(p)` instead. [INFO] [stderr] --> src/ai.rs:55:29 [INFO] [stderr] | [INFO] [stderr] 55 | let exchange_card = taker_hand.iter().filter(|&&card| dog_card > card).next(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `filter(|&&card| dog_card > card).next()` with `find(|&&card| dog_card > card)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#filter_next [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/ai.rs:77:67 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn select_card(_: &game::Player, valid_cards: &deck::Hand, _: &game::Heap) -> card::Card { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/ai.rs:80:23 [INFO] [stderr] | [INFO] [stderr] 80 | Some(card) => card.clone(), [INFO] [stderr] | ^^^^^^^^^^^^ help: try dereferencing it: `*card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/scoring.rs:31:22 [INFO] [stderr] | [INFO] [stderr] 31 | fn card_score(&card: &card::Card) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^ help: consider passing by value instead: `card::Card` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.71s [INFO] running `"docker" "inspect" "b9d5a032bbe8563eb9746ff0c3ee853ae79f1540f73565335228e485cea3c4c4"` [INFO] running `"docker" "rm" "-f" "b9d5a032bbe8563eb9746ff0c3ee853ae79f1540f73565335228e485cea3c4c4"` [INFO] [stdout] b9d5a032bbe8563eb9746ff0c3ee853ae79f1540f73565335228e485cea3c4c4