[INFO] updating cached repository Stratus51/codingame_legends-of-code-and-magic_code [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Stratus51/codingame_legends-of-code-and-magic_code [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Stratus51/codingame_legends-of-code-and-magic_code" "work/ex/clippy-test-run/sources/stable/gh/Stratus51/codingame_legends-of-code-and-magic_code"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Stratus51/codingame_legends-of-code-and-magic_code'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Stratus51/codingame_legends-of-code-and-magic_code" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Stratus51/codingame_legends-of-code-and-magic_code"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Stratus51/codingame_legends-of-code-and-magic_code'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 62170daa7ab2b3c1c3fc103d7a3321dc04011a9c [INFO] sha for GitHub repo Stratus51/codingame_legends-of-code-and-magic_code: 62170daa7ab2b3c1c3fc103d7a3321dc04011a9c [INFO] validating manifest of Stratus51/codingame_legends-of-code-and-magic_code 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 Stratus51/codingame_legends-of-code-and-magic_code 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 Stratus51/codingame_legends-of-code-and-magic_code [INFO] finished frobbing Stratus51/codingame_legends-of-code-and-magic_code [INFO] frobbed toml for Stratus51/codingame_legends-of-code-and-magic_code written to work/ex/clippy-test-run/sources/stable/gh/Stratus51/codingame_legends-of-code-and-magic_code/Cargo.toml [INFO] started frobbing Stratus51/codingame_legends-of-code-and-magic_code [INFO] finished frobbing Stratus51/codingame_legends-of-code-and-magic_code [INFO] frobbed toml for Stratus51/codingame_legends-of-code-and-magic_code written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Stratus51/codingame_legends-of-code-and-magic_code/Cargo.toml [INFO] crate Stratus51/codingame_legends-of-code-and-magic_code 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 Stratus51/codingame_legends-of-code-and-magic_code against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Stratus51/codingame_legends-of-code-and-magic_code:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 6776d928948e3e3360bc2206c267d9a9f65754db0f1154c2e3290a14df242d6b [INFO] running `"docker" "start" "-a" "6776d928948e3e3360bc2206c267d9a9f65754db0f1154c2e3290a14df242d6b"` [INFO] [stderr] Checking coding_game_tmp v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:196:25 [INFO] [stderr] | [INFO] [stderr] 196 | Abilities { a: a } [INFO] [stderr] | ^^^^ help: replace it with: `a` [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: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:462:17 [INFO] [stderr] | [INFO] [stderr] 462 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:661:21 [INFO] [stderr] | [INFO] [stderr] 661 | cost_map: cost_map, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `cost_map` [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/main.rs:725:25 [INFO] [stderr] | [INFO] [stderr] 725 | category_balancers: category_balancers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `category_balancers` [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/main.rs:196:25 [INFO] [stderr] | [INFO] [stderr] 196 | Abilities { a: a } [INFO] [stderr] | ^^^^ help: replace it with: `a` [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: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:462:17 [INFO] [stderr] | [INFO] [stderr] 462 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:661:21 [INFO] [stderr] | [INFO] [stderr] 661 | cost_map: cost_map, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `cost_map` [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/main.rs:725:25 [INFO] [stderr] | [INFO] [stderr] 725 | category_balancers: category_balancers, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `category_balancers` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:405:20 [INFO] [stderr] | [INFO] [stderr] 405 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 406 | | if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 407 | | true [INFO] [stderr] 408 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 415 | | } [INFO] [stderr] 416 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 405 | } else if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 406 | true [INFO] [stderr] 407 | } else { [INFO] [stderr] 408 | defender.defense -= attacker.attack; [INFO] [stderr] 409 | if defender.defense <= -1 { [INFO] [stderr] 410 | true [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:870:28 [INFO] [stderr] | [INFO] [stderr] 870 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 871 | | if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 872 | | defender.defense = 0; [INFO] [stderr] 873 | | true [INFO] [stderr] ... | [INFO] [stderr] 881 | | } [INFO] [stderr] 882 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:405:20 [INFO] [stderr] | [INFO] [stderr] 405 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 406 | | if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 407 | | true [INFO] [stderr] 408 | | } else { [INFO] [stderr] ... | [INFO] [stderr] 415 | | } [INFO] [stderr] 416 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 405 | } else if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 406 | true [INFO] [stderr] 407 | } else { [INFO] [stderr] 408 | defender.defense -= attacker.attack; [INFO] [stderr] 409 | if defender.defense <= -1 { [INFO] [stderr] 410 | true [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 870 | } else if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 871 | defender.defense = 0; [INFO] [stderr] 872 | true [INFO] [stderr] 873 | } else { [INFO] [stderr] 874 | defender.defense -= attacker.attack; [INFO] [stderr] 875 | if defender.defense <= -1 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:1036:25 [INFO] [stderr] | [INFO] [stderr] 1036 | / if *def > 0 { [INFO] [stderr] 1037 | | if !simulator.attack_creature(att, def-1) { [INFO] [stderr] 1038 | | return; // Illegal attack [INFO] [stderr] 1039 | | } [INFO] [stderr] 1040 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1036 | if *def > 0 && !simulator.attack_creature(att, def-1) { [INFO] [stderr] 1037 | return; // Illegal attack [INFO] [stderr] 1038 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:870:28 [INFO] [stderr] | [INFO] [stderr] 870 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 871 | | if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 872 | | defender.defense = 0; [INFO] [stderr] 873 | | true [INFO] [stderr] ... | [INFO] [stderr] 881 | | } [INFO] [stderr] 882 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 870 | } else if attacker.abilities.has(Ability::Lethal) { [INFO] [stderr] 871 | defender.defense = 0; [INFO] [stderr] 872 | true [INFO] [stderr] 873 | } else { [INFO] [stderr] 874 | defender.defense -= attacker.attack; [INFO] [stderr] 875 | if defender.defense <= -1 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:1036:25 [INFO] [stderr] | [INFO] [stderr] 1036 | / if *def > 0 { [INFO] [stderr] 1037 | | if !simulator.attack_creature(att, def-1) { [INFO] [stderr] 1038 | | return; // Illegal attack [INFO] [stderr] 1039 | | } [INFO] [stderr] 1040 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1036 | if *def > 0 && !simulator.attack_creature(att, def-1) { [INFO] [stderr] 1037 | return; // Illegal attack [INFO] [stderr] 1038 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hand_pos` [INFO] [stderr] --> src/main.rs:393:36 [INFO] [stderr] | [INFO] [stderr] 393 | pub fn use_item(&mut self, hand_pos: usize) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_hand_pos` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `hand_pos` [INFO] [stderr] --> src/main.rs:393:36 [INFO] [stderr] | [INFO] [stderr] 393 | pub fn use_item(&mut self, hand_pos: usize) { [INFO] [stderr] | ^^^^^^^^ help: consider using `_hand_pos` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Green` [INFO] [stderr] --> src/main.rs:10:9 [INFO] [stderr] | [INFO] [stderr] 10 | Green = 1, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Red` [INFO] [stderr] --> src/main.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | Red = 2, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Blue` [INFO] [stderr] --> src/main.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | Blue = 3, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `use_item` [INFO] [stderr] --> src/main.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | pub fn use_item(&mut self, hand_pos: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_value` [INFO] [stderr] --> src/main.rs:796:17 [INFO] [stderr] | [INFO] [stderr] 796 | fn attack_value(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_value` [INFO] [stderr] --> src/main.rs:836:17 [INFO] [stderr] | [INFO] [stderr] 836 | fn attack_value(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_balance` [INFO] [stderr] --> src/main.rs:897:17 [INFO] [stderr] | [INFO] [stderr] 897 | pub fn attack_balance(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `game_is_lost` [INFO] [stderr] --> src/main.rs:919:13 [INFO] [stderr] | [INFO] [stderr] 919 | fn game_is_lost(game: &Game) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:63:38 [INFO] [stderr] | [INFO] [stderr] 63 | let total = energy_set.iter().fold(0, |sum, add| sum + add); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `energy_set`. [INFO] [stderr] --> src/main.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | for i in 0..energy_set.len() { [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] 68 | for in &energy_set { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:90:44 [INFO] [stderr] | [INFO] [stderr] 90 | let total = energies.iter().fold(0, |sum, add| sum + add); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:122:43 [INFO] [stderr] | [INFO] [stderr] 122 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:151:43 [INFO] [stderr] | [INFO] [stderr] 151 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:178:23 [INFO] [stderr] | [INFO] [stderr] 178 | if s.find("B") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'B'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:181:23 [INFO] [stderr] | [INFO] [stderr] 181 | if s.find("C") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'C'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:184:23 [INFO] [stderr] | [INFO] [stderr] 184 | if s.find("D") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'D'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:187:23 [INFO] [stderr] | [INFO] [stderr] 187 | if s.find("G") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'G'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:190:23 [INFO] [stderr] | [INFO] [stderr] 190 | if s.find("L") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'L'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:193:23 [INFO] [stderr] | [INFO] [stderr] 193 | if s.find("W") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'W'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:198:20 [INFO] [stderr] | [INFO] [stderr] 198 | pub fn has(&self, ability: Ability) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | / pub fn get<'a>(&'a self, id: i32) -> Option<&'a Card> { [INFO] [stderr] 248 | | for c in self.cards.iter() { [INFO] [stderr] 249 | | if c.id == id { [INFO] [stderr] 250 | | return Some(c); [INFO] [stderr] ... | [INFO] [stderr] 253 | | None [INFO] [stderr] 254 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:256:9 [INFO] [stderr] | [INFO] [stderr] 256 | / pub fn get_mut<'a>(&'a mut self, id: i32) -> Option<&'a mut Card> { [INFO] [stderr] 257 | | for c in self.cards.iter_mut() { [INFO] [stderr] 258 | | if c.id == id { [INFO] [stderr] 259 | | return Some(c); [INFO] [stderr] ... | [INFO] [stderr] 262 | | None [INFO] [stderr] 263 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:397:9 [INFO] [stderr] | [INFO] [stderr] 397 | / fn get_boards<'a>(&'a mut self) -> (&'a mut Board, &'a mut Board) { [INFO] [stderr] 398 | | (&mut self.player_board, &mut self.opponent_board) [INFO] [stderr] 399 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:410:21 [INFO] [stderr] | [INFO] [stderr] 410 | / if defender.defense <= -1 { [INFO] [stderr] 411 | | true [INFO] [stderr] 412 | | } else { [INFO] [stderr] 413 | | false [INFO] [stderr] 414 | | } [INFO] [stderr] | |_____________________^ help: you can reduce it to: `defender.defense <= -1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:453:16 [INFO] [stderr] | [INFO] [stderr] 453 | if self.actions.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.actions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:504:13 [INFO] [stderr] | [INFO] [stderr] 504 | fn name<'a>(&'a self) -> &'a str; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:615:13 [INFO] [stderr] | [INFO] [stderr] 615 | / fn name<'a>(&'a self) -> &'a str { [INFO] [stderr] 616 | | &self.name [INFO] [stderr] 617 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the variable `current_cat` is used as a loop counter. Consider using `for (current_cat, item) in cost_limits.iter().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:648:34 [INFO] [stderr] | [INFO] [stderr] 648 | 'outer: for c in cost_limits.iter() { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:650:39 [INFO] [stderr] | [INFO] [stderr] 650 | cost_map.push(current_cat.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_cat` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:670:13 [INFO] [stderr] | [INFO] [stderr] 670 | / fn name<'a>(&'a self) -> &'a str { [INFO] [stderr] 671 | | &self.name [INFO] [stderr] 672 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:786:42 [INFO] [stderr] | [INFO] [stderr] 786 | abilities_start: c.abilities.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.abilities` [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/main.rs:787:36 [INFO] [stderr] | [INFO] [stderr] 787 | abilities: c.abilities.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.abilities` [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/main.rs:793:38 [INFO] [stderr] | [INFO] [stderr] 793 | self.abilities = self.abilities_start.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.abilities_start` [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 if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:876:29 [INFO] [stderr] | [INFO] [stderr] 876 | / if defender.defense <= -1 { [INFO] [stderr] 877 | | true [INFO] [stderr] 878 | | } else { [INFO] [stderr] 879 | | false [INFO] [stderr] 880 | | } [INFO] [stderr] | |_____________________________^ help: you can reduce it to: `defender.defense <= -1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:916:47 [INFO] [stderr] | [INFO] [stderr] 916 | game.player_board.ready.iter().fold(0, |sum, add| sum + add) >= game.opponent.hp [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:923:28 [INFO] [stderr] | [INFO] [stderr] 923 | .iter() [INFO] [stderr] | ____________________________^ [INFO] [stderr] 924 | | .fold(0, |sum, add| sum + add); [INFO] [stderr] | |__________________________________________________^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/main.rs:961:63 [INFO] [stderr] | [INFO] [stderr] 961 | } else if game.player_board.guards.len() == 0 { [INFO] [stderr] | _______________________________________________________________^ [INFO] [stderr] 962 | | 1.2 [INFO] [stderr] 963 | | } else { [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/main.rs:959:64 [INFO] [stderr] | [INFO] [stderr] 959 | } else if game.opponent_board.attack_sum() > 3 { [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 960 | | 1.2 [INFO] [stderr] 961 | | } else if game.player_board.guards.len() == 0 { [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:961:27 [INFO] [stderr] | [INFO] [stderr] 961 | } else if game.player_board.guards.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `game.player_board.guards.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:984:41 [INFO] [stderr] | [INFO] [stderr] 984 | .map(|card| card.cost.clone() as usize) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `card.cost` [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/main.rs:1008:61 [INFO] [stderr] | [INFO] [stderr] 1008 | fn summon(&mut self, game: &mut Game, card_ids: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[i32]` [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: variant is never constructed: `Green` [INFO] [stderr] --> src/main.rs:10:9 [INFO] [stderr] | [INFO] [stderr] 10 | Green = 1, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Red` [INFO] [stderr] --> src/main.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | Red = 2, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Blue` [INFO] [stderr] --> src/main.rs:12:9 [INFO] [stderr] | [INFO] [stderr] 12 | Blue = 3, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `use_item` [INFO] [stderr] --> src/main.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | pub fn use_item(&mut self, hand_pos: usize) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_value` [INFO] [stderr] --> src/main.rs:796:17 [INFO] [stderr] | [INFO] [stderr] 796 | fn attack_value(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_value` [INFO] [stderr] --> src/main.rs:836:17 [INFO] [stderr] | [INFO] [stderr] 836 | fn attack_value(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_balance` [INFO] [stderr] --> src/main.rs:897:17 [INFO] [stderr] | [INFO] [stderr] 897 | pub fn attack_balance(&self) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `game_is_lost` [INFO] [stderr] --> src/main.rs:919:13 [INFO] [stderr] | [INFO] [stderr] 919 | fn game_is_lost(game: &Game) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:63:38 [INFO] [stderr] | [INFO] [stderr] 63 | let total = energy_set.iter().fold(0, |sum, add| sum + add); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:1076:20 [INFO] [stderr] | [INFO] [stderr] 1076 | if game.opponent_board.guards.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!game.opponent_board.guards.is_empty()` [INFO] [stderr] warning: the loop variable `i` is only used to index `energy_set`. [INFO] [stderr] --> src/main.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | for i in 0..energy_set.len() { [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] | [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 68 | for in &energy_set { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:1081:24 [INFO] [stderr] | [INFO] [stderr] 1081 | if game.opponent_board.guards.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!game.opponent_board.guards.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:1101:20 [INFO] [stderr] | [INFO] [stderr] 1101 | if game.player_board.ready_not_guard().len() == 0 && efficient_kills.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `game.player_board.ready_not_guard().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:1101:70 [INFO] [stderr] | [INFO] [stderr] 1101 | if game.player_board.ready_not_guard().len() == 0 && efficient_kills.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!efficient_kills.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:90:44 [INFO] [stderr] | [INFO] [stderr] 90 | let total = energies.iter().fold(0, |sum, add| sum + add); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:122:43 [INFO] [stderr] | [INFO] [stderr] 122 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:151:43 [INFO] [stderr] | [INFO] [stderr] 151 | let inputs = input_line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:178:23 [INFO] [stderr] | [INFO] [stderr] 178 | if s.find("B") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'B'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:181:23 [INFO] [stderr] | [INFO] [stderr] 181 | if s.find("C") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'C'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:184:23 [INFO] [stderr] | [INFO] [stderr] 184 | if s.find("D") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'D'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:187:23 [INFO] [stderr] | [INFO] [stderr] 187 | if s.find("G") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'G'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:190:23 [INFO] [stderr] | [INFO] [stderr] 190 | if s.find("L") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'L'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:193:23 [INFO] [stderr] | [INFO] [stderr] 193 | if s.find("W") != None { [INFO] [stderr] | ^^^ help: try using a char instead: `'W'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/main.rs:198:20 [INFO] [stderr] | [INFO] [stderr] 198 | pub fn has(&self, ability: Ability) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:247:9 [INFO] [stderr] | [INFO] [stderr] 247 | / pub fn get<'a>(&'a self, id: i32) -> Option<&'a Card> { [INFO] [stderr] 248 | | for c in self.cards.iter() { [INFO] [stderr] 249 | | if c.id == id { [INFO] [stderr] 250 | | return Some(c); [INFO] [stderr] ... | [INFO] [stderr] 253 | | None [INFO] [stderr] 254 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:256:9 [INFO] [stderr] | [INFO] [stderr] 256 | / pub fn get_mut<'a>(&'a mut self, id: i32) -> Option<&'a mut Card> { [INFO] [stderr] 257 | | for c in self.cards.iter_mut() { [INFO] [stderr] 258 | | if c.id == id { [INFO] [stderr] 259 | | return Some(c); [INFO] [stderr] ... | [INFO] [stderr] 262 | | None [INFO] [stderr] 263 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] error: Could not compile `coding_game_tmp`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:397:9 [INFO] [stderr] | [INFO] [stderr] 397 | / fn get_boards<'a>(&'a mut self) -> (&'a mut Board, &'a mut Board) { [INFO] [stderr] 398 | | (&mut self.player_board, &mut self.opponent_board) [INFO] [stderr] 399 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:410:21 [INFO] [stderr] | [INFO] [stderr] 410 | / if defender.defense <= -1 { [INFO] [stderr] 411 | | true [INFO] [stderr] 412 | | } else { [INFO] [stderr] 413 | | false [INFO] [stderr] 414 | | } [INFO] [stderr] | |_____________________^ help: you can reduce it to: `defender.defense <= -1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:453:16 [INFO] [stderr] | [INFO] [stderr] 453 | if self.actions.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.actions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:504:13 [INFO] [stderr] | [INFO] [stderr] 504 | fn name<'a>(&'a self) -> &'a str; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:615:13 [INFO] [stderr] | [INFO] [stderr] 615 | / fn name<'a>(&'a self) -> &'a str { [INFO] [stderr] 616 | | &self.name [INFO] [stderr] 617 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: the variable `current_cat` is used as a loop counter. Consider using `for (current_cat, item) in cost_limits.iter().enumerate()` or similar iterators [INFO] [stderr] --> src/main.rs:648:34 [INFO] [stderr] | [INFO] [stderr] 648 | 'outer: for c in cost_limits.iter() { [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:650:39 [INFO] [stderr] | [INFO] [stderr] 650 | cost_map.push(current_cat.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `current_cat` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/main.rs:670:13 [INFO] [stderr] | [INFO] [stderr] 670 | / fn name<'a>(&'a self) -> &'a str { [INFO] [stderr] 671 | | &self.name [INFO] [stderr] 672 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:786:42 [INFO] [stderr] | [INFO] [stderr] 786 | abilities_start: c.abilities.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.abilities` [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/main.rs:787:36 [INFO] [stderr] | [INFO] [stderr] 787 | abilities: c.abilities.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `c.abilities` [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/main.rs:793:38 [INFO] [stderr] | [INFO] [stderr] 793 | self.abilities = self.abilities_start.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.abilities_start` [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 if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:876:29 [INFO] [stderr] | [INFO] [stderr] 876 | / if defender.defense <= -1 { [INFO] [stderr] 877 | | true [INFO] [stderr] 878 | | } else { [INFO] [stderr] 879 | | false [INFO] [stderr] 880 | | } [INFO] [stderr] | |_____________________________^ help: you can reduce it to: `defender.defense <= -1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:916:47 [INFO] [stderr] | [INFO] [stderr] 916 | game.player_board.ready.iter().fold(0, |sum, add| sum + add) >= game.opponent.hp [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/main.rs:923:28 [INFO] [stderr] | [INFO] [stderr] 923 | .iter() [INFO] [stderr] | ____________________________^ [INFO] [stderr] 924 | | .fold(0, |sum, add| sum + add); [INFO] [stderr] | |__________________________________________________^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/main.rs:961:63 [INFO] [stderr] | [INFO] [stderr] 961 | } else if game.player_board.guards.len() == 0 { [INFO] [stderr] | _______________________________________________________________^ [INFO] [stderr] 962 | | 1.2 [INFO] [stderr] 963 | | } else { [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/main.rs:959:64 [INFO] [stderr] | [INFO] [stderr] 959 | } else if game.opponent_board.attack_sum() > 3 { [INFO] [stderr] | ________________________________________________________________^ [INFO] [stderr] 960 | | 1.2 [INFO] [stderr] 961 | | } else if game.player_board.guards.len() == 0 { [INFO] [stderr] | |_________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:961:27 [INFO] [stderr] | [INFO] [stderr] 961 | } else if game.player_board.guards.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `game.player_board.guards.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/main.rs:984:41 [INFO] [stderr] | [INFO] [stderr] 984 | .map(|card| card.cost.clone() as usize) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `card.cost` [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/main.rs:1008:61 [INFO] [stderr] | [INFO] [stderr] 1008 | fn summon(&mut self, game: &mut Game, card_ids: &Vec) { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[i32]` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:1076:20 [INFO] [stderr] | [INFO] [stderr] 1076 | if game.opponent_board.guards.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!game.opponent_board.guards.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:1081:24 [INFO] [stderr] | [INFO] [stderr] 1081 | if game.opponent_board.guards.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!game.opponent_board.guards.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:1101:20 [INFO] [stderr] | [INFO] [stderr] 1101 | if game.player_board.ready_not_guard().len() == 0 && efficient_kills.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `game.player_board.ready_not_guard().is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:1101:70 [INFO] [stderr] | [INFO] [stderr] 1101 | if game.player_board.ready_not_guard().len() == 0 && efficient_kills.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!efficient_kills.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `coding_game_tmp`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "6776d928948e3e3360bc2206c267d9a9f65754db0f1154c2e3290a14df242d6b"` [INFO] running `"docker" "rm" "-f" "6776d928948e3e3360bc2206c267d9a9f65754db0f1154c2e3290a14df242d6b"` [INFO] [stdout] 6776d928948e3e3360bc2206c267d9a9f65754db0f1154c2e3290a14df242d6b