[INFO] updating cached repository jaroslaw-weber/rust-strategy-game [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jaroslaw-weber/rust-strategy-game [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jaroslaw-weber/rust-strategy-game" "work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-strategy-game"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-strategy-game'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jaroslaw-weber/rust-strategy-game" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaroslaw-weber/rust-strategy-game"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaroslaw-weber/rust-strategy-game'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 7b0fad88f0ab472f6a67848154fa7753ced6c503 [INFO] sha for GitHub repo jaroslaw-weber/rust-strategy-game: 7b0fad88f0ab472f6a67848154fa7753ced6c503 [INFO] validating manifest of jaroslaw-weber/rust-strategy-game 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 jaroslaw-weber/rust-strategy-game 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 jaroslaw-weber/rust-strategy-game [INFO] finished frobbing jaroslaw-weber/rust-strategy-game [INFO] frobbed toml for jaroslaw-weber/rust-strategy-game written to work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-strategy-game/Cargo.toml [INFO] started frobbing jaroslaw-weber/rust-strategy-game [INFO] finished frobbing jaroslaw-weber/rust-strategy-game [INFO] frobbed toml for jaroslaw-weber/rust-strategy-game written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jaroslaw-weber/rust-strategy-game/Cargo.toml [INFO] crate jaroslaw-weber/rust-strategy-game 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 jaroslaw-weber/rust-strategy-game against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/jaroslaw-weber/rust-strategy-game:/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] 92ecf5afa8cdd3c6f8947963971f3b23d9ffc974f6bebadb3b2400fd55fc540d [INFO] running `"docker" "start" "-a" "92ecf5afa8cdd3c6f8947963971f3b23d9ffc974f6bebadb3b2400fd55fc540d"` [INFO] [stderr] Checking rusteu v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/battle.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | won: won, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `won` [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/battle.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | won: won, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `won` [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: unused import: `std::hash::Hash` [INFO] [stderr] --> src/country.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::hash::Hash; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Eq`, `PartialEq` [INFO] [stderr] --> src/country.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use std::cmp::{PartialEq, Eq}; [INFO] [stderr] | ^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BattleResult` [INFO] [stderr] --> src/country.rs:5:34 [INFO] [stderr] | [INFO] [stderr] 5 | use battle::{ArmyType, ArmyUnit, BattleResult, get_army_type_with_string, get_armytype_base_cost}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/country.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | c [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/country.rs:13:17 [INFO] [stderr] | [INFO] [stderr] 13 | let c = Country { [INFO] [stderr] | _________________^ [INFO] [stderr] 14 | | name: _name.to_string(), [INFO] [stderr] 15 | | money: 0, [INFO] [stderr] 16 | | provinces: Vec::new(), [INFO] [stderr] 17 | | investment: HashMap::new(), [INFO] [stderr] 18 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/country.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | p [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/country.rs:130:17 [INFO] [stderr] | [INFO] [stderr] 130 | let p = Province { [INFO] [stderr] | _________________^ [INFO] [stderr] 131 | | name: _name.to_string(), [INFO] [stderr] 132 | | monthlyIncome: 100, [INFO] [stderr] 133 | | population: _population, [INFO] [stderr] 134 | | province_army: Vec::new(), [INFO] [stderr] 135 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `Province` [INFO] [stderr] --> src/gamestate.rs:1:24 [INFO] [stderr] | [INFO] [stderr] 1 | use country::{Country, Province}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ArmyType` [INFO] [stderr] --> src/gamestate.rs:2:14 [INFO] [stderr] | [INFO] [stderr] 2 | use battle::{ArmyType, get_army_types_as_str_vec}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/gamestate.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | new_gs [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/gamestate.rs:10:22 [INFO] [stderr] | [INFO] [stderr] 10 | let new_gs = GameState { [INFO] [stderr] | ______________________^ [INFO] [stderr] 11 | | user_country: _user_country, [INFO] [stderr] 12 | | menu_state: MenuState::MainMenu, [INFO] [stderr] 13 | | other_countries: Vec::new(), [INFO] [stderr] 14 | | make_army_province_selected: String::new(), [INFO] [stderr] 15 | | make_army_type_selected: String::new(), [INFO] [stderr] 16 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/battle.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | na [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/battle.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | let na = ArmyUnit { [INFO] [stderr] | __________________^ [INFO] [stderr] 77 | | unit_type: army_type, [INFO] [stderr] 78 | | unit_count: number, [INFO] [stderr] 79 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/battle.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/battle.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | let result = BattleResult { [INFO] [stderr] | __________________^ [INFO] [stderr] 92 | | won: won, [INFO] [stderr] 93 | | attacker_army: attackers_army, [INFO] [stderr] 94 | | defender_army: defenders_army, [INFO] [stderr] 95 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Write`, `stdout` [INFO] [stderr] --> src/main.rs:6:22 [INFO] [stderr] | [INFO] [stderr] 6 | use std::io::{stdin, stdout, Write}; [INFO] [stderr] | ^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Country`, `Province` [INFO] [stderr] --> src/main.rs:8:15 [INFO] [stderr] | [INFO] [stderr] 8 | use country::{Country, Province}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::hash::Hash` [INFO] [stderr] --> src/country.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::hash::Hash; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Eq`, `PartialEq` [INFO] [stderr] --> src/country.rs:4:16 [INFO] [stderr] | [INFO] [stderr] 4 | use std::cmp::{PartialEq, Eq}; [INFO] [stderr] | ^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `BattleResult` [INFO] [stderr] --> src/country.rs:5:34 [INFO] [stderr] | [INFO] [stderr] 5 | use battle::{ArmyType, ArmyUnit, BattleResult, get_army_type_with_string, get_armytype_base_cost}; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/country.rs:19:9 [INFO] [stderr] | [INFO] [stderr] 19 | c [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/country.rs:13:17 [INFO] [stderr] | [INFO] [stderr] 13 | let c = Country { [INFO] [stderr] | _________________^ [INFO] [stderr] 14 | | name: _name.to_string(), [INFO] [stderr] 15 | | money: 0, [INFO] [stderr] 16 | | provinces: Vec::new(), [INFO] [stderr] 17 | | investment: HashMap::new(), [INFO] [stderr] 18 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/country.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | p [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/country.rs:130:17 [INFO] [stderr] | [INFO] [stderr] 130 | let p = Province { [INFO] [stderr] | _________________^ [INFO] [stderr] 131 | | name: _name.to_string(), [INFO] [stderr] 132 | | monthlyIncome: 100, [INFO] [stderr] 133 | | population: _population, [INFO] [stderr] 134 | | province_army: Vec::new(), [INFO] [stderr] 135 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `Province` [INFO] [stderr] --> src/gamestate.rs:1:24 [INFO] [stderr] | [INFO] [stderr] 1 | use country::{Country, Province}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `ArmyType` [INFO] [stderr] --> src/gamestate.rs:2:14 [INFO] [stderr] | [INFO] [stderr] 2 | use battle::{ArmyType, get_army_types_as_str_vec}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/gamestate.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | new_gs [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/gamestate.rs:10:22 [INFO] [stderr] | [INFO] [stderr] 10 | let new_gs = GameState { [INFO] [stderr] | ______________________^ [INFO] [stderr] 11 | | user_country: _user_country, [INFO] [stderr] 12 | | menu_state: MenuState::MainMenu, [INFO] [stderr] 13 | | other_countries: Vec::new(), [INFO] [stderr] 14 | | make_army_province_selected: String::new(), [INFO] [stderr] 15 | | make_army_type_selected: String::new(), [INFO] [stderr] 16 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/battle.rs:80:9 [INFO] [stderr] | [INFO] [stderr] 80 | na [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/battle.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | let na = ArmyUnit { [INFO] [stderr] | __________________^ [INFO] [stderr] 77 | | unit_type: army_type, [INFO] [stderr] 78 | | unit_count: number, [INFO] [stderr] 79 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/battle.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/battle.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | let result = BattleResult { [INFO] [stderr] | __________________^ [INFO] [stderr] 92 | | won: won, [INFO] [stderr] 93 | | attacker_army: attackers_army, [INFO] [stderr] 94 | | defender_army: defenders_army, [INFO] [stderr] 95 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Write`, `stdout` [INFO] [stderr] --> src/main.rs:6:22 [INFO] [stderr] | [INFO] [stderr] 6 | use std::io::{stdin, stdout, Write}; [INFO] [stderr] | ^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::collections::HashMap` [INFO] [stderr] --> src/main.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::collections::HashMap; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Country`, `Province` [INFO] [stderr] --> src/main.rs:8:15 [INFO] [stderr] | [INFO] [stderr] 8 | use country::{Country, Province}; [INFO] [stderr] | ^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/battle.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | _ => println!("strength not implemented for: {}", au.unit_type), //todo should use panic? [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `at` is never read [INFO] [stderr] --> src/battle.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | let mut at: Result = Err("not found".to_string()); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `c` is never read [INFO] [stderr] --> src/battle.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | let mut c = 1; [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `input` is never read [INFO] [stderr] --> src/main.rs:27:21 [INFO] [stderr] | [INFO] [stderr] 27 | let mut input = String::new(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `bytes_read` [INFO] [stderr] --> src/main.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | Ok(bytes_read) => { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_bytes_read` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/gamestate.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | Err(e) => println!("failed to parse army number"), [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/battle.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | _ => println!("strength not implemented for: {}", au.unit_type), //todo should use panic? [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `at` is never read [INFO] [stderr] --> src/battle.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | let mut at: Result = Err("not found".to_string()); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `c` is never read [INFO] [stderr] --> src/battle.rs:101:13 [INFO] [stderr] | [INFO] [stderr] 101 | let mut c = 1; [INFO] [stderr] | ^ [INFO] [stderr] [INFO] [stderr] warning: value assigned to `input` is never read [INFO] [stderr] --> src/main.rs:27:21 [INFO] [stderr] | [INFO] [stderr] 27 | let mut input = String::new(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `bytes_read` [INFO] [stderr] --> src/main.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | Ok(bytes_read) => { [INFO] [stderr] | ^^^^^^^^^^ help: consider using `_bytes_read` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/gamestate.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | Err(e) => println!("failed to parse army number"), [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_province` [INFO] [stderr] --> src/country.rs:65:5 [INFO] [stderr] | [INFO] [stderr] 65 | fn attack_province(&mut self, enemy_province: Province) -> Province { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `merge_same_type_of_armies` [INFO] [stderr] --> src/country.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | fn merge_same_type_of_armies(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `AtackingSelectCountry` [INFO] [stderr] --> src/gamestate.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | AtackingSelectCountry, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `AtackingSelectProvince` [INFO] [stderr] --> src/gamestate.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | AtackingSelectProvince, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BattleResult` [INFO] [stderr] --> src/battle.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct BattleResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_army_strenght` [INFO] [stderr] --> src/battle.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn get_army_strenght(army: &Vec) -> i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_battle_result` [INFO] [stderr] --> src/battle.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / pub fn get_battle_result(attackers_army: Vec, [INFO] [stderr] 86 | | defenders_army: Vec) [INFO] [stderr] 87 | | -> BattleResult { [INFO] [stderr] 88 | | let ats = get_army_strenght(&attackers_army); [INFO] [stderr] ... | [INFO] [stderr] 96 | | result [INFO] [stderr] 97 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/country.rs:32:52 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn try_make_army(&mut self, province_name: &String, army_type_name: &String, number: i64) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/country.rs:32:77 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn try_make_army(&mut self, province_name: &String, army_type_name: &String, number: i64) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/country.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | / if self.investment.contains_key(&inv) { [INFO] [stderr] 82 | | *self.investment.get_mut(&inv).unwrap() += 1; [INFO] [stderr] 83 | | } else { [INFO] [stderr] 84 | | self.investment.insert(inv, 1); [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________________^ help: consider using: `self.investment.entry(inv)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: structure field `monthlyIncome` should have a snake case name such as `monthly_income` [INFO] [stderr] --> src/country.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | monthlyIncome: i64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `attack_province` [INFO] [stderr] --> src/country.rs:65:5 [INFO] [stderr] | [INFO] [stderr] 65 | fn attack_province(&mut self, enemy_province: Province) -> Province { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `merge_same_type_of_armies` [INFO] [stderr] --> src/country.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | fn merge_same_type_of_armies(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `AtackingSelectCountry` [INFO] [stderr] --> src/gamestate.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | AtackingSelectCountry, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `AtackingSelectProvince` [INFO] [stderr] --> src/gamestate.rs:149:5 [INFO] [stderr] | [INFO] [stderr] 149 | AtackingSelectProvince, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `BattleResult` [INFO] [stderr] --> src/battle.rs:5:1 [INFO] [stderr] | [INFO] [stderr] 5 | pub struct BattleResult { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_army_strenght` [INFO] [stderr] --> src/battle.rs:37:1 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn get_army_strenght(army: &Vec) -> i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `get_battle_result` [INFO] [stderr] --> src/battle.rs:85:1 [INFO] [stderr] | [INFO] [stderr] 85 | / pub fn get_battle_result(attackers_army: Vec, [INFO] [stderr] 86 | | defenders_army: Vec) [INFO] [stderr] 87 | | -> BattleResult { [INFO] [stderr] 88 | | let ats = get_army_strenght(&attackers_army); [INFO] [stderr] ... | [INFO] [stderr] 96 | | result [INFO] [stderr] 97 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/country.rs:32:52 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn try_make_army(&mut self, province_name: &String, army_type_name: &String, number: i64) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/country.rs:32:77 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn try_make_army(&mut self, province_name: &String, army_type_name: &String, number: i64) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/country.rs:81:17 [INFO] [stderr] | [INFO] [stderr] 81 | / if self.investment.contains_key(&inv) { [INFO] [stderr] 82 | | *self.investment.get_mut(&inv).unwrap() += 1; [INFO] [stderr] 83 | | } else { [INFO] [stderr] 84 | | self.investment.insert(inv, 1); [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________________^ help: consider using: `self.investment.entry(inv)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: structure field `monthlyIncome` should have a snake case name such as `monthly_income` [INFO] [stderr] --> src/country.rs:123:5 [INFO] [stderr] | [INFO] [stderr] 123 | monthlyIncome: i64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/gamestate.rs:99:15 [INFO] [stderr] | [INFO] [stderr] 99 | match new_menu.clone() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `new_menu` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/battle.rs:37:32 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn get_army_strenght(army: &Vec) -> i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[ArmyUnit]` [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/gamestate.rs:99:15 [INFO] [stderr] | [INFO] [stderr] 99 | match new_menu.clone() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `new_menu` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/battle.rs:37:32 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn get_army_strenght(army: &Vec) -> i64 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[ArmyUnit]` [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] Finished dev [unoptimized + debuginfo] target(s) in 0.77s [INFO] running `"docker" "inspect" "92ecf5afa8cdd3c6f8947963971f3b23d9ffc974f6bebadb3b2400fd55fc540d"` [INFO] running `"docker" "rm" "-f" "92ecf5afa8cdd3c6f8947963971f3b23d9ffc974f6bebadb3b2400fd55fc540d"` [INFO] [stdout] 92ecf5afa8cdd3c6f8947963971f3b23d9ffc974f6bebadb3b2400fd55fc540d