[INFO] updating cached repository toolness/werewolves-and-wanderer-rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/toolness/werewolves-and-wanderer-rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/toolness/werewolves-and-wanderer-rs" "work/ex/clippy-test-run/sources/stable/gh/toolness/werewolves-and-wanderer-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/toolness/werewolves-and-wanderer-rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/toolness/werewolves-and-wanderer-rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/toolness/werewolves-and-wanderer-rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/toolness/werewolves-and-wanderer-rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ad13eee1ea6a91e35a41d746bb69a8c794e3f5c2 [INFO] sha for GitHub repo toolness/werewolves-and-wanderer-rs: ad13eee1ea6a91e35a41d746bb69a8c794e3f5c2 [INFO] validating manifest of toolness/werewolves-and-wanderer-rs 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 toolness/werewolves-and-wanderer-rs 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 toolness/werewolves-and-wanderer-rs [INFO] finished frobbing toolness/werewolves-and-wanderer-rs [INFO] frobbed toml for toolness/werewolves-and-wanderer-rs written to work/ex/clippy-test-run/sources/stable/gh/toolness/werewolves-and-wanderer-rs/Cargo.toml [INFO] started frobbing toolness/werewolves-and-wanderer-rs [INFO] finished frobbing toolness/werewolves-and-wanderer-rs [INFO] frobbed toml for toolness/werewolves-and-wanderer-rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/toolness/werewolves-and-wanderer-rs/Cargo.toml [INFO] crate toolness/werewolves-and-wanderer-rs 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 toolness/werewolves-and-wanderer-rs against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/toolness/werewolves-and-wanderer-rs:/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] aa53c4aba8f08ea3c5222372c1c412a799d3b4e48e2f72669be8bdfcc36e038f [INFO] running `"docker" "start" "-a" "aa53c4aba8f08ea3c5222372c1c412a799d3b4e48e2f72669be8bdfcc36e038f"` [INFO] [stderr] Checking werewolves-and-wanderer v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/combat.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | ff: ff, [INFO] [stderr] | ^^^^^^ help: replace it with: `ff` [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/combat.rs:170:7 [INFO] [stderr] | [INFO] [stderr] 170 | phase: phase, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `phase` [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/combat.rs:171:7 [INFO] [stderr] | [INFO] [stderr] 171 | ff: ff, [INFO] [stderr] | ^^^^^^ help: replace it with: `ff` [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/combat.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | ff: ff, [INFO] [stderr] | ^^^^^^ help: replace it with: `ff` [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/combat.rs:170:7 [INFO] [stderr] | [INFO] [stderr] 170 | phase: phase, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `phase` [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/combat.rs:171:7 [INFO] [stderr] | [INFO] [stderr] 171 | ff: ff, [INFO] [stderr] | ^^^^^^ help: replace it with: `ff` [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: unneeded return statement [INFO] [stderr] --> src/command.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/command.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/command.rs:73:5 [INFO] [stderr] | [INFO] [stderr] 73 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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: use of deprecated item 'std::ascii::AsciiExt': use inherent methods instead [INFO] [stderr] --> src/command.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/command.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::ascii::AsciiExt` [INFO] [stderr] --> src/command.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use std::ascii::AsciiExt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:23:7 [INFO] [stderr] | [INFO] [stderr] 23 | handle.write(&bytes[last_space..i]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | handle.write(&bytes[last_space..i]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:39:7 [INFO] [stderr] | [INFO] [stderr] 39 | handle.write(b"\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:44:3 [INFO] [stderr] | [INFO] [stderr] 44 | handle.write(&bytes[last_space..i]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:45:3 [INFO] [stderr] | [INFO] [stderr] 45 | handle.write(b"\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | io::stdout().write(prompt.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/command.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / match input.chars().next() { [INFO] [stderr] 59 | | Some(k) => { [INFO] [stderr] 60 | | let k = k.to_ascii_lowercase(); [INFO] [stderr] 61 | | if k == 'h' || k == '?' { [INFO] [stderr] ... | [INFO] [stderr] 70 | | None => {} [INFO] [stderr] 71 | | } [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] 58 | if let Some(k) = input.chars().next() { [INFO] [stderr] 59 | let k = k.to_ascii_lowercase(); [INFO] [stderr] 60 | if k == 'h' || k == '?' { [INFO] [stderr] 61 | wrapln!("Here's what I understand right now:\n"); [INFO] [stderr] 62 | Self::show_help(); [INFO] [stderr] 63 | wrapln!(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `map::Map` [INFO] [stderr] --> src/map.rs:56:3 [INFO] [stderr] | [INFO] [stderr] 56 | / pub fn new() -> Self { [INFO] [stderr] 57 | | Self { rooms: vec![Room::new(); RoomId::size()] } [INFO] [stderr] 58 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/map.rs:276:24 [INFO] [stderr] | [INFO] [stderr] 276 | Platform::random_i32(MIN_TREASURE_AMOUNT as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(MIN_TREASURE_AMOUNT)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/map.rs:277:24 [INFO] [stderr] | [INFO] [stderr] 277 | MAX_TREASURE_AMOUNT as i32) as u8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(MAX_TREASURE_AMOUNT)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `map::Room` [INFO] [stderr] --> src/map.rs:289:3 [INFO] [stderr] | [INFO] [stderr] 289 | / pub fn new() -> Self { [INFO] [stderr] 290 | | Self { [INFO] [stderr] 291 | | exits: vec![None; Direction::size()], [INFO] [stderr] 292 | | name: "", [INFO] [stderr] ... | [INFO] [stderr] 295 | | } [INFO] [stderr] 296 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 281 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `game_state::GameState` [INFO] [stderr] --> src/game_state.rs:57:3 [INFO] [stderr] | [INFO] [stderr] 57 | / pub fn new() -> Self { [INFO] [stderr] 58 | | Self { [INFO] [stderr] 59 | | map: Map::new(), [INFO] [stderr] 60 | | player_name: String::from(""), [INFO] [stderr] ... | [INFO] [stderr] 74 | | } [INFO] [stderr] 75 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 56 | impl Default for game_state::GameState { [INFO] [stderr] 57 | fn default() -> Self { [INFO] [stderr] 58 | Self::new() [INFO] [stderr] 59 | } [INFO] [stderr] 60 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `self.items.get_quantity(Food)` [INFO] [stderr] --> src/game_state.rs:146:5 [INFO] [stderr] | [INFO] [stderr] 146 | 1 * self.items.get_quantity(Food) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/game_state.rs:187:10 [INFO] [stderr] | [INFO] [stderr] 187 | if input.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.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: length comparison to zero [INFO] [stderr] --> src/primary_mode.rs:60:8 [INFO] [stderr] | [INFO] [stderr] 60 | if item_names.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!item_names.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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/primary_mode.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | self.wealth += amt as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(amt)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/combat.rs:120:47 [INFO] [stderr] | [INFO] [stderr] 120 | fn tick_preparation_phase(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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/combat.rs:142:42 [INFO] [stderr] | [INFO] [stderr] 142 | fn tick_battle_phase(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/combat.rs:176:45 [INFO] [stderr] | [INFO] [stderr] 176 | fn tick_aftermath_phase(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/combat.rs:195:45 [INFO] [stderr] | [INFO] [stderr] 195 | pub fn tick_combat_mode(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/items.rs:26:16 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn price(&self) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/items.rs:37:23 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn can_own_many(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/items.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn as_str(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/monsters.rs:19:17 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn as_str(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/monsters.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn ferocity_factor(&self) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider deriving a `Default` implementation for `inventory::Inventory` [INFO] [stderr] --> src/inventory.rs:14:3 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Self { quantities: vec![0; Item::size()] } [INFO] [stderr] 16 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 9 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `strings`. [INFO] [stderr] --> src/util.rs:8:16 [INFO] [stderr] | [INFO] [stderr] 8 | for i in 0..strings.len() - 1 { [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] 8 | for in strings.iter().take(strings.len() - 1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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/sized_enum.rs:22:7 [INFO] [stderr] | [INFO] [stderr] 22 | / match Self::from_i32(r) { [INFO] [stderr] 23 | | Some(t) => { return t; }, [INFO] [stderr] 24 | | None => {} [INFO] [stderr] 25 | | } [INFO] [stderr] | |_______^ help: try this: `if let Some(t) = Self::from_i32(r) { return t; }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/debug_mode.rs:31:7 [INFO] [stderr] | [INFO] [stderr] 31 | RoomId::from_usize(i).map(|room_id| { [INFO] [stderr] | _______^ [INFO] [stderr] | |_______| [INFO] [stderr] | || [INFO] [stderr] 32 | || let room = self.map.room(room_id); [INFO] [stderr] 33 | || wrapln!("Room {} - {:?}", i, room_id); [INFO] [stderr] 34 | || if let Some(contents) = room.contents { [INFO] [stderr] 35 | || wrapln!(" Contains {:?}", contents); [INFO] [stderr] 36 | || } [INFO] [stderr] 37 | || }); [INFO] [stderr] | ||________^- help: try this: `if let Some(room_id) = RoomId::from_usize(i) { ... }` [INFO] [stderr] | |_________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/debug_mode.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | } else if input.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!input.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 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `werewolves-and-wanderer`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:23:7 [INFO] [stderr] | [INFO] [stderr] 23 | handle.write(&bytes[last_space..i]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:36:9 [INFO] [stderr] | [INFO] [stderr] 36 | handle.write(&bytes[last_space..i]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:39:7 [INFO] [stderr] | [INFO] [stderr] 39 | handle.write(b"\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:44:3 [INFO] [stderr] | [INFO] [stderr] 44 | handle.write(&bytes[last_space..i]).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/word_wrap.rs:45:3 [INFO] [stderr] | [INFO] [stderr] 45 | handle.write(b"\n").unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/platform/stdio/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | io::stdout().write(prompt.as_bytes()).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [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/command.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / match input.chars().next() { [INFO] [stderr] 59 | | Some(k) => { [INFO] [stderr] 60 | | let k = k.to_ascii_lowercase(); [INFO] [stderr] 61 | | if k == 'h' || k == '?' { [INFO] [stderr] ... | [INFO] [stderr] 70 | | None => {} [INFO] [stderr] 71 | | } [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] 58 | if let Some(k) = input.chars().next() { [INFO] [stderr] 59 | let k = k.to_ascii_lowercase(); [INFO] [stderr] 60 | if k == 'h' || k == '?' { [INFO] [stderr] 61 | wrapln!("Here's what I understand right now:\n"); [INFO] [stderr] 62 | Self::show_help(); [INFO] [stderr] 63 | wrapln!(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `map::Map` [INFO] [stderr] --> src/map.rs:56:3 [INFO] [stderr] | [INFO] [stderr] 56 | / pub fn new() -> Self { [INFO] [stderr] 57 | | Self { rooms: vec![Room::new(); RoomId::size()] } [INFO] [stderr] 58 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/map.rs:276:24 [INFO] [stderr] | [INFO] [stderr] 276 | Platform::random_i32(MIN_TREASURE_AMOUNT as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(MIN_TREASURE_AMOUNT)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/map.rs:277:24 [INFO] [stderr] | [INFO] [stderr] 277 | MAX_TREASURE_AMOUNT as i32) as u8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(MAX_TREASURE_AMOUNT)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `map::Room` [INFO] [stderr] --> src/map.rs:289:3 [INFO] [stderr] | [INFO] [stderr] 289 | / pub fn new() -> Self { [INFO] [stderr] 290 | | Self { [INFO] [stderr] 291 | | exits: vec![None; Direction::size()], [INFO] [stderr] 292 | | name: "", [INFO] [stderr] ... | [INFO] [stderr] 295 | | } [INFO] [stderr] 296 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 281 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `game_state::GameState` [INFO] [stderr] --> src/game_state.rs:57:3 [INFO] [stderr] | [INFO] [stderr] 57 | / pub fn new() -> Self { [INFO] [stderr] 58 | | Self { [INFO] [stderr] 59 | | map: Map::new(), [INFO] [stderr] 60 | | player_name: String::from(""), [INFO] [stderr] ... | [INFO] [stderr] 74 | | } [INFO] [stderr] 75 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 56 | impl Default for game_state::GameState { [INFO] [stderr] 57 | fn default() -> Self { [INFO] [stderr] 58 | Self::new() [INFO] [stderr] 59 | } [INFO] [stderr] 60 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `self.items.get_quantity(Food)` [INFO] [stderr] --> src/game_state.rs:146:5 [INFO] [stderr] | [INFO] [stderr] 146 | 1 * self.items.get_quantity(Food) + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/game_state.rs:187:10 [INFO] [stderr] | [INFO] [stderr] 187 | if input.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `input.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: length comparison to zero [INFO] [stderr] --> src/primary_mode.rs:60:8 [INFO] [stderr] | [INFO] [stderr] 60 | if item_names.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!item_names.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: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/primary_mode.rs:111:26 [INFO] [stderr] | [INFO] [stderr] 111 | self.wealth += amt as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(amt)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/combat.rs:120:47 [INFO] [stderr] | [INFO] [stderr] 120 | fn tick_preparation_phase(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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/combat.rs:142:42 [INFO] [stderr] | [INFO] [stderr] 142 | fn tick_battle_phase(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/combat.rs:176:45 [INFO] [stderr] | [INFO] [stderr] 176 | fn tick_aftermath_phase(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/combat.rs:195:45 [INFO] [stderr] | [INFO] [stderr] 195 | pub fn tick_combat_mode(&mut self, state: &CombatState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `CombatState` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/items.rs:26:16 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn price(&self) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/items.rs:37:23 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn can_own_many(&self) -> bool { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/items.rs:41:17 [INFO] [stderr] | [INFO] [stderr] 41 | pub fn as_str(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/monsters.rs:19:17 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn as_str(&self) -> &'static str { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/monsters.rs:28:26 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn ferocity_factor(&self) -> i32 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you should consider deriving a `Default` implementation for `inventory::Inventory` [INFO] [stderr] --> src/inventory.rs:14:3 [INFO] [stderr] | [INFO] [stderr] 14 | / pub fn new() -> Self { [INFO] [stderr] 15 | | Self { quantities: vec![0; Item::size()] } [INFO] [stderr] 16 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 9 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `strings`. [INFO] [stderr] --> src/util.rs:8:16 [INFO] [stderr] | [INFO] [stderr] 8 | for i in 0..strings.len() - 1 { [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] 8 | for in strings.iter().take(strings.len() - 1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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/sized_enum.rs:22:7 [INFO] [stderr] | [INFO] [stderr] 22 | / match Self::from_i32(r) { [INFO] [stderr] 23 | | Some(t) => { return t; }, [INFO] [stderr] 24 | | None => {} [INFO] [stderr] 25 | | } [INFO] [stderr] | |_______^ help: try this: `if let Some(t) = Self::from_i32(r) { return t; }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `map(f)` on an Option value where `f` is a unit closure [INFO] [stderr] --> src/debug_mode.rs:31:7 [INFO] [stderr] | [INFO] [stderr] 31 | RoomId::from_usize(i).map(|room_id| { [INFO] [stderr] | _______^ [INFO] [stderr] | |_______| [INFO] [stderr] | || [INFO] [stderr] 32 | || let room = self.map.room(room_id); [INFO] [stderr] 33 | || wrapln!("Room {} - {:?}", i, room_id); [INFO] [stderr] 34 | || if let Some(contents) = room.contents { [INFO] [stderr] 35 | || wrapln!(" Contains {:?}", contents); [INFO] [stderr] 36 | || } [INFO] [stderr] 37 | || }); [INFO] [stderr] | ||________^- help: try this: `if let Some(room_id) = RoomId::from_usize(i) { ... }` [INFO] [stderr] | |_________| [INFO] [stderr] | [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::option_map_unit_fn)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#option_map_unit_fn [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/debug_mode.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | } else if input.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!input.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 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `werewolves-and-wanderer`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "aa53c4aba8f08ea3c5222372c1c412a799d3b4e48e2f72669be8bdfcc36e038f"` [INFO] running `"docker" "rm" "-f" "aa53c4aba8f08ea3c5222372c1c412a799d3b4e48e2f72669be8bdfcc36e038f"` [INFO] [stdout] aa53c4aba8f08ea3c5222372c1c412a799d3b4e48e2f72669be8bdfcc36e038f