[INFO] updating cached repository Givup/glrust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Givup/glrust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Givup/glrust" "work/ex/clippy-test-run/sources/stable/gh/Givup/glrust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Givup/glrust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Givup/glrust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Givup/glrust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Givup/glrust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 1df97b3a5f2b74128b8eac609f627eb1fda1ae08 [INFO] sha for GitHub repo Givup/glrust: 1df97b3a5f2b74128b8eac609f627eb1fda1ae08 [INFO] validating manifest of Givup/glrust 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 Givup/glrust 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 Givup/glrust [INFO] finished frobbing Givup/glrust [INFO] frobbed toml for Givup/glrust written to work/ex/clippy-test-run/sources/stable/gh/Givup/glrust/Cargo.toml [INFO] started frobbing Givup/glrust [INFO] finished frobbing Givup/glrust [INFO] frobbed toml for Givup/glrust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Givup/glrust/Cargo.toml [INFO] crate Givup/glrust 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 Givup/glrust against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Givup/glrust:/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] 5784d6797a656fa9753e4cb71cd06735d2db6142056f4f2cf487772916419468 [INFO] running `"docker" "start" "-a" "5784d6797a656fa9753e4cb71cd06735d2db6142056f4f2cf487772916419468"` [INFO] [stderr] Compiling x11-dl v2.18.1 [INFO] [stderr] Checking petgraph v0.4.12 [INFO] [stderr] Compiling stb_image v0.2.2 [INFO] [stderr] Checking parking_lot v0.6.2 [INFO] [stderr] Checking rusttype v0.5.2 [INFO] [stderr] Checking smithay-client-toolkit v0.2.6 [INFO] [stderr] Checking daggy v0.5.0 [INFO] [stderr] Checking conrod v0.61.1 [INFO] [stderr] Checking winit v0.16.2 [INFO] [stderr] Checking glutin v0.17.0 [INFO] [stderr] Checking opengl_trip v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/renderer.rs:54:3 [INFO] [stderr] | [INFO] [stderr] 54 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/rendering/atlas.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/rendering/atlas.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/atlas.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | return image; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `image` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/atlas.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | return animation; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/shader.rs:111:4 [INFO] [stderr] | [INFO] [stderr] 111 | return location; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `location` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/entities/item.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/map.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | return &mut self.undef_dir; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.undef_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/map.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | return &mut self.dir_map[(x + y * self.width) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.dir_map[(x + y * self.width) as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `Rc` [INFO] [stderr] --> src/scene.rs:10:15 [INFO] [stderr] | [INFO] [stderr] 10 | use std::rc::{Rc, Weak}; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/main.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:149:40 [INFO] [stderr] | [INFO] [stderr] 149 | glutin::WindowEvent::MouseWheel { device_id: _, delta, phase: _, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:149:61 [INFO] [stderr] | [INFO] [stderr] 149 | glutin::WindowEvent::MouseWheel { device_id: _, delta, phase: _, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:149:71 [INFO] [stderr] | [INFO] [stderr] 149 | glutin::WindowEvent::MouseWheel { device_id: _, delta, phase: _, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `MouseWheel { delta, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:160:38 [INFO] [stderr] | [INFO] [stderr] 160 | glutin::WindowEvent::MouseInput{device_id: _, state, button, modifiers: _} => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:160:67 [INFO] [stderr] | [INFO] [stderr] 160 | glutin::WindowEvent::MouseInput{device_id: _, state, button, modifiers: _} => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `MouseInput { state, button, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:182:40 [INFO] [stderr] | [INFO] [stderr] 182 | glutin::WindowEvent::CursorMoved{ device_id: _, position, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:182:64 [INFO] [stderr] | [INFO] [stderr] 182 | glutin::WindowEvent::CursorMoved{ device_id: _, position, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `CursorMoved { position, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:186:43 [INFO] [stderr] | [INFO] [stderr] 186 | glutin::WindowEvent::KeyboardInput { device_id: _, input: keyboard_input } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `KeyboardInput { input: keyboard_input, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:353:13 [INFO] [stderr] | [INFO] [stderr] 353 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 354 | | [INFO] [stderr] 355 | | if !same_move(get_directional_move(scene.map.get_dir(drag_pos.0, drag_pos.1)), towards) [INFO] [stderr] 356 | | { [INFO] [stderr] ... | [INFO] [stderr] 376 | | } [INFO] [stderr] 377 | | } [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] 353 | } else if !same_move(get_directional_move(scene.map.get_dir(drag_pos.0, drag_pos.1)), towards) [INFO] [stderr] 354 | { [INFO] [stderr] 355 | let dir_before = match scene.map.get_dir(drag_pos.0, drag_pos.1) { [INFO] [stderr] 356 | Direction::Horizontal(x) => { [INFO] [stderr] 357 | (*x, 0.0) [INFO] [stderr] 358 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/renderer.rs:54:3 [INFO] [stderr] | [INFO] [stderr] 54 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/rendering/atlas.rs:74:17 [INFO] [stderr] | [INFO] [stderr] 74 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded unit expression [INFO] [stderr] --> src/rendering/atlas.rs:80:17 [INFO] [stderr] | [INFO] [stderr] 80 | () [INFO] [stderr] | ^^ help: remove the final `()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/atlas.rs:87:9 [INFO] [stderr] | [INFO] [stderr] 87 | return image; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `image` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/atlas.rs:92:9 [INFO] [stderr] | [INFO] [stderr] 92 | return animation; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `animation` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/rendering/shader.rs:111:4 [INFO] [stderr] | [INFO] [stderr] 111 | return location; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `location` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fmt` [INFO] [stderr] --> src/entities/item.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use std::fmt; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/map.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | return &mut self.undef_dir; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.undef_dir` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/map.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | return &mut self.dir_map[(x + y * self.width) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&mut self.dir_map[(x + y * self.width) as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `Rc` [INFO] [stderr] --> src/scene.rs:10:15 [INFO] [stderr] | [INFO] [stderr] 10 | use std::rc::{Rc, Weak}; [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::cell::RefCell` [INFO] [stderr] --> src/main.rs:46:5 [INFO] [stderr] | [INFO] [stderr] 46 | use std::cell::RefCell; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:149:40 [INFO] [stderr] | [INFO] [stderr] 149 | glutin::WindowEvent::MouseWheel { device_id: _, delta, phase: _, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:149:61 [INFO] [stderr] | [INFO] [stderr] 149 | glutin::WindowEvent::MouseWheel { device_id: _, delta, phase: _, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:149:71 [INFO] [stderr] | [INFO] [stderr] 149 | glutin::WindowEvent::MouseWheel { device_id: _, delta, phase: _, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `MouseWheel { delta, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:160:38 [INFO] [stderr] | [INFO] [stderr] 160 | glutin::WindowEvent::MouseInput{device_id: _, state, button, modifiers: _} => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:160:67 [INFO] [stderr] | [INFO] [stderr] 160 | glutin::WindowEvent::MouseInput{device_id: _, state, button, modifiers: _} => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `MouseInput { state, button, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:182:40 [INFO] [stderr] | [INFO] [stderr] 182 | glutin::WindowEvent::CursorMoved{ device_id: _, position, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:182:64 [INFO] [stderr] | [INFO] [stderr] 182 | glutin::WindowEvent::CursorMoved{ device_id: _, position, modifiers: _ } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `CursorMoved { position, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/main.rs:186:43 [INFO] [stderr] | [INFO] [stderr] 186 | glutin::WindowEvent::KeyboardInput { device_id: _, input: keyboard_input } => { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `KeyboardInput { input: keyboard_input, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/main.rs:353:13 [INFO] [stderr] | [INFO] [stderr] 353 | } else { [INFO] [stderr] | ____________________________^ [INFO] [stderr] 354 | | [INFO] [stderr] 355 | | if !same_move(get_directional_move(scene.map.get_dir(drag_pos.0, drag_pos.1)), towards) [INFO] [stderr] 356 | | { [INFO] [stderr] ... | [INFO] [stderr] 376 | | } [INFO] [stderr] 377 | | } [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] 353 | } else if !same_move(get_directional_move(scene.map.get_dir(drag_pos.0, drag_pos.1)), towards) [INFO] [stderr] 354 | { [INFO] [stderr] 355 | let dir_before = match scene.map.get_dir(drag_pos.0, drag_pos.1) { [INFO] [stderr] 356 | Direction::Horizontal(x) => { [INFO] [stderr] 357 | (*x, 0.0) [INFO] [stderr] 358 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused import: `entities::entity` [INFO] [stderr] --> src/main.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | use entities::entity::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `map` [INFO] [stderr] --> src/entities/gameobject.rs:64:26 [INFO] [stderr] | [INFO] [stderr] 64 | fn update(&mut self, map: &mut Map) { [INFO] [stderr] | ^^^ help: consider using `_map` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stack` [INFO] [stderr] --> src/entities/gameobject.rs:92:26 [INFO] [stderr] | [INFO] [stderr] 92 | fn pickup(&mut self, stack: &ItemStack) -> bool { [INFO] [stderr] | ^^^^^ help: consider using `_stack` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `map` [INFO] [stderr] --> src/entities/gameobject.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | fn update(&mut self, map: &mut Map) { [INFO] [stderr] | ^^^ help: consider using `_map` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stack` [INFO] [stderr] --> src/entities/item.rs:178:26 [INFO] [stderr] | [INFO] [stderr] 178 | fn pickup(&mut self, stack: &ItemStack) -> bool { [INFO] [stderr] | ^^^^^ help: consider using `_stack` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:103:6 [INFO] [stderr] | [INFO] [stderr] 103 | let mut scene = Scene::new(&mut map); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:250:8 [INFO] [stderr] | [INFO] [stderr] 250 | let mut scene = Rc::get_mut(&mut scene_rc).unwrap(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:336:10 [INFO] [stderr] | [INFO] [stderr] 336 | let mut scene = Rc::get_mut(&mut scene_rc).unwrap(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: unused import: `entities::entity` [INFO] [stderr] --> src/main.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | use entities::entity::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unbind` [INFO] [stderr] --> src/rendering/vertex_array.rs:54:2 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn unbind(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unbind` [INFO] [stderr] --> src/rendering/vertex_buffer.rs:36:2 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn unbind(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unbind` [INFO] [stderr] --> src/rendering/index_buffer.rs:38:2 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn unbind(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Unknown` [INFO] [stderr] --> src/entities/item.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | Unknown, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `OreGold` [INFO] [stderr] --> src/entities/item.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | OreGold, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `undef_pickup` [INFO] [stderr] --> src/map.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | undef_pickup: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_width` [INFO] [stderr] --> src/map.rs:133:5 [INFO] [stderr] | [INFO] [stderr] 133 | pub fn get_width(&self) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_height` [INFO] [stderr] --> src/map.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | pub fn get_height(&self) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: unused variable: `map` [INFO] [stderr] --> src/entities/gameobject.rs:64:26 [INFO] [stderr] | [INFO] [stderr] 64 | fn update(&mut self, map: &mut Map) { [INFO] [stderr] | ^^^ help: consider using `_map` instead [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_entity` [INFO] [stderr] --> src/scene.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_entity(&self, id: usize) -> Option<&Entity<'a>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stack` [INFO] [stderr] --> src/entities/gameobject.rs:92:26 [INFO] [stderr] | [INFO] [stderr] 92 | fn pickup(&mut self, stack: &ItemStack) -> bool { [INFO] [stderr] | ^^^^^ help: consider using `_stack` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `len_sq` [INFO] [stderr] --> src/main.rs:442:1 [INFO] [stderr] | [INFO] [stderr] 442 | fn len_sq(v: (f32, f32)) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `map` [INFO] [stderr] --> src/entities/gameobject.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | fn update(&mut self, map: &mut Map) { [INFO] [stderr] | ^^^ help: consider using `_map` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `stack` [INFO] [stderr] --> src/entities/item.rs:178:26 [INFO] [stderr] | [INFO] [stderr] 178 | fn pickup(&mut self, stack: &ItemStack) -> bool { [INFO] [stderr] | ^^^^^ help: consider using `_stack` instead [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/rendering/renderer.rs:48:3 [INFO] [stderr] | [INFO] [stderr] 48 | loop { [INFO] [stderr] | _________^ [INFO] [stderr] 49 | | let error_code = gl::GetError(); [INFO] [stderr] 50 | | if error_code == gl::NO_ERROR { break; } [INFO] [stderr] 51 | | println!("[OpenGL error] {{0x{:X}}}", error_code); [INFO] [stderr] 52 | | return false; [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: `0 as *const _` detected. Consider using `ptr::null()` [INFO] [stderr] --> src/rendering/renderer.rs:84:89 [INFO] [stderr] | [INFO] [stderr] 84 | gl_call!(gl::DrawElements(gl::TRIANGLES, index_buffer.get_count(), gl::UNSIGNED_INT, 0 as *const c_void)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/rendering/atlas.rs:57:22 [INFO] [stderr] | [INFO] [stderr] 57 | pub fn from_file(mut self, path: &str) -> Atlas { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:103:44 [INFO] [stderr] | [INFO] [stderr] 103 | let dir = path.split_at(path.rfind("/").unwrap()).0; [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:105:68 [INFO] [stderr] | [INFO] [stderr] 105 | let contents = contents.lines().filter(|x| !(x.starts_with("#") || x.len() == 0)).collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rendering/atlas.rs:105:76 [INFO] [stderr] | [INFO] [stderr] 105 | let contents = contents.lines().filter(|x| !(x.starts_with("#") || x.len() == 0)).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `x.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:110:44 [INFO] [stderr] | [INFO] [stderr] 110 | let atlas_data = contents[0].split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `contents`. [INFO] [stderr] --> src/rendering/atlas.rs:123:18 [INFO] [stderr] | [INFO] [stderr] 123 | for i in 1 .. contents.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] 123 | for in contents.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:124:42 [INFO] [stderr] | [INFO] [stderr] 124 | let data = contents[i].split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rendering/shader.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | return location.unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*location.unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:103:6 [INFO] [stderr] | [INFO] [stderr] 103 | let mut scene = Scene::new(&mut map); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:250:8 [INFO] [stderr] | [INFO] [stderr] 250 | let mut scene = Rc::get_mut(&mut scene_rc).unwrap(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/main.rs:336:10 [INFO] [stderr] | [INFO] [stderr] 336 | let mut scene = Rc::get_mut(&mut scene_rc).unwrap(); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/rendering/shader.rs:179:24 [INFO] [stderr] | [INFO] [stderr] 179 | if compile_status == gl::FALSE as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::FALSE)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/rendering/vertex_buffer.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn from_vec(data: &Vec) -> VertexBuffer { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/rendering/index_buffer.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn from_vec(data: &Vec) -> IndexBuffer { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/rendering/sprite.rs:26:33 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn new_animated(images: &'a Vec, material: Material) -> Sprite { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[AtlasImage]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/input_state.rs:49:35 [INFO] [stderr] | [INFO] [stderr] 49 | self.keys_last.insert((*k).clone(), *v); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `(*k)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/input_state.rs:58:32 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn get_key(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/input_state.rs:66:40 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn get_key_pressed(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [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/input_state.rs:70:41 [INFO] [stderr] | [INFO] [stderr] 70 | pub fn get_key_released(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [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/input_state.rs:118:33 [INFO] [stderr] | [INFO] [stderr] 118 | fn get_key_last(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:90:16 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x - self.last_pos.0).abs() < error` [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/entities/item.rs:90:16 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:90:40 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(y - self.last_pos.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/entities/item.rs:90:40 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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/entities/item.rs:97:21 [INFO] [stderr] | [INFO] [stderr] 97 | / match direction { [INFO] [stderr] 98 | | Direction::Bidirectional(_, _, ref mut switch) => { [INFO] [stderr] 99 | | if *switch == 0 { [INFO] [stderr] 100 | | *switch = 1; [INFO] [stderr] ... | [INFO] [stderr] 105 | | _ => (), [INFO] [stderr] 106 | | }; [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] 97 | if let Direction::Bidirectional(_, _, ref mut switch) = direction { [INFO] [stderr] 98 | if *switch == 0 { [INFO] [stderr] 99 | *switch = 1; [INFO] [stderr] 100 | } else { [INFO] [stderr] 101 | *switch = 0; [INFO] [stderr] 102 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(mv1.0 - mv2.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/entities/item.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:277:23 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(mv1.1 - mv2.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/entities/item.rs:277:23 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/map.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | if let None = other { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 19 | | true [INFO] [stderr] 20 | | } else { [INFO] [stderr] 21 | | false [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________________- help: try this: `if other.is_none()` [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/map.rs:126:16 [INFO] [stderr] | [INFO] [stderr] 126 | } else if self.pickup_map[(x + y * self.width) as usize].is_none() && self.dir_map[(x + y * self.width) as usize] == Direction::None { [INFO] [stderr] | ________________^ [INFO] [stderr] 127 | | true [INFO] [stderr] 128 | | } else { [INFO] [stderr] 129 | | false [INFO] [stderr] 130 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.pickup_map[(x + y * self.width) as usize].is_none() && self.dir_map[(x + y * self.width) as usize] == Direction::None` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/main.rs:54:1 [INFO] [stderr] | [INFO] [stderr] 54 | / fn main() { [INFO] [stderr] 55 | | let mut events_loop = glutin::EventsLoop::new(); [INFO] [stderr] 56 | | let window = glutin::WindowBuilder::new() [INFO] [stderr] 57 | | .with_title("AutoMatias") [INFO] [stderr] ... | [INFO] [stderr] 416 | | } [INFO] [stderr] 417 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_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/main.rs:134:4 [INFO] [stderr] | [INFO] [stderr] 134 | match event { [INFO] [stderr] | _____________^ [INFO] [stderr] 135 | | glutin::Event::WindowEvent{ event, .. } => match event { [INFO] [stderr] 136 | | glutin::WindowEvent::CloseRequested => running = false, [INFO] [stderr] 137 | | glutin::WindowEvent::Resized(logical_size) => { [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] 134 | if let glutin::Event::WindowEvent{ event, .. } = event { match event { [INFO] [stderr] 135 | glutin::WindowEvent::CloseRequested => running = false, [INFO] [stderr] 136 | glutin::WindowEvent::Resized(logical_size) => { [INFO] [stderr] 137 | let dpi_factor = gl_window.get_hidpi_factor(); [INFO] [stderr] 138 | gl_window.resize(logical_size.to_physical(dpi_factor)); [INFO] [stderr] 139 | unsafe { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `opengl_trip`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: method is never used: `unbind` [INFO] [stderr] --> src/rendering/vertex_array.rs:54:2 [INFO] [stderr] | [INFO] [stderr] 54 | pub fn unbind(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unbind` [INFO] [stderr] --> src/rendering/vertex_buffer.rs:36:2 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn unbind(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `unbind` [INFO] [stderr] --> src/rendering/index_buffer.rs:38:2 [INFO] [stderr] | [INFO] [stderr] 38 | pub fn unbind(&self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `Unknown` [INFO] [stderr] --> src/entities/item.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | Unknown, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `OreGold` [INFO] [stderr] --> src/entities/item.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | OreGold, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `undef_pickup` [INFO] [stderr] --> src/map.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | undef_pickup: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_width` [INFO] [stderr] --> src/map.rs:133:5 [INFO] [stderr] | [INFO] [stderr] 133 | pub fn get_width(&self) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_height` [INFO] [stderr] --> src/map.rs:137:5 [INFO] [stderr] | [INFO] [stderr] 137 | pub fn get_height(&self) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_entity` [INFO] [stderr] --> src/scene.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn get_entity(&self, id: usize) -> Option<&Entity<'a>> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `len_sq` [INFO] [stderr] --> src/main.rs:442:1 [INFO] [stderr] | [INFO] [stderr] 442 | fn len_sq(v: (f32, f32)) -> f32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/rendering/renderer.rs:48:3 [INFO] [stderr] | [INFO] [stderr] 48 | loop { [INFO] [stderr] | _________^ [INFO] [stderr] 49 | | let error_code = gl::GetError(); [INFO] [stderr] 50 | | if error_code == gl::NO_ERROR { break; } [INFO] [stderr] 51 | | println!("[OpenGL error] {{0x{:X}}}", error_code); [INFO] [stderr] 52 | | return false; [INFO] [stderr] 53 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: `0 as *const _` detected. Consider using `ptr::null()` [INFO] [stderr] --> src/rendering/renderer.rs:84:89 [INFO] [stderr] | [INFO] [stderr] 84 | gl_call!(gl::DrawElements(gl::TRIANGLES, index_buffer.get_count(), gl::UNSIGNED_INT, 0 as *const c_void)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_ptr [INFO] [stderr] [INFO] [stderr] warning: methods called `from_*` usually take no self; consider choosing a less ambiguous name [INFO] [stderr] --> src/rendering/atlas.rs:57:22 [INFO] [stderr] | [INFO] [stderr] 57 | pub fn from_file(mut self, path: &str) -> Atlas { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:103:44 [INFO] [stderr] | [INFO] [stderr] 103 | let dir = path.split_at(path.rfind("/").unwrap()).0; [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:105:68 [INFO] [stderr] | [INFO] [stderr] 105 | let contents = contents.lines().filter(|x| !(x.starts_with("#") || x.len() == 0)).collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rendering/atlas.rs:105:76 [INFO] [stderr] | [INFO] [stderr] 105 | let contents = contents.lines().filter(|x| !(x.starts_with("#") || x.len() == 0)).collect::>(); [INFO] [stderr] | ^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `x.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:110:44 [INFO] [stderr] | [INFO] [stderr] 110 | let atlas_data = contents[0].split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `contents`. [INFO] [stderr] --> src/rendering/atlas.rs:123:18 [INFO] [stderr] | [INFO] [stderr] 123 | for i in 1 .. contents.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] 123 | for in contents.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/rendering/atlas.rs:124:42 [INFO] [stderr] | [INFO] [stderr] 124 | let data = contents[i].split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/rendering/shader.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 101 | return location.unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*location.unwrap()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/rendering/shader.rs:179:24 [INFO] [stderr] | [INFO] [stderr] 179 | if compile_status == gl::FALSE as i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::FALSE)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/rendering/vertex_buffer.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn from_vec(data: &Vec) -> VertexBuffer { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[f32]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/rendering/index_buffer.rs:12:24 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn from_vec(data: &Vec) -> IndexBuffer { [INFO] [stderr] | ^^^^^^^^^ help: change this to: `&[u32]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/rendering/sprite.rs:26:33 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn new_animated(images: &'a Vec, material: Material) -> Sprite { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[AtlasImage]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/input_state.rs:49:35 [INFO] [stderr] | [INFO] [stderr] 49 | self.keys_last.insert((*k).clone(), *v); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `(*k)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/input_state.rs:58:32 [INFO] [stderr] | [INFO] [stderr] 58 | pub fn get_key(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/input_state.rs:66:40 [INFO] [stderr] | [INFO] [stderr] 66 | pub fn get_key_pressed(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [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/input_state.rs:70:41 [INFO] [stderr] | [INFO] [stderr] 70 | pub fn get_key_released(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [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/input_state.rs:118:33 [INFO] [stderr] | [INFO] [stderr] 118 | fn get_key_last(&self, key: &InputKey) -> bool { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `InputKey` [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] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:90:16 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(x - self.last_pos.0).abs() < error` [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/entities/item.rs:90:16 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:90:40 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(y - self.last_pos.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/entities/item.rs:90:40 [INFO] [stderr] | [INFO] [stderr] 90 | if x != self.last_pos.0 || y != self.last_pos.1 || *direction != self.last_moved { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [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/entities/item.rs:97:21 [INFO] [stderr] | [INFO] [stderr] 97 | / match direction { [INFO] [stderr] 98 | | Direction::Bidirectional(_, _, ref mut switch) => { [INFO] [stderr] 99 | | if *switch == 0 { [INFO] [stderr] 100 | | *switch = 1; [INFO] [stderr] ... | [INFO] [stderr] 105 | | _ => (), [INFO] [stderr] 106 | | }; [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] 97 | if let Direction::Bidirectional(_, _, ref mut switch) = direction { [INFO] [stderr] 98 | if *switch == 0 { [INFO] [stderr] 99 | *switch = 1; [INFO] [stderr] 100 | } else { [INFO] [stderr] 101 | *switch = 0; [INFO] [stderr] 102 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(mv1.0 - mv2.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/entities/item.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/entities/item.rs:277:23 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(mv1.1 - mv2.1).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/entities/item.rs:277:23 [INFO] [stderr] | [INFO] [stderr] 277 | mv1.0 == mv2.0 && mv1.1 == mv2.1 [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/map.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | if let None = other { [INFO] [stderr] | _________________- ^^^^ [INFO] [stderr] 19 | | true [INFO] [stderr] 20 | | } else { [INFO] [stderr] 21 | | false [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________________- help: try this: `if other.is_none()` [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: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/map.rs:126:16 [INFO] [stderr] | [INFO] [stderr] 126 | } else if self.pickup_map[(x + y * self.width) as usize].is_none() && self.dir_map[(x + y * self.width) as usize] == Direction::None { [INFO] [stderr] | ________________^ [INFO] [stderr] 127 | | true [INFO] [stderr] 128 | | } else { [INFO] [stderr] 129 | | false [INFO] [stderr] 130 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `self.pickup_map[(x + y * self.width) as usize].is_none() && self.dir_map[(x + y * self.width) as usize] == Direction::None` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 31 [INFO] [stderr] --> src/main.rs:54:1 [INFO] [stderr] | [INFO] [stderr] 54 | / fn main() { [INFO] [stderr] 55 | | let mut events_loop = glutin::EventsLoop::new(); [INFO] [stderr] 56 | | let window = glutin::WindowBuilder::new() [INFO] [stderr] 57 | | .with_title("AutoMatias") [INFO] [stderr] ... | [INFO] [stderr] 416 | | } [INFO] [stderr] 417 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_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/main.rs:134:4 [INFO] [stderr] | [INFO] [stderr] 134 | match event { [INFO] [stderr] | _____________^ [INFO] [stderr] 135 | | glutin::Event::WindowEvent{ event, .. } => match event { [INFO] [stderr] 136 | | glutin::WindowEvent::CloseRequested => running = false, [INFO] [stderr] 137 | | glutin::WindowEvent::Resized(logical_size) => { [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] 134 | if let glutin::Event::WindowEvent{ event, .. } = event { match event { [INFO] [stderr] 135 | glutin::WindowEvent::CloseRequested => running = false, [INFO] [stderr] 136 | glutin::WindowEvent::Resized(logical_size) => { [INFO] [stderr] 137 | let dpi_factor = gl_window.get_hidpi_factor(); [INFO] [stderr] 138 | gl_window.resize(logical_size.to_physical(dpi_factor)); [INFO] [stderr] 139 | unsafe { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to 5 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `opengl_trip`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "5784d6797a656fa9753e4cb71cd06735d2db6142056f4f2cf487772916419468"` [INFO] running `"docker" "rm" "-f" "5784d6797a656fa9753e4cb71cd06735d2db6142056f4f2cf487772916419468"` [INFO] [stdout] 5784d6797a656fa9753e4cb71cd06735d2db6142056f4f2cf487772916419468