[INFO] updating cached repository swamulism/aether_of_enclaves [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/swamulism/aether_of_enclaves [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/swamulism/aether_of_enclaves" "work/ex/clippy-test-run/sources/stable/gh/swamulism/aether_of_enclaves"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/swamulism/aether_of_enclaves'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/swamulism/aether_of_enclaves" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/swamulism/aether_of_enclaves"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/swamulism/aether_of_enclaves'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] b48130bd5349091f005fa0064c9a5e93d56cd16f [INFO] sha for GitHub repo swamulism/aether_of_enclaves: b48130bd5349091f005fa0064c9a5e93d56cd16f [INFO] validating manifest of swamulism/aether_of_enclaves 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 swamulism/aether_of_enclaves 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 swamulism/aether_of_enclaves [INFO] finished frobbing swamulism/aether_of_enclaves [INFO] frobbed toml for swamulism/aether_of_enclaves written to work/ex/clippy-test-run/sources/stable/gh/swamulism/aether_of_enclaves/Cargo.toml [INFO] started frobbing swamulism/aether_of_enclaves [INFO] finished frobbing swamulism/aether_of_enclaves [INFO] frobbed toml for swamulism/aether_of_enclaves written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/swamulism/aether_of_enclaves/Cargo.toml [INFO] crate swamulism/aether_of_enclaves 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 swamulism/aether_of_enclaves against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/swamulism/aether_of_enclaves:/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] 67ddf79f7a21a7a82a8d6828b414305366e7c811003ae6fc73ea37cd7cbd322c [INFO] running `"docker" "start" "-a" "67ddf79f7a21a7a82a8d6828b414305366e7c811003ae6fc73ea37cd7cbd322c"` [INFO] [stderr] Compiling libloading v0.4.3 [INFO] [stderr] Compiling khronos_api v2.1.0 [INFO] [stderr] Checking scoped_threadpool v0.1.8 [INFO] [stderr] Checking find_folder v0.3.0 [INFO] [stderr] Checking num_cpus v1.8.0 [INFO] [stderr] Checking memmap v0.6.2 [INFO] [stderr] Checking shared_library v0.1.8 [INFO] [stderr] Checking draw_state v0.8.0 [INFO] [stderr] Compiling itertools v0.5.10 [INFO] [stderr] Checking enum_primitive v0.1.1 [INFO] [stderr] Compiling x11-dl v2.17.2 [INFO] [stderr] Checking deflate v0.7.17 [INFO] [stderr] Checking stb_truetype v0.2.2 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Compiling gl_generator v0.9.0 [INFO] [stderr] Checking num-rational v0.1.41 [INFO] [stderr] Checking ordered-float v0.5.0 [INFO] [stderr] Checking rayon-core v1.3.0 [INFO] [stderr] Checking tempfile v2.2.0 [INFO] [stderr] Compiling gl_generator v0.7.0 [INFO] [stderr] Checking png v0.12.0 [INFO] [stderr] Checking png v0.11.0 [INFO] [stderr] Checking pistoncore-input v0.20.0 [INFO] [stderr] Checking rusttype v0.4.3 [INFO] [stderr] Checking rayon v0.8.2 [INFO] [stderr] Checking dlib v0.4.0 [INFO] [stderr] Compiling derivative v1.0.0 [INFO] [stderr] Checking piston2d-graphics v0.26.0 [INFO] [stderr] Compiling glutin v0.14.0 [INFO] [stderr] Compiling gl v0.10.0 [INFO] [stderr] Compiling gfx_gl v0.4.0 [INFO] [stderr] Checking wayland-sys v0.12.5 [INFO] [stderr] Checking wayland-client v0.12.5 [INFO] [stderr] Checking jpeg-decoder v0.1.13 [INFO] [stderr] Checking pistoncore-window v0.31.0 [INFO] [stderr] Checking pistoncore-event_loop v0.36.0 [INFO] [stderr] Checking image v0.19.0 [INFO] [stderr] Checking image v0.18.0 [INFO] [stderr] Checking gfx_core v0.8.2 [INFO] [stderr] Checking piston v0.36.0 [INFO] [stderr] Checking wayland-protocols v0.12.5 [INFO] [stderr] Checking wayland-kbd v0.13.1 [INFO] [stderr] Checking noise v0.5.1 [INFO] [stderr] Checking wayland-window v0.13.2 [INFO] [stderr] Checking winit v0.12.0 [INFO] [stderr] Checking pistoncore-glutin_window v0.46.0 [INFO] [stderr] Checking gfx v0.17.1 [INFO] [stderr] Checking gfx_device_gl v0.15.0 [INFO] [stderr] Checking piston-gfx_texture v0.32.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.51.0 [INFO] [stderr] Checking piston_window v0.79.0 [INFO] [stderr] Checking aether_of_enclaves v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | item_prototypes: item_prototypes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `item_prototypes` [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/game.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | glyphs: glyphs, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `glyphs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | textures: textures, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `textures` [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/tile.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | tile_type: tile_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tile_type` [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/item.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | item_type: item_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `item_type` [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/item.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | damage: damage, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `damage` [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/item.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | pickupable: pickupable, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pickupable` [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/item.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | x: x, [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/item.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | y: y, [INFO] [stderr] | ^^^^ help: replace it with: `y` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | item_prototypes: item_prototypes, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `item_prototypes` [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/game.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | glyphs: glyphs, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `glyphs` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/game.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | textures: textures, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `textures` [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/tile.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | tile_type: tile_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `tile_type` [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/item.rs:73:13 [INFO] [stderr] | [INFO] [stderr] 73 | item_type: item_type, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `item_type` [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/item.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | damage: damage, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `damage` [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/item.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | pickupable: pickupable, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `pickupable` [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/item.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | x: x, [INFO] [stderr] | ^^^^ help: replace it with: `x` [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/item.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | y: y, [INFO] [stderr] | ^^^^ help: replace it with: `y` [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 if statement can be collapsed [INFO] [stderr] --> src/game.rs:595:9 [INFO] [stderr] | [INFO] [stderr] 595 | / if self.game_state == GameState::InGame { [INFO] [stderr] 596 | | if *state == ButtonState::Press { [INFO] [stderr] 597 | | let current_location = self.player_location.clone(); [INFO] [stderr] 598 | | match self.tile_under_player(current_location) { [INFO] [stderr] ... | [INFO] [stderr] 656 | | } [INFO] [stderr] 657 | | } [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] 595 | if self.game_state == GameState::InGame && *state == ButtonState::Press { [INFO] [stderr] 596 | let current_location = self.player_location.clone(); [INFO] [stderr] 597 | match self.tile_under_player(current_location) { [INFO] [stderr] 598 | Some(t) => match t.tile_type { [INFO] [stderr] 599 | TileType::Portal => match self.player_location { [INFO] [stderr] 600 | PlayerLocation::OnShip => { [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/game.rs:705:5 [INFO] [stderr] | [INFO] [stderr] 705 | glyphs [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/game.rs:704:18 [INFO] [stderr] | [INFO] [stderr] 704 | let glyphs = Glyphs::new(font, factory, TextureSettings::new()).expect("Error with glyphs"); [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: unneeded return statement [INFO] [stderr] --> src/creature.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | return self.health <= 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.health <= 0` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:315:24 [INFO] [stderr] | [INFO] [stderr] 315 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 316 | | if *state == ButtonState::Press { [INFO] [stderr] 317 | | self.directions.push(dir); [INFO] [stderr] 318 | | } [INFO] [stderr] 319 | | } [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] 315 | } else if *state == ButtonState::Press { [INFO] [stderr] 316 | self.directions.push(dir); [INFO] [stderr] 317 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:327:24 [INFO] [stderr] | [INFO] [stderr] 327 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 328 | | if *state == ButtonState::Press { [INFO] [stderr] 329 | | self.directions.push(dir); [INFO] [stderr] 330 | | } [INFO] [stderr] 331 | | } [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] 327 | } else if *state == ButtonState::Press { [INFO] [stderr] 328 | self.directions.push(dir); [INFO] [stderr] 329 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:339:24 [INFO] [stderr] | [INFO] [stderr] 339 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 340 | | if *state == ButtonState::Press { [INFO] [stderr] 341 | | self.directions.push(dir); [INFO] [stderr] 342 | | } [INFO] [stderr] 343 | | } [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] 339 | } else if *state == ButtonState::Press { [INFO] [stderr] 340 | self.directions.push(dir); [INFO] [stderr] 341 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:351:24 [INFO] [stderr] | [INFO] [stderr] 351 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 352 | | if *state == ButtonState::Press { [INFO] [stderr] 353 | | self.directions.push(dir); [INFO] [stderr] 354 | | } [INFO] [stderr] 355 | | } [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] 351 | } else if *state == ButtonState::Press { [INFO] [stderr] 352 | self.directions.push(dir); [INFO] [stderr] 353 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:212:24 [INFO] [stderr] | [INFO] [stderr] 212 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 213 | | if *state == ButtonState::Press { [INFO] [stderr] 214 | | self.directions.push(dir); [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [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] 212 | } else if *state == ButtonState::Press { [INFO] [stderr] 213 | self.directions.push(dir); [INFO] [stderr] 214 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 225 | | if *state == ButtonState::Press { [INFO] [stderr] 226 | | self.directions.push(dir); [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [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] 224 | } else if *state == ButtonState::Press { [INFO] [stderr] 225 | self.directions.push(dir); [INFO] [stderr] 226 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:236:24 [INFO] [stderr] | [INFO] [stderr] 236 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 237 | | if *state == ButtonState::Press { [INFO] [stderr] 238 | | self.directions.push(dir); [INFO] [stderr] 239 | | } [INFO] [stderr] 240 | | } [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] 236 | } else if *state == ButtonState::Press { [INFO] [stderr] 237 | self.directions.push(dir); [INFO] [stderr] 238 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:248:24 [INFO] [stderr] | [INFO] [stderr] 248 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 249 | | if *state == ButtonState::Press { [INFO] [stderr] 250 | | self.directions.push(dir); [INFO] [stderr] 251 | | } [INFO] [stderr] 252 | | } [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] 248 | } else if *state == ButtonState::Press { [INFO] [stderr] 249 | self.directions.push(dir); [INFO] [stderr] 250 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:223:17 [INFO] [stderr] | [INFO] [stderr] 223 | / if x > 0 { [INFO] [stderr] 224 | | if self.tiles[x - 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 225 | | left = true; [INFO] [stderr] 226 | | } [INFO] [stderr] 227 | | } [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] 223 | if x > 0 && self.tiles[x - 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 224 | left = true; [INFO] [stderr] 225 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | / if x < self.tiles.len() - 1 { [INFO] [stderr] 229 | | if self.tiles[x + 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 230 | | right = true; [INFO] [stderr] 231 | | } [INFO] [stderr] 232 | | } [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] 228 | if x < self.tiles.len() - 1 && self.tiles[x + 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 229 | right = true; [INFO] [stderr] 230 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:233:17 [INFO] [stderr] | [INFO] [stderr] 233 | / if y > 0 { [INFO] [stderr] 234 | | if self.tiles[x][y - 1].tile_type == TileType::StoneWall { [INFO] [stderr] 235 | | up = true; [INFO] [stderr] 236 | | } [INFO] [stderr] 237 | | } [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] 233 | if y > 0 && self.tiles[x][y - 1].tile_type == TileType::StoneWall { [INFO] [stderr] 234 | up = true; [INFO] [stderr] 235 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:238:17 [INFO] [stderr] | [INFO] [stderr] 238 | / if y < self.tiles[x].len() - 1 { [INFO] [stderr] 239 | | if self.tiles[x][y + 1].tile_type == TileType::StoneWall { [INFO] [stderr] 240 | | down = true; [INFO] [stderr] 241 | | } [INFO] [stderr] 242 | | } [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] 238 | if y < self.tiles[x].len() - 1 && self.tiles[x][y + 1].tile_type == TileType::StoneWall { [INFO] [stderr] 239 | down = true; [INFO] [stderr] 240 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:299:9 [INFO] [stderr] | [INFO] [stderr] 299 | / if x > 0 { [INFO] [stderr] 300 | | if self.tiles[x - 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 301 | | left = true; [INFO] [stderr] 302 | | } [INFO] [stderr] 303 | | } [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] 299 | if x > 0 && self.tiles[x - 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 300 | left = true; [INFO] [stderr] 301 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:304:9 [INFO] [stderr] | [INFO] [stderr] 304 | / if x < self.tiles.len() - 1 { [INFO] [stderr] 305 | | if self.tiles[x + 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 306 | | right = true; [INFO] [stderr] 307 | | } [INFO] [stderr] 308 | | } [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] 304 | if x < self.tiles.len() - 1 && self.tiles[x + 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 305 | right = true; [INFO] [stderr] 306 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:309:9 [INFO] [stderr] | [INFO] [stderr] 309 | / if y > 0 { [INFO] [stderr] 310 | | if self.tiles[x][y - 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 311 | | up = true; [INFO] [stderr] 312 | | } [INFO] [stderr] 313 | | } [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] 309 | if y > 0 && self.tiles[x][y - 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 310 | up = true; [INFO] [stderr] 311 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:314:9 [INFO] [stderr] | [INFO] [stderr] 314 | / if y < self.tiles[x].len() - 1 { [INFO] [stderr] 315 | | if self.tiles[x][y + 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 316 | | down = true; [INFO] [stderr] 317 | | } [INFO] [stderr] 318 | | } [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] 314 | if y < self.tiles[x].len() - 1 && self.tiles[x][y + 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 315 | down = true; [INFO] [stderr] 316 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/game.rs:595:9 [INFO] [stderr] | [INFO] [stderr] 595 | / if self.game_state == GameState::InGame { [INFO] [stderr] 596 | | if *state == ButtonState::Press { [INFO] [stderr] 597 | | let current_location = self.player_location.clone(); [INFO] [stderr] 598 | | match self.tile_under_player(current_location) { [INFO] [stderr] ... | [INFO] [stderr] 656 | | } [INFO] [stderr] 657 | | } [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] 595 | if self.game_state == GameState::InGame && *state == ButtonState::Press { [INFO] [stderr] 596 | let current_location = self.player_location.clone(); [INFO] [stderr] 597 | match self.tile_under_player(current_location) { [INFO] [stderr] 598 | Some(t) => match t.tile_type { [INFO] [stderr] 599 | TileType::Portal => match self.player_location { [INFO] [stderr] 600 | PlayerLocation::OnShip => { [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/game.rs:705:5 [INFO] [stderr] | [INFO] [stderr] 705 | glyphs [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/game.rs:704:18 [INFO] [stderr] | [INFO] [stderr] 704 | let glyphs = Glyphs::new(font, factory, TextureSettings::new()).expect("Error with glyphs"); [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: unneeded return statement [INFO] [stderr] --> src/creature.rs:213:9 [INFO] [stderr] | [INFO] [stderr] 213 | return self.health <= 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.health <= 0` [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:315:24 [INFO] [stderr] | [INFO] [stderr] 315 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 316 | | if *state == ButtonState::Press { [INFO] [stderr] 317 | | self.directions.push(dir); [INFO] [stderr] 318 | | } [INFO] [stderr] 319 | | } [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] 315 | } else if *state == ButtonState::Press { [INFO] [stderr] 316 | self.directions.push(dir); [INFO] [stderr] 317 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:327:24 [INFO] [stderr] | [INFO] [stderr] 327 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 328 | | if *state == ButtonState::Press { [INFO] [stderr] 329 | | self.directions.push(dir); [INFO] [stderr] 330 | | } [INFO] [stderr] 331 | | } [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] 327 | } else if *state == ButtonState::Press { [INFO] [stderr] 328 | self.directions.push(dir); [INFO] [stderr] 329 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:339:24 [INFO] [stderr] | [INFO] [stderr] 339 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 340 | | if *state == ButtonState::Press { [INFO] [stderr] 341 | | self.directions.push(dir); [INFO] [stderr] 342 | | } [INFO] [stderr] 343 | | } [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] 339 | } else if *state == ButtonState::Press { [INFO] [stderr] 340 | self.directions.push(dir); [INFO] [stderr] 341 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/creature.rs:351:24 [INFO] [stderr] | [INFO] [stderr] 351 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 352 | | if *state == ButtonState::Press { [INFO] [stderr] 353 | | self.directions.push(dir); [INFO] [stderr] 354 | | } [INFO] [stderr] 355 | | } [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] 351 | } else if *state == ButtonState::Press { [INFO] [stderr] 352 | self.directions.push(dir); [INFO] [stderr] 353 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:212:24 [INFO] [stderr] | [INFO] [stderr] 212 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 213 | | if *state == ButtonState::Press { [INFO] [stderr] 214 | | self.directions.push(dir); [INFO] [stderr] 215 | | } [INFO] [stderr] 216 | | } [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] 212 | } else if *state == ButtonState::Press { [INFO] [stderr] 213 | self.directions.push(dir); [INFO] [stderr] 214 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 225 | | if *state == ButtonState::Press { [INFO] [stderr] 226 | | self.directions.push(dir); [INFO] [stderr] 227 | | } [INFO] [stderr] 228 | | } [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] 224 | } else if *state == ButtonState::Press { [INFO] [stderr] 225 | self.directions.push(dir); [INFO] [stderr] 226 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:236:24 [INFO] [stderr] | [INFO] [stderr] 236 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 237 | | if *state == ButtonState::Press { [INFO] [stderr] 238 | | self.directions.push(dir); [INFO] [stderr] 239 | | } [INFO] [stderr] 240 | | } [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] 236 | } else if *state == ButtonState::Press { [INFO] [stderr] 237 | self.directions.push(dir); [INFO] [stderr] 238 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/ship.rs:248:24 [INFO] [stderr] | [INFO] [stderr] 248 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 249 | | if *state == ButtonState::Press { [INFO] [stderr] 250 | | self.directions.push(dir); [INFO] [stderr] 251 | | } [INFO] [stderr] 252 | | } [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] 248 | } else if *state == ButtonState::Press { [INFO] [stderr] 249 | self.directions.push(dir); [INFO] [stderr] 250 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:223:17 [INFO] [stderr] | [INFO] [stderr] 223 | / if x > 0 { [INFO] [stderr] 224 | | if self.tiles[x - 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 225 | | left = true; [INFO] [stderr] 226 | | } [INFO] [stderr] 227 | | } [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] 223 | if x > 0 && self.tiles[x - 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 224 | left = true; [INFO] [stderr] 225 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:228:17 [INFO] [stderr] | [INFO] [stderr] 228 | / if x < self.tiles.len() - 1 { [INFO] [stderr] 229 | | if self.tiles[x + 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 230 | | right = true; [INFO] [stderr] 231 | | } [INFO] [stderr] 232 | | } [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] 228 | if x < self.tiles.len() - 1 && self.tiles[x + 1][y].tile_type == TileType::StoneWall { [INFO] [stderr] 229 | right = true; [INFO] [stderr] 230 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:233:17 [INFO] [stderr] | [INFO] [stderr] 233 | / if y > 0 { [INFO] [stderr] 234 | | if self.tiles[x][y - 1].tile_type == TileType::StoneWall { [INFO] [stderr] 235 | | up = true; [INFO] [stderr] 236 | | } [INFO] [stderr] 237 | | } [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] 233 | if y > 0 && self.tiles[x][y - 1].tile_type == TileType::StoneWall { [INFO] [stderr] 234 | up = true; [INFO] [stderr] 235 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:238:17 [INFO] [stderr] | [INFO] [stderr] 238 | / if y < self.tiles[x].len() - 1 { [INFO] [stderr] 239 | | if self.tiles[x][y + 1].tile_type == TileType::StoneWall { [INFO] [stderr] 240 | | down = true; [INFO] [stderr] 241 | | } [INFO] [stderr] 242 | | } [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] 238 | if y < self.tiles[x].len() - 1 && self.tiles[x][y + 1].tile_type == TileType::StoneWall { [INFO] [stderr] 239 | down = true; [INFO] [stderr] 240 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:299:9 [INFO] [stderr] | [INFO] [stderr] 299 | / if x > 0 { [INFO] [stderr] 300 | | if self.tiles[x - 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 301 | | left = true; [INFO] [stderr] 302 | | } [INFO] [stderr] 303 | | } [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] 299 | if x > 0 && self.tiles[x - 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 300 | left = true; [INFO] [stderr] 301 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:304:9 [INFO] [stderr] | [INFO] [stderr] 304 | / if x < self.tiles.len() - 1 { [INFO] [stderr] 305 | | if self.tiles[x + 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 306 | | right = true; [INFO] [stderr] 307 | | } [INFO] [stderr] 308 | | } [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] 304 | if x < self.tiles.len() - 1 && self.tiles[x + 1][y].tile_type == TileType::DirtFloor { [INFO] [stderr] 305 | right = true; [INFO] [stderr] 306 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:309:9 [INFO] [stderr] | [INFO] [stderr] 309 | / if y > 0 { [INFO] [stderr] 310 | | if self.tiles[x][y - 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 311 | | up = true; [INFO] [stderr] 312 | | } [INFO] [stderr] 313 | | } [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] 309 | if y > 0 && self.tiles[x][y - 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 310 | up = true; [INFO] [stderr] 311 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/map.rs:314:9 [INFO] [stderr] | [INFO] [stderr] 314 | / if y < self.tiles[x].len() - 1 { [INFO] [stderr] 315 | | if self.tiles[x][y + 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 316 | | down = true; [INFO] [stderr] 317 | | } [INFO] [stderr] 318 | | } [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] 314 | if y < self.tiles[x].len() - 1 && self.tiles[x][y + 1].tile_type == TileType::DirtFloor { [INFO] [stderr] 315 | down = true; [INFO] [stderr] 316 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:110:27 [INFO] [stderr] | [INFO] [stderr] 110 | let w_width = window_size.width as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(window_size.width)` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:111:28 [INFO] [stderr] | [INFO] [stderr] 111 | let w_height = window_size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(window_size.height)` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:126:30 [INFO] [stderr] | [INFO] [stderr] 126 | .expect(&format!("Not found: {:?}", sky_img_string)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", sky_img_string))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:181:34 [INFO] [stderr] | [INFO] [stderr] 181 | .expect(&format!("Not found: {:?}", IMG_HEART)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", IMG_HEART))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:184:47 [INFO] [stderr] | [INFO] [stderr] 184 | .trans(25.0 + i as f64 * (IMAGE_SIZE_SCALED + 2.0), 25.0) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(i)` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/game.rs:205:21 [INFO] [stderr] | [INFO] [stderr] 205 | / let mut scale; [INFO] [stderr] 206 | | if w_height < w_width { [INFO] [stderr] 207 | | scale = w_height / title_txt.get_width() as f64; [INFO] [stderr] 208 | | } else { [INFO] [stderr] 209 | | scale = w_width / title_txt.get_width() as f64; [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let scale = if w_height < w_width { w_height / title_txt.get_width() as f64 } else { w_width / title_txt.get_width() as f64 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:198:26 [INFO] [stderr] | [INFO] [stderr] 198 | .expect(&format!("Not found: {:?}", img)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:204:26 [INFO] [stderr] | [INFO] [stderr] 204 | .expect(&format!("Not found: {:?}", img)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:207:44 [INFO] [stderr] | [INFO] [stderr] 207 | scale = w_height / title_txt.get_width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_txt.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:209:43 [INFO] [stderr] | [INFO] [stderr] 209 | scale = w_width / title_txt.get_width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_txt.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:211:44 [INFO] [stderr] | [INFO] [stderr] 211 | let new_size = scale * title_txt.get_width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_txt.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:216:39 [INFO] [stderr] | [INFO] [stderr] 216 | w_width / title_img.get_width() as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_img.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:217:40 [INFO] [stderr] | [INFO] [stderr] 217 | w_height / title_img.get_height() as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_img.get_height())` [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: the loop variable `i` is used to index `draw_text` [INFO] [stderr] --> src/game.rs:247:30 [INFO] [stderr] | [INFO] [stderr] 247 | for i in 0..draw_text.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] 247 | for (i, ) in draw_text.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:257:27 [INFO] [stderr] | [INFO] [stderr] 257 | ).expect(&format!("Error drawing {}", draw_text[i])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Error drawing {}", draw_text[i]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:255:72 [INFO] [stderr] | [INFO] [stderr] 255 | .trans(100.0, transform_y + i as f64 * font as f64), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(font)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:264:29 [INFO] [stderr] | [INFO] [stderr] 264 | let x = (font * (draw_text.len() as u32)) as f64 / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(font * (draw_text.len() as u32))` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:274:23 [INFO] [stderr] | [INFO] [stderr] 274 | ).expect(&format!("Error drawing {}", draw_text)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Error drawing {}", draw_text))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:293:13 [INFO] [stderr] | [INFO] [stderr] 293 | / self.item_prototypes [INFO] [stderr] 294 | | .get("bisket") [INFO] [stderr] 295 | | .unwrap() [INFO] [stderr] | |_________________________^ help: try this: `&self.item_prototypes["bisket"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:333:17 [INFO] [stderr] | [INFO] [stderr] 333 | / self.item_prototypes [INFO] [stderr] 334 | | .get("bisket") [INFO] [stderr] 335 | | .unwrap() [INFO] [stderr] | |_____________________________^ help: try this: `&self.item_prototypes["bisket"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:472:39 [INFO] [stderr] | [INFO] [stderr] 472 | fn handle_input(&mut self, state: &ButtonState, button: &Button) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:474:9 [INFO] [stderr] | [INFO] [stderr] 474 | / match *button { [INFO] [stderr] 475 | | Button::Keyboard(key) => match key { [INFO] [stderr] 476 | | // Menu toggle. [INFO] [stderr] 477 | | Return | Tab => self.execute_open_menu(state), [INFO] [stderr] ... | [INFO] [stderr] 491 | | _ => {} [INFO] [stderr] 492 | | } [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] 474 | if let Button::Keyboard(key) = *button { match key { [INFO] [stderr] 475 | // Menu toggle. [INFO] [stderr] 476 | Return | Tab => self.execute_open_menu(state), [INFO] [stderr] 477 | // Moving. [INFO] [stderr] 478 | W | A | S | D => self.execute_move(state, &Some(key)), [INFO] [stderr] 479 | E => self.execute_action(state), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:513:47 [INFO] [stderr] | [INFO] [stderr] 513 | fn execute_player_hands(&mut self, state: &ButtonState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/game.rs:550:44 [INFO] [stderr] | [INFO] [stderr] 550 | fn execute_open_menu(&mut self, state: &ButtonState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/game.rs:574:39 [INFO] [stderr] | [INFO] [stderr] 574 | fn execute_move(&mut self, state: &ButtonState, key: &Option) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/game.rs:574:58 [INFO] [stderr] | [INFO] [stderr] 574 | fn execute_move(&mut self, state: &ButtonState, key: &Option) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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/game.rs:594:41 [INFO] [stderr] | [INFO] [stderr] 594 | fn execute_action(&mut self, state: &ButtonState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/game.rs:702:9 [INFO] [stderr] | [INFO] [stderr] 702 | let ref font = assets.join("m5x7.ttf"); [INFO] [stderr] | ----^^^^^^^^--------------------------- help: try: `let font = &assets.join("m5x7.ttf");` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/game.rs:786:35 [INFO] [stderr] | [INFO] [stderr] 786 | for image_name in image_names.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:793:11 [INFO] [stderr] | [INFO] [stderr] 793 | ).expect(&format!("Not found: {:?}", filename)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Not found: {:?}", filename))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/creature.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / let extension; [INFO] [stderr] 157 | | if self.self_vel_y != 0.0 || self.self_vel_x != 0.0 { [INFO] [stderr] 158 | | extension = "player_moving_"; [INFO] [stderr] 159 | | } else { [INFO] [stderr] 160 | | extension = "player_idle_"; [INFO] [stderr] 161 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let extension = if self.self_vel_y != 0.0 || self.self_vel_x != 0.0 { "player_moving_" } else { "player_idle_" };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/creature.rs:172:31 [INFO] [stderr] | [INFO] [stderr] 172 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/creature.rs:188:16 [INFO] [stderr] | [INFO] [stderr] 188 | if let Some(_) = self.inventory { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 189 | | let item = self.inventory.clone().unwrap(); [INFO] [stderr] 190 | | match item.item_type { [INFO] [stderr] 191 | | ItemType::Food(FoodType::Bisket) => { [INFO] [stderr] ... | [INFO] [stderr] 203 | | } [INFO] [stderr] 204 | | } [INFO] [stderr] | |_________- help: try this: `if self.inventory.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [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/creature.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / match item.item_type { [INFO] [stderr] 191 | | ItemType::Food(FoodType::Bisket) => { [INFO] [stderr] 192 | | let img = IMG_ITEM_BISKET; [INFO] [stderr] 193 | | image( [INFO] [stderr] ... | [INFO] [stderr] 202 | | _ => {} [INFO] [stderr] 203 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 190 | if let ItemType::Food(FoodType::Bisket) = item.item_type { [INFO] [stderr] 191 | let img = IMG_ITEM_BISKET; [INFO] [stderr] 192 | image( [INFO] [stderr] 193 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] 194 | context [INFO] [stderr] 195 | .transform [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/creature.rs:194:43 [INFO] [stderr] | [INFO] [stderr] 194 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/creature.rs:243:16 [INFO] [stderr] | [INFO] [stderr] 243 | if let None = self.inventory { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 244 | | self.inventory = Some(item); [INFO] [stderr] 245 | | return true; [INFO] [stderr] 246 | | } [INFO] [stderr] | |_________- help: try this: `if self.inventory.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [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/creature.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | / match item.item_type { [INFO] [stderr] 257 | | ItemType::Food(_) => { [INFO] [stderr] 258 | | // Heal Creature. [INFO] [stderr] 259 | | self.health += 1; [INFO] [stderr] ... | [INFO] [stderr] 262 | | _ => {} [INFO] [stderr] 263 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 256 | if let ItemType::Food(_) = item.item_type { [INFO] [stderr] 257 | // Heal Creature. [INFO] [stderr] 258 | self.health += 1; [INFO] [stderr] 259 | item_used = true; [INFO] [stderr] 260 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | assert_eq!(test_player.x, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:14:9 [INFO] [stderr] | [INFO] [stderr] 14 | assert_eq!(test_player.x, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | assert_eq!(test_player.y, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | assert_eq!(test_player.y, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | assert_eq!(test_player.x, 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | assert_eq!(test_player.x, 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | assert_eq!(test_player.y, 7.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | assert_eq!(test_player.y, 7.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | assert_eq!(test_player.x, 14.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | assert_eq!(test_player.x, 14.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | assert_eq!(test_player.y, 18.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:32:9 [INFO] [stderr] | [INFO] [stderr] 32 | assert_eq!(test_player.y, 18.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | assert_eq!(test_player.x, 18.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | assert_eq!(test_player.x, 18.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | assert_eq!(test_player.y, 22.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:41:9 [INFO] [stderr] | [INFO] [stderr] 41 | assert_eq!(test_player.y, 22.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | assert_eq!(test_player.self_vel_x, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | assert_eq!(test_player.self_vel_x, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | assert_eq!(test_player.self_vel_y, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | assert_eq!(test_player.self_vel_y, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | assert_eq!(test_player.self_vel_x, 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | assert_eq!(test_player.self_vel_x, 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | assert_eq!(test_player.self_vel_y, -3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:63:9 [INFO] [stderr] | [INFO] [stderr] 63 | assert_eq!(test_player.self_vel_y, -3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | assert_eq!(test_player.self_vel_x, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:84:9 [INFO] [stderr] | [INFO] [stderr] 84 | assert_eq!(test_player.self_vel_x, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/creature_test.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | assert_eq!(test_player.self_vel_y, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/creature_test.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | assert_eq!(test_player.self_vel_y, 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/ship_test.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | assert_eq!(test_ship.width, 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/ship_test.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | assert_eq!(test_ship.width, 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/test/ship_test.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | assert_eq!(test_ship.height, 4.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/test/ship_test.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | assert_eq!(test_ship.height, 4.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `ship_tiles` [INFO] [stderr] --> src/ship.rs:51:18 [INFO] [stderr] | [INFO] [stderr] 51 | for i in 0..ship_tiles.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 51 | for (i, ) in ship_tiles.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `temp_tiles` [INFO] [stderr] --> src/ship.rs:52:22 [INFO] [stderr] | [INFO] [stderr] 52 | for j in 0..ship_tiles[i].len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 52 | for (j, ) in temp_tiles.iter_mut().enumerate().take(ship_tiles[i].len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:121:47 [INFO] [stderr] | [INFO] [stderr] 121 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:136:47 [INFO] [stderr] | [INFO] [stderr] 136 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:149:47 [INFO] [stderr] | [INFO] [stderr] 149 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:164:47 [INFO] [stderr] | [INFO] [stderr] 164 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:177:47 [INFO] [stderr] | [INFO] [stderr] 177 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/misc.rs:6:39 [INFO] [stderr] | [INFO] [stderr] 6 | fn handle_input(&mut self, state: &ButtonState, key: &Option); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/misc.rs:6:58 [INFO] [stderr] | [INFO] [stderr] 6 | fn handle_input(&mut self, state: &ButtonState, key: &Option); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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/misc.rs:26:32 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn direction_to_string(&self) -> String { [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:27:21 [INFO] [stderr] | [INFO] [stderr] 27 | grass_dirt_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:28:16 [INFO] [stderr] | [INFO] [stderr] 28 | stone_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/map.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | / pub fn draw( [INFO] [stderr] 103 | | &mut self, [INFO] [stderr] 104 | | textures: &HashMap, [INFO] [stderr] 105 | | context: &Context, [INFO] [stderr] ... | [INFO] [stderr] 187 | | } [INFO] [stderr] 188 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:139:38 [INFO] [stderr] | [INFO] [stderr] 139 | .expect(&format!("Not found: {:?}", grass_img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", grass_img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:159:38 [INFO] [stderr] | [INFO] [stderr] 159 | .expect(&format!("Not found: {:?}", p_img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", p_img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:175:44 [INFO] [stderr] | [INFO] [stderr] 175 | textures.get(&img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:209:17 [INFO] [stderr] | [INFO] [stderr] 209 | / match self.tiles[x][y].texture { [INFO] [stderr] 210 | | false => img = Some(IMG_WATER.to_string()), [INFO] [stderr] 211 | | true => img = Some(IMG_WATER_TEXTURE.to_string()), [INFO] [stderr] 212 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_WATER_TEXTURE.to_string()) } else { img = Some(IMG_WATER.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/map.rs:247:21 [INFO] [stderr] | [INFO] [stderr] 247 | / if let &Some(ref _i) = i { [INFO] [stderr] 248 | | let temp = self.stone_map [INFO] [stderr] 249 | | .get(&key) [INFO] [stderr] 250 | | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] ... | [INFO] [stderr] 257 | | } [INFO] [stderr] 258 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 247 | if let Some(ref _i) = *i { [INFO] [stderr] | ^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:250:30 [INFO] [stderr] | [INFO] [stderr] 250 | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Couldn't get {:?}", key))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:254:25 [INFO] [stderr] | [INFO] [stderr] 254 | / match self.tiles[x][y].texture { [INFO] [stderr] 255 | | false => img = Some(IMG_STONE_WALL.to_string()), [INFO] [stderr] 256 | | true => img = Some(IMG_STONE_WALL_TEXTURE.to_string()), [INFO] [stderr] 257 | | } [INFO] [stderr] | |_________________________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_STONE_WALL_TEXTURE.to_string()) } else { img = Some(IMG_STONE_WALL.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:269:36 [INFO] [stderr] | [INFO] [stderr] 269 | TileType::DirtFloor => match self.tiles[x][y].texture { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 270 | | false => img = Some(IMG_DIRT_FLOOR.to_string()), [INFO] [stderr] 271 | | true => img = Some(IMG_DIRT_FLOOR_TEXTURE.to_string()), [INFO] [stderr] 272 | | }, [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_DIRT_FLOOR_TEXTURE.to_string()) } else { img = Some(IMG_DIRT_FLOOR.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/map.rs:324:13 [INFO] [stderr] | [INFO] [stderr] 324 | / if let &Some(ref _i) = i { [INFO] [stderr] 325 | | let grass_tile = self.grass_dirt_map [INFO] [stderr] 326 | | .get(&key) [INFO] [stderr] 327 | | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] ... | [INFO] [stderr] 334 | | } [INFO] [stderr] 335 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 324 | if let Some(ref _i) = *i { [INFO] [stderr] | ^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:327:22 [INFO] [stderr] | [INFO] [stderr] 327 | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Couldn't get {:?}", key))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:331:17 [INFO] [stderr] | [INFO] [stderr] 331 | / match self.tiles[x][y].texture { [INFO] [stderr] 332 | | false => img = Some(IMG_GRASS_FLOOR.to_string()), [INFO] [stderr] 333 | | true => img = Some(IMG_GRASS_FLOOR_TEXTURE.to_string()), [INFO] [stderr] 334 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_GRASS_FLOOR_TEXTURE.to_string()) } else { img = Some(IMG_GRASS_FLOOR.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `arr`. [INFO] [stderr] --> src/map.rs:358:14 [INFO] [stderr] | [INFO] [stderr] 358 | for i in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [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] 358 | for in arr.iter_mut().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/map.rs:375:25 [INFO] [stderr] | [INFO] [stderr] 375 | fn add_base_weight(arr: &Vec>, base: f64) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `arr`. [INFO] [stderr] --> src/map.rs:401:14 [INFO] [stderr] | [INFO] [stderr] 401 | for i in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [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] 401 | for in arr.iter_mut().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:420:33 [INFO] [stderr] | [INFO] [stderr] 420 | fn populate_grass_dirt_map() -> HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:421:22 [INFO] [stderr] | [INFO] [stderr] 421 | let mut g_d_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:557:28 [INFO] [stderr] | [INFO] [stderr] 557 | fn populate_stone_map() -> HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:558:20 [INFO] [stderr] | [INFO] [stderr] 558 | let mut s_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/item.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self.item_type { [INFO] [stderr] 100 | | ItemType::Food(FoodType::Bisket) => { [INFO] [stderr] 101 | | let img = IMG_ITEM_BISKET; [INFO] [stderr] 102 | | image( [INFO] [stderr] ... | [INFO] [stderr] 112 | | _ => {} [INFO] [stderr] 113 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 99 | if let ItemType::Food(FoodType::Bisket) = self.item_type { [INFO] [stderr] 100 | let img = IMG_ITEM_BISKET; [INFO] [stderr] 101 | image( [INFO] [stderr] 102 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] 103 | context [INFO] [stderr] 104 | .transform [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/item.rs:103:39 [INFO] [stderr] | [INFO] [stderr] 103 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] error: aborting due to 16 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `aether_of_enclaves`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:110:27 [INFO] [stderr] | [INFO] [stderr] 110 | let w_width = window_size.width as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(window_size.width)` [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 u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:111:28 [INFO] [stderr] | [INFO] [stderr] 111 | let w_height = window_size.height as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(window_size.height)` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:126:30 [INFO] [stderr] | [INFO] [stderr] 126 | .expect(&format!("Not found: {:?}", sky_img_string)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", sky_img_string))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:181:34 [INFO] [stderr] | [INFO] [stderr] 181 | .expect(&format!("Not found: {:?}", IMG_HEART)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", IMG_HEART))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:184:47 [INFO] [stderr] | [INFO] [stderr] 184 | .trans(25.0 + i as f64 * (IMAGE_SIZE_SCALED + 2.0), 25.0) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(i)` [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/game.rs:205:21 [INFO] [stderr] | [INFO] [stderr] 205 | / let mut scale; [INFO] [stderr] 206 | | if w_height < w_width { [INFO] [stderr] 207 | | scale = w_height / title_txt.get_width() as f64; [INFO] [stderr] 208 | | } else { [INFO] [stderr] 209 | | scale = w_width / title_txt.get_width() as f64; [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let scale = if w_height < w_width { w_height / title_txt.get_width() as f64 } else { w_width / title_txt.get_width() as f64 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:198:26 [INFO] [stderr] | [INFO] [stderr] 198 | .expect(&format!("Not found: {:?}", img)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:204:26 [INFO] [stderr] | [INFO] [stderr] 204 | .expect(&format!("Not found: {:?}", img)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:207:44 [INFO] [stderr] | [INFO] [stderr] 207 | scale = w_height / title_txt.get_width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_txt.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:209:43 [INFO] [stderr] | [INFO] [stderr] 209 | scale = w_width / title_txt.get_width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_txt.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:211:44 [INFO] [stderr] | [INFO] [stderr] 211 | let new_size = scale * title_txt.get_width() as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_txt.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:216:39 [INFO] [stderr] | [INFO] [stderr] 216 | w_width / title_img.get_width() as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_img.get_width())` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:217:40 [INFO] [stderr] | [INFO] [stderr] 217 | w_height / title_img.get_height() as f64, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(title_img.get_height())` [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: the loop variable `i` is used to index `draw_text` [INFO] [stderr] --> src/game.rs:247:30 [INFO] [stderr] | [INFO] [stderr] 247 | for i in 0..draw_text.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] 247 | for (i, ) in draw_text.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:257:27 [INFO] [stderr] | [INFO] [stderr] 257 | ).expect(&format!("Error drawing {}", draw_text[i])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Error drawing {}", draw_text[i]))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:255:72 [INFO] [stderr] | [INFO] [stderr] 255 | .trans(100.0, transform_y + i as f64 * font as f64), [INFO] [stderr] | ^^^^^^^^^^^ help: try: `f64::from(font)` [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: casting u32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/game.rs:264:29 [INFO] [stderr] | [INFO] [stderr] 264 | let x = (font * (draw_text.len() as u32)) as f64 / 2.0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(font * (draw_text.len() as u32))` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:274:23 [INFO] [stderr] | [INFO] [stderr] 274 | ).expect(&format!("Error drawing {}", draw_text)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Error drawing {}", draw_text))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:293:13 [INFO] [stderr] | [INFO] [stderr] 293 | / self.item_prototypes [INFO] [stderr] 294 | | .get("bisket") [INFO] [stderr] 295 | | .unwrap() [INFO] [stderr] | |_________________________^ help: try this: `&self.item_prototypes["bisket"]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/game.rs:333:17 [INFO] [stderr] | [INFO] [stderr] 333 | / self.item_prototypes [INFO] [stderr] 334 | | .get("bisket") [INFO] [stderr] 335 | | .unwrap() [INFO] [stderr] | |_____________________________^ help: try this: `&self.item_prototypes["bisket"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:472:39 [INFO] [stderr] | [INFO] [stderr] 472 | fn handle_input(&mut self, state: &ButtonState, button: &Button) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/game.rs:474:9 [INFO] [stderr] | [INFO] [stderr] 474 | / match *button { [INFO] [stderr] 475 | | Button::Keyboard(key) => match key { [INFO] [stderr] 476 | | // Menu toggle. [INFO] [stderr] 477 | | Return | Tab => self.execute_open_menu(state), [INFO] [stderr] ... | [INFO] [stderr] 491 | | _ => {} [INFO] [stderr] 492 | | } [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] 474 | if let Button::Keyboard(key) = *button { match key { [INFO] [stderr] 475 | // Menu toggle. [INFO] [stderr] 476 | Return | Tab => self.execute_open_menu(state), [INFO] [stderr] 477 | // Moving. [INFO] [stderr] 478 | W | A | S | D => self.execute_move(state, &Some(key)), [INFO] [stderr] 479 | E => self.execute_action(state), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/game.rs:513:47 [INFO] [stderr] | [INFO] [stderr] 513 | fn execute_player_hands(&mut self, state: &ButtonState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/game.rs:550:44 [INFO] [stderr] | [INFO] [stderr] 550 | fn execute_open_menu(&mut self, state: &ButtonState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/game.rs:574:39 [INFO] [stderr] | [INFO] [stderr] 574 | fn execute_move(&mut self, state: &ButtonState, key: &Option) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/game.rs:574:58 [INFO] [stderr] | [INFO] [stderr] 574 | fn execute_move(&mut self, state: &ButtonState, key: &Option) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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/game.rs:594:41 [INFO] [stderr] | [INFO] [stderr] 594 | fn execute_action(&mut self, state: &ButtonState) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/game.rs:702:9 [INFO] [stderr] | [INFO] [stderr] 702 | let ref font = assets.join("m5x7.ttf"); [INFO] [stderr] | ----^^^^^^^^--------------------------- help: try: `let font = &assets.join("m5x7.ttf");` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: this .into_iter() call is equivalent to .iter() and will not move the slice [INFO] [stderr] --> src/game.rs:786:35 [INFO] [stderr] | [INFO] [stderr] 786 | for image_name in image_names.into_iter() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/game.rs:793:11 [INFO] [stderr] | [INFO] [stderr] 793 | ).expect(&format!("Not found: {:?}", filename)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("Not found: {:?}", filename))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/creature.rs:156:9 [INFO] [stderr] | [INFO] [stderr] 156 | / let extension; [INFO] [stderr] 157 | | if self.self_vel_y != 0.0 || self.self_vel_x != 0.0 { [INFO] [stderr] 158 | | extension = "player_moving_"; [INFO] [stderr] 159 | | } else { [INFO] [stderr] 160 | | extension = "player_idle_"; [INFO] [stderr] 161 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let extension = if self.self_vel_y != 0.0 || self.self_vel_x != 0.0 { "player_moving_" } else { "player_idle_" };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/creature.rs:172:31 [INFO] [stderr] | [INFO] [stderr] 172 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/creature.rs:188:16 [INFO] [stderr] | [INFO] [stderr] 188 | if let Some(_) = self.inventory { [INFO] [stderr] | _________- ^^^^^^^ [INFO] [stderr] 189 | | let item = self.inventory.clone().unwrap(); [INFO] [stderr] 190 | | match item.item_type { [INFO] [stderr] 191 | | ItemType::Food(FoodType::Bisket) => { [INFO] [stderr] ... | [INFO] [stderr] 203 | | } [INFO] [stderr] 204 | | } [INFO] [stderr] | |_________- help: try this: `if self.inventory.is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [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/creature.rs:190:13 [INFO] [stderr] | [INFO] [stderr] 190 | / match item.item_type { [INFO] [stderr] 191 | | ItemType::Food(FoodType::Bisket) => { [INFO] [stderr] 192 | | let img = IMG_ITEM_BISKET; [INFO] [stderr] 193 | | image( [INFO] [stderr] ... | [INFO] [stderr] 202 | | _ => {} [INFO] [stderr] 203 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 190 | if let ItemType::Food(FoodType::Bisket) = item.item_type { [INFO] [stderr] 191 | let img = IMG_ITEM_BISKET; [INFO] [stderr] 192 | image( [INFO] [stderr] 193 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] 194 | context [INFO] [stderr] 195 | .transform [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/creature.rs:194:43 [INFO] [stderr] | [INFO] [stderr] 194 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/creature.rs:243:16 [INFO] [stderr] | [INFO] [stderr] 243 | if let None = self.inventory { [INFO] [stderr] | _________- ^^^^ [INFO] [stderr] 244 | | self.inventory = Some(item); [INFO] [stderr] 245 | | return true; [INFO] [stderr] 246 | | } [INFO] [stderr] | |_________- help: try this: `if self.inventory.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [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/creature.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | / match item.item_type { [INFO] [stderr] 257 | | ItemType::Food(_) => { [INFO] [stderr] 258 | | // Heal Creature. [INFO] [stderr] 259 | | self.health += 1; [INFO] [stderr] ... | [INFO] [stderr] 262 | | _ => {} [INFO] [stderr] 263 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [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] 256 | if let ItemType::Food(_) = item.item_type { [INFO] [stderr] 257 | // Heal Creature. [INFO] [stderr] 258 | self.health += 1; [INFO] [stderr] 259 | item_used = true; [INFO] [stderr] 260 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `ship_tiles` [INFO] [stderr] --> src/ship.rs:51:18 [INFO] [stderr] | [INFO] [stderr] 51 | for i in 0..ship_tiles.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 51 | for (i, ) in ship_tiles.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `temp_tiles` [INFO] [stderr] --> src/ship.rs:52:22 [INFO] [stderr] | [INFO] [stderr] 52 | for j in 0..ship_tiles[i].len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [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] 52 | for (j, ) in temp_tiles.iter_mut().enumerate().take(ship_tiles[i].len()) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:121:47 [INFO] [stderr] | [INFO] [stderr] 121 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:136:47 [INFO] [stderr] | [INFO] [stderr] 136 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:149:47 [INFO] [stderr] | [INFO] [stderr] 149 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:164:47 [INFO] [stderr] | [INFO] [stderr] 164 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/ship.rs:177:47 [INFO] [stderr] | [INFO] [stderr] 177 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/misc.rs:6:39 [INFO] [stderr] | [INFO] [stderr] 6 | fn handle_input(&mut self, state: &ButtonState, key: &Option); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `ButtonState` [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/misc.rs:6:58 [INFO] [stderr] | [INFO] [stderr] 6 | fn handle_input(&mut self, state: &ButtonState, key: &Option); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider passing by value instead: `Option` [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/misc.rs:26:32 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn direction_to_string(&self) -> String { [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: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:27:21 [INFO] [stderr] | [INFO] [stderr] 27 | grass_dirt_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:28:16 [INFO] [stderr] | [INFO] [stderr] 28 | stone_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (10/7) [INFO] [stderr] --> src/map.rs:102:5 [INFO] [stderr] | [INFO] [stderr] 102 | / pub fn draw( [INFO] [stderr] 103 | | &mut self, [INFO] [stderr] 104 | | textures: &HashMap, [INFO] [stderr] 105 | | context: &Context, [INFO] [stderr] ... | [INFO] [stderr] 187 | | } [INFO] [stderr] 188 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:139:38 [INFO] [stderr] | [INFO] [stderr] 139 | .expect(&format!("Not found: {:?}", grass_img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", grass_img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:159:38 [INFO] [stderr] | [INFO] [stderr] 159 | .expect(&format!("Not found: {:?}", p_img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", p_img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:175:44 [INFO] [stderr] | [INFO] [stderr] 175 | textures.get(&img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:209:17 [INFO] [stderr] | [INFO] [stderr] 209 | / match self.tiles[x][y].texture { [INFO] [stderr] 210 | | false => img = Some(IMG_WATER.to_string()), [INFO] [stderr] 211 | | true => img = Some(IMG_WATER_TEXTURE.to_string()), [INFO] [stderr] 212 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_WATER_TEXTURE.to_string()) } else { img = Some(IMG_WATER.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/map.rs:247:21 [INFO] [stderr] | [INFO] [stderr] 247 | / if let &Some(ref _i) = i { [INFO] [stderr] 248 | | let temp = self.stone_map [INFO] [stderr] 249 | | .get(&key) [INFO] [stderr] 250 | | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] ... | [INFO] [stderr] 257 | | } [INFO] [stderr] 258 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 247 | if let Some(ref _i) = *i { [INFO] [stderr] | ^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:250:30 [INFO] [stderr] | [INFO] [stderr] 250 | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Couldn't get {:?}", key))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:254:25 [INFO] [stderr] | [INFO] [stderr] 254 | / match self.tiles[x][y].texture { [INFO] [stderr] 255 | | false => img = Some(IMG_STONE_WALL.to_string()), [INFO] [stderr] 256 | | true => img = Some(IMG_STONE_WALL_TEXTURE.to_string()), [INFO] [stderr] 257 | | } [INFO] [stderr] | |_________________________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_STONE_WALL_TEXTURE.to_string()) } else { img = Some(IMG_STONE_WALL.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:269:36 [INFO] [stderr] | [INFO] [stderr] 269 | TileType::DirtFloor => match self.tiles[x][y].texture { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 270 | | false => img = Some(IMG_DIRT_FLOOR.to_string()), [INFO] [stderr] 271 | | true => img = Some(IMG_DIRT_FLOOR_TEXTURE.to_string()), [INFO] [stderr] 272 | | }, [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_DIRT_FLOOR_TEXTURE.to_string()) } else { img = Some(IMG_DIRT_FLOOR.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/map.rs:324:13 [INFO] [stderr] | [INFO] [stderr] 324 | / if let &Some(ref _i) = i { [INFO] [stderr] 325 | | let grass_tile = self.grass_dirt_map [INFO] [stderr] 326 | | .get(&key) [INFO] [stderr] 327 | | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] ... | [INFO] [stderr] 334 | | } [INFO] [stderr] 335 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 324 | if let Some(ref _i) = *i { [INFO] [stderr] | ^^^^^^^^^^^^ ^^ [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/map.rs:327:22 [INFO] [stderr] | [INFO] [stderr] 327 | .expect(&format!("Couldn't get {:?}", key)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Couldn't get {:?}", key))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/map.rs:331:17 [INFO] [stderr] | [INFO] [stderr] 331 | / match self.tiles[x][y].texture { [INFO] [stderr] 332 | | false => img = Some(IMG_GRASS_FLOOR.to_string()), [INFO] [stderr] 333 | | true => img = Some(IMG_GRASS_FLOOR_TEXTURE.to_string()), [INFO] [stderr] 334 | | } [INFO] [stderr] | |_________________^ help: consider using an if/else expression: `if self.tiles[x][y].texture { img = Some(IMG_GRASS_FLOOR_TEXTURE.to_string()) } else { img = Some(IMG_GRASS_FLOOR.to_string()) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `arr`. [INFO] [stderr] --> src/map.rs:358:14 [INFO] [stderr] | [INFO] [stderr] 358 | for i in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [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] 358 | for in arr.iter_mut().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/map.rs:375:25 [INFO] [stderr] | [INFO] [stderr] 375 | fn add_base_weight(arr: &Vec>, base: f64) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Vec]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `arr`. [INFO] [stderr] --> src/map.rs:401:14 [INFO] [stderr] | [INFO] [stderr] 401 | for i in 0..width { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [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] 401 | for in arr.iter_mut().take(width) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:420:33 [INFO] [stderr] | [INFO] [stderr] 420 | fn populate_grass_dirt_map() -> HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:421:22 [INFO] [stderr] | [INFO] [stderr] 421 | let mut g_d_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:557:28 [INFO] [stderr] | [INFO] [stderr] 557 | fn populate_stone_map() -> HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/map.rs:558:20 [INFO] [stderr] | [INFO] [stderr] 558 | let mut s_map: HashMap<(bool, bool, bool, bool), (Option, f64, f64, f64)> = [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [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/item.rs:99:9 [INFO] [stderr] | [INFO] [stderr] 99 | / match self.item_type { [INFO] [stderr] 100 | | ItemType::Food(FoodType::Bisket) => { [INFO] [stderr] 101 | | let img = IMG_ITEM_BISKET; [INFO] [stderr] 102 | | image( [INFO] [stderr] ... | [INFO] [stderr] 112 | | _ => {} [INFO] [stderr] 113 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 99 | if let ItemType::Food(FoodType::Bisket) = self.item_type { [INFO] [stderr] 100 | let img = IMG_ITEM_BISKET; [INFO] [stderr] 101 | image( [INFO] [stderr] 102 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] 103 | context [INFO] [stderr] 104 | .transform [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/item.rs:103:39 [INFO] [stderr] | [INFO] [stderr] 103 | textures.get(img).expect(&format!("Not found: {:?}", img)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Not found: {:?}", img))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "67ddf79f7a21a7a82a8d6828b414305366e7c811003ae6fc73ea37cd7cbd322c"` [INFO] running `"docker" "rm" "-f" "67ddf79f7a21a7a82a8d6828b414305366e7c811003ae6fc73ea37cd7cbd322c"` [INFO] [stdout] 67ddf79f7a21a7a82a8d6828b414305366e7c811003ae6fc73ea37cd7cbd322c