[INFO] updating cached repository SwapnilBhosale/crust8 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/SwapnilBhosale/crust8 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/SwapnilBhosale/crust8" "work/ex/clippy-test-run/sources/stable/gh/SwapnilBhosale/crust8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/SwapnilBhosale/crust8'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/SwapnilBhosale/crust8" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/SwapnilBhosale/crust8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/SwapnilBhosale/crust8'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 40a6d3b763163ce9e93ba4b6a74b3400a2217fec [INFO] sha for GitHub repo SwapnilBhosale/crust8: 40a6d3b763163ce9e93ba4b6a74b3400a2217fec [INFO] validating manifest of SwapnilBhosale/crust8 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 SwapnilBhosale/crust8 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 SwapnilBhosale/crust8 [INFO] finished frobbing SwapnilBhosale/crust8 [INFO] frobbed toml for SwapnilBhosale/crust8 written to work/ex/clippy-test-run/sources/stable/gh/SwapnilBhosale/crust8/Cargo.toml [INFO] started frobbing SwapnilBhosale/crust8 [INFO] finished frobbing SwapnilBhosale/crust8 [INFO] frobbed toml for SwapnilBhosale/crust8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/SwapnilBhosale/crust8/Cargo.toml [INFO] crate SwapnilBhosale/crust8 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 SwapnilBhosale/crust8 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/SwapnilBhosale/crust8:/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] e6aed6214607fd5ae0257b4aaf436849413c9dabcd33f4637b45981f6ff6a8bd [INFO] running `"docker" "start" "-a" "e6aed6214607fd5ae0257b4aaf436849413c9dabcd33f4637b45981f6ff6a8bd"` [INFO] [stderr] warning: unused manifest key: package.email [INFO] [stderr] Checking image v0.10.4 [INFO] [stderr] Checking piston2d-opengl_graphics v0.36.1 [INFO] [stderr] Checking crust8 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/app.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | window : window, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `window` [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/app.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | window : window, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: replace it with: `window` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::Rng` [INFO] [stderr] --> src/chip.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use rand::Rng; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in (0..80){ [INFO] [stderr] | ^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:80:33 [INFO] [stderr] | [INFO] [stderr] 80 | for i in(0..GRAPHICS_SIZE){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::Rng` [INFO] [stderr] --> src/chip.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use rand::Rng; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in (0..80){ [INFO] [stderr] | ^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:80:33 [INFO] [stderr] | [INFO] [stderr] 80 | for i in(0..GRAPHICS_SIZE){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:225:30 [INFO] [stderr] | [INFO] [stderr] 225 | for yline in (0..n as u32){ [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:227:34 [INFO] [stderr] | [INFO] [stderr] 227 | for xline in (0..8 as u32){ [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:271:34 [INFO] [stderr] | [INFO] [stderr] 271 | for i in (0..16 as usize){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:307:34 [INFO] [stderr] | [INFO] [stderr] 307 | for i in (0..((opcode & 0x0F00) >> 8) + 1){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | for i in (0..((opcode & 0x0F00) >> 8) +1 ){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::Cpu` [INFO] [stderr] --> src/app.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use cpu::Cpu; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/app.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | for y in (0..32){ [INFO] [stderr] | ^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/app.rs:40:30 [INFO] [stderr] | [INFO] [stderr] 40 | for x in (0..64){ [INFO] [stderr] | ^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused import: `piston::window::WindowSettings` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use piston::window::WindowSettings; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `piston::event_loop::*` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use piston::event_loop::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `piston::input::*` [INFO] [stderr] --> src/main.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use piston::input::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `glutin_window::GlutinWindow as Window` [INFO] [stderr] --> src/main.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use glutin_window::GlutinWindow as Window; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `GlGraphics`, `OpenGL` [INFO] [stderr] --> src/main.rs:15:24 [INFO] [stderr] | [INFO] [stderr] 15 | use opengl_graphics::{ GlGraphics, OpenGL }; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::*` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use rand::*; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/main.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Read` [INFO] [stderr] --> src/main.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | use std::io::Read; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `chip::Chip` [INFO] [stderr] --> src/main.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use chip::Chip; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::Cpu` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use cpu::Cpu; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/main.rs:42:14 [INFO] [stderr] | [INFO] [stderr] 42 | for i in (512..600){ [INFO] [stderr] | ^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:225:30 [INFO] [stderr] | [INFO] [stderr] 225 | for yline in (0..n as u32){ [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:227:34 [INFO] [stderr] | [INFO] [stderr] 227 | for xline in (0..8 as u32){ [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:271:34 [INFO] [stderr] | [INFO] [stderr] 271 | for i in (0..16 as usize){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:307:34 [INFO] [stderr] | [INFO] [stderr] 307 | for i in (0..((opcode & 0x0F00) >> 8) + 1){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/chip.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | for i in (0..((opcode & 0x0F00) >> 8) +1 ){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::Cpu` [INFO] [stderr] --> src/app.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use cpu::Cpu; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/app.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | for y in (0..32){ [INFO] [stderr] | ^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/app.rs:40:30 [INFO] [stderr] | [INFO] [stderr] 40 | for x in (0..64){ [INFO] [stderr] | ^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused import: `piston::window::WindowSettings` [INFO] [stderr] --> src/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use piston::window::WindowSettings; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `piston::event_loop::*` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use piston::event_loop::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `piston::input::*` [INFO] [stderr] --> src/main.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | use piston::input::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `glutin_window::GlutinWindow as Window` [INFO] [stderr] --> src/main.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use glutin_window::GlutinWindow as Window; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `GlGraphics`, `OpenGL` [INFO] [stderr] --> src/main.rs:15:24 [INFO] [stderr] | [INFO] [stderr] 15 | use opengl_graphics::{ GlGraphics, OpenGL }; [INFO] [stderr] | ^^^^^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::*` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use rand::*; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/main.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Read` [INFO] [stderr] --> src/main.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | use std::io::Read; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `chip::Chip` [INFO] [stderr] --> src/main.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | use chip::Chip; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::Cpu` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use cpu::Cpu; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around `for` head expression [INFO] [stderr] --> src/main.rs:42:14 [INFO] [stderr] | [INFO] [stderr] 42 | for i in (512..600){ [INFO] [stderr] | ^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unused variable: `is_draw_needed` [INFO] [stderr] --> src/chip.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | let mut is_draw_needed = false; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_is_draw_needed` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `opcode` is never read [INFO] [stderr] --> src/chip.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | let mut opcode = 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `pixel` is never read [INFO] [stderr] --> src/chip.rs:224:25 [INFO] [stderr] | [INFO] [stderr] 224 | let mut pixel = 0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tempData` [INFO] [stderr] --> src/app.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | let mut tempData = [[0;32];64]; [INFO] [stderr] | ^^^^^^^^ help: consider using `_tempData` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/chip.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut is_draw_needed = false; [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/app.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let mut tempData = [[0;32];64]; [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/app.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut window: Window = WindowSettings::new( [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `run` [INFO] [stderr] --> src/chip.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn run(&mut self){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `MEMORY_SIZE` [INFO] [stderr] --> src/cpu.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | const MEMORY_SIZE : usize = 4 * 1024; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GRAPHICS_SIZE` [INFO] [stderr] --> src/cpu.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | const GRAPHICS_SIZE : usize = 64*32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_ram_location` [INFO] [stderr] --> src/main.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | fn print_ram_location(chip : chip::Chip){ [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/chip.rs:30:42 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn start_cpu(&mut self,program : &Vec){ [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 used to index `char_set` [INFO] [stderr] --> src/chip.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in (0..80){ [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] 50 | for (i, ) in char_set.iter().enumerate(){ [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/chip.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in (0..80){ [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&char_set[..80])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: unused variable: `is_draw_needed` [INFO] [stderr] --> src/chip.rs:63:17 [INFO] [stderr] | [INFO] [stderr] 63 | let mut is_draw_needed = false; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using `_is_draw_needed` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/chip.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / pub fn execute(&mut self) -> bool { [INFO] [stderr] 71 | | let mut is_draw_needed = false; [INFO] [stderr] 72 | | let mut opcode = 0; [INFO] [stderr] 73 | | //println!(" {:x} {:x} {:x}",self.cpu.reg_pc,self.memory[self.cpu.reg_pc],self.memory[self.cpu.reg_pc + 1]); [INFO] [stderr] ... | [INFO] [stderr] 328 | | is_draw_needed [INFO] [stderr] 329 | | } [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: value assigned to `opcode` is never read [INFO] [stderr] --> src/chip.rs:72:17 [INFO] [stderr] | [INFO] [stderr] 72 | let mut opcode = 0; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: value assigned to `pixel` is never read [INFO] [stderr] --> src/chip.rs:224:25 [INFO] [stderr] | [INFO] [stderr] 224 | let mut pixel = 0; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `tempData` [INFO] [stderr] --> src/app.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | let mut tempData = [[0;32];64]; [INFO] [stderr] | ^^^^^^^^ help: consider using `_tempData` instead [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:74:19 [INFO] [stderr] | [INFO] [stderr] 74 | opcode = ((self.memory[self.cpu.reg_pc] as u16) << 8) | self.memory[self.cpu.reg_pc + 1] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.cpu.reg_pc])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:74:65 [INFO] [stderr] | [INFO] [stderr] 74 | opcode = ((self.memory[self.cpu.reg_pc] as u16) << 8) | self.memory[self.cpu.reg_pc + 1] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.cpu.reg_pc + 1])` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:153:33 [INFO] [stderr] | [INFO] [stderr] 153 | let r = self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize] as u16 + self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize])` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:153:94 [INFO] [stderr] | [INFO] [stderr] 153 | let r = self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize] as u16 + self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:218:25 [INFO] [stderr] | [INFO] [stderr] 218 | let x = self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:219:25 [INFO] [stderr] | [INFO] [stderr] 219 | let y = self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize])` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | let n = (opcode & 0x000F) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(opcode & 0x000F)` [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: variable does not need to be mutable [INFO] [stderr] --> src/chip.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut is_draw_needed = false; [INFO] [stderr] | ----^^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:290:43 [INFO] [stderr] | [INFO] [stderr] 290 | self.cpu.reg_I += self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:294:42 [INFO] [stderr] | [INFO] [stderr] 294 | self.cpu.reg_I = self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16 * 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/chip.rs:300:25 [INFO] [stderr] | [INFO] [stderr] 300 | v = v / 10; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `v /= 10` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/chip.rs:302:25 [INFO] [stderr] | [INFO] [stderr] 302 | v = v / 10; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `v /= 10` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/chip.rs:307:34 [INFO] [stderr] | [INFO] [stderr] 307 | for i in (0..((opcode & 0x0F00) >> 8) + 1){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=((opcode & 0x0F00) >> 8))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/chip.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | for i in (0..((opcode & 0x0F00) >> 8) +1 ){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=((opcode & 0x0F00) >> 8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: structure field `reg_I` should have a snake case name such as `reg_i` [INFO] [stderr] --> src/cpu.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | pub reg_I : u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `tempData` should have a snake case name such as `temp_data` [INFO] [stderr] --> src/app.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let mut tempData = [[0;32];64]; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:44:40 [INFO] [stderr] | [INFO] [stderr] 44 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:44:70 [INFO] [stderr] | [INFO] [stderr] 44 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:45:39 [INFO] [stderr] | [INFO] [stderr] 45 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:45:70 [INFO] [stderr] | [INFO] [stderr] 45 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:49:40 [INFO] [stderr] | [INFO] [stderr] 49 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:49:70 [INFO] [stderr] | [INFO] [stderr] 49 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:50:39 [INFO] [stderr] | [INFO] [stderr] 50 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:50:70 [INFO] [stderr] | [INFO] [stderr] 50 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/app.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | / match &b { [INFO] [stderr] 101 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 102 | | &Key::Escape => process::exit(0), [INFO] [stderr] 103 | | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] ... | [INFO] [stderr] 122 | | _ => {} [INFO] [stderr] 123 | | } [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] 100 | if let &Button::Keyboard(k) = &b { match &k { [INFO] [stderr] 101 | &Key::Escape => process::exit(0), [INFO] [stderr] 102 | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] 103 | &Key::D2 => self.chip.cpu.keys[0x2] = 1 as u8, [INFO] [stderr] 104 | &Key::D3 => self.chip.cpu.keys[0x3] = 1 as u8, [INFO] [stderr] 105 | &Key::D4 => self.chip.cpu.keys[0xC] = 1 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | / match &b { [INFO] [stderr] 101 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 102 | | &Key::Escape => process::exit(0), [INFO] [stderr] 103 | | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] ... | [INFO] [stderr] 122 | | _ => {} [INFO] [stderr] 123 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 100 | match b { [INFO] [stderr] 101 | Button::Keyboard(k) => match &k { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:101:45 [INFO] [stderr] | [INFO] [stderr] 101 | &Button::Keyboard(k) => match &k { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 102 | | &Key::Escape => process::exit(0), [INFO] [stderr] 103 | | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] 104 | | &Key::D2 => self.chip.cpu.keys[0x2] = 1 as u8, [INFO] [stderr] ... | [INFO] [stderr] 120 | | _ => {} [INFO] [stderr] 121 | | }, [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: try [INFO] [stderr] | [INFO] [stderr] 101 | &Button::Keyboard(k) => match k { [INFO] [stderr] 102 | Key::Escape => process::exit(0), [INFO] [stderr] 103 | Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] 104 | Key::D2 => self.chip.cpu.keys[0x2] = 1 as u8, [INFO] [stderr] 105 | Key::D3 => self.chip.cpu.keys[0x3] = 1 as u8, [INFO] [stderr] 106 | Key::D4 => self.chip.cpu.keys[0xC] = 1 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/app.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | / match &b { [INFO] [stderr] 128 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 129 | | &Key::Escape => process::exit(0), [INFO] [stderr] 130 | | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => {} [INFO] [stderr] 150 | | } [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] 127 | if let &Button::Keyboard(k) = &b { match &k { [INFO] [stderr] 128 | &Key::Escape => process::exit(0), [INFO] [stderr] 129 | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] 130 | &Key::D2 => self.chip.cpu.keys[0x2] = 0 as u8, [INFO] [stderr] 131 | &Key::D3 => self.chip.cpu.keys[0x3] = 0 as u8, [INFO] [stderr] 132 | &Key::D4 => self.chip.cpu.keys[0xC] = 0 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | / match &b { [INFO] [stderr] 128 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 129 | | &Key::Escape => process::exit(0), [INFO] [stderr] 130 | | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => {} [INFO] [stderr] 150 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 127 | match b { [INFO] [stderr] 128 | Button::Keyboard(k) => match &k { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:128:45 [INFO] [stderr] | [INFO] [stderr] 128 | &Button::Keyboard(k) => match &k { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 129 | | &Key::Escape => process::exit(0), [INFO] [stderr] 130 | | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] 131 | | &Key::D2 => self.chip.cpu.keys[0x2] = 0 as u8, [INFO] [stderr] ... | [INFO] [stderr] 147 | | _ => {} [INFO] [stderr] 148 | | }, [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: try [INFO] [stderr] | [INFO] [stderr] 128 | &Button::Keyboard(k) => match k { [INFO] [stderr] 129 | Key::Escape => process::exit(0), [INFO] [stderr] 130 | Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] 131 | Key::D2 => self.chip.cpu.keys[0x2] = 0 as u8, [INFO] [stderr] 132 | Key::D3 => self.chip.cpu.keys[0x3] = 0 as u8, [INFO] [stderr] 133 | Key::D4 => self.chip.cpu.keys[0xC] = 0 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/app.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let mut tempData = [[0;32];64]; [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/app.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut window: Window = WindowSettings::new( [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: method is never used: `run` [INFO] [stderr] --> src/chip.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn run(&mut self){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `MEMORY_SIZE` [INFO] [stderr] --> src/cpu.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | const MEMORY_SIZE : usize = 4 * 1024; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GRAPHICS_SIZE` [INFO] [stderr] --> src/cpu.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | const GRAPHICS_SIZE : usize = 64*32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `print_ram_location` [INFO] [stderr] --> src/main.rs:41:1 [INFO] [stderr] | [INFO] [stderr] 41 | fn print_ram_location(chip : chip::Chip){ [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/chip.rs:30:42 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn start_cpu(&mut self,program : &Vec){ [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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 used to index `char_set` [INFO] [stderr] --> src/chip.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in (0..80){ [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] 50 | for (i, ) in char_set.iter().enumerate(){ [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/chip.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in (0..80){ [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&char_set[..80])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/chip.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / pub fn execute(&mut self) -> bool { [INFO] [stderr] 71 | | let mut is_draw_needed = false; [INFO] [stderr] 72 | | let mut opcode = 0; [INFO] [stderr] 73 | | //println!(" {:x} {:x} {:x}",self.cpu.reg_pc,self.memory[self.cpu.reg_pc],self.memory[self.cpu.reg_pc + 1]); [INFO] [stderr] ... | [INFO] [stderr] 328 | | is_draw_needed [INFO] [stderr] 329 | | } [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:74:19 [INFO] [stderr] | [INFO] [stderr] 74 | opcode = ((self.memory[self.cpu.reg_pc] as u16) << 8) | self.memory[self.cpu.reg_pc + 1] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.cpu.reg_pc])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:74:65 [INFO] [stderr] | [INFO] [stderr] 74 | opcode = ((self.memory[self.cpu.reg_pc] as u16) << 8) | self.memory[self.cpu.reg_pc + 1] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.cpu.reg_pc + 1])` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:153:33 [INFO] [stderr] | [INFO] [stderr] 153 | let r = self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize] as u16 + self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize])` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:153:94 [INFO] [stderr] | [INFO] [stderr] 153 | let r = self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize] as u16 + self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:218:25 [INFO] [stderr] | [INFO] [stderr] 218 | let x = self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:219:25 [INFO] [stderr] | [INFO] [stderr] 219 | let y = self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu.reg_gpr[((opcode & 0x00F0) >> 4) as usize])` [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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:222:25 [INFO] [stderr] | [INFO] [stderr] 222 | let n = (opcode & 0x000F) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(opcode & 0x000F)` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:290:43 [INFO] [stderr] | [INFO] [stderr] 290 | self.cpu.reg_I += self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/chip.rs:294:42 [INFO] [stderr] | [INFO] [stderr] 294 | self.cpu.reg_I = self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize] as u16 * 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu.reg_gpr[((opcode & 0x0F00) >> 8) as usize])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/chip.rs:300:25 [INFO] [stderr] | [INFO] [stderr] 300 | v = v / 10; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `v /= 10` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/chip.rs:302:25 [INFO] [stderr] | [INFO] [stderr] 302 | v = v / 10; [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `v /= 10` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/chip.rs:307:34 [INFO] [stderr] | [INFO] [stderr] 307 | for i in (0..((opcode & 0x0F00) >> 8) + 1){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=((opcode & 0x0F00) >> 8))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/chip.rs:314:34 [INFO] [stderr] | [INFO] [stderr] 314 | for i in (0..((opcode & 0x0F00) >> 8) +1 ){ [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `(0..=((opcode & 0x0F00) >> 8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: structure field `reg_I` should have a snake case name such as `reg_i` [INFO] [stderr] --> src/cpu.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | pub reg_I : u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `tempData` should have a snake case name such as `temp_data` [INFO] [stderr] --> src/app.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | let mut tempData = [[0;32];64]; [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:44:40 [INFO] [stderr] | [INFO] [stderr] 44 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:44:70 [INFO] [stderr] | [INFO] [stderr] 44 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:45:39 [INFO] [stderr] | [INFO] [stderr] 45 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:45:70 [INFO] [stderr] | [INFO] [stderr] 45 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:49:40 [INFO] [stderr] | [INFO] [stderr] 49 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:49:70 [INFO] [stderr] | [INFO] [stderr] 49 | [x as f64 * 10.0 + 0.0 as f64, y as f64 * 10.0 + 0.0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:50:39 [INFO] [stderr] | [INFO] [stderr] 50 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(x)` [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 i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/app.rs:50:70 [INFO] [stderr] | [INFO] [stderr] 50 | x as f64 * 10.0 + 10.0 as f64, y as f64 * 10.0 + 10.0 as f64], [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/app.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | / match &b { [INFO] [stderr] 101 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 102 | | &Key::Escape => process::exit(0), [INFO] [stderr] 103 | | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] ... | [INFO] [stderr] 122 | | _ => {} [INFO] [stderr] 123 | | } [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] 100 | if let &Button::Keyboard(k) = &b { match &k { [INFO] [stderr] 101 | &Key::Escape => process::exit(0), [INFO] [stderr] 102 | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] 103 | &Key::D2 => self.chip.cpu.keys[0x2] = 1 as u8, [INFO] [stderr] 104 | &Key::D3 => self.chip.cpu.keys[0x3] = 1 as u8, [INFO] [stderr] 105 | &Key::D4 => self.chip.cpu.keys[0xC] = 1 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:100:17 [INFO] [stderr] | [INFO] [stderr] 100 | / match &b { [INFO] [stderr] 101 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 102 | | &Key::Escape => process::exit(0), [INFO] [stderr] 103 | | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] ... | [INFO] [stderr] 122 | | _ => {} [INFO] [stderr] 123 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 100 | match b { [INFO] [stderr] 101 | Button::Keyboard(k) => match &k { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:101:45 [INFO] [stderr] | [INFO] [stderr] 101 | &Button::Keyboard(k) => match &k { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 102 | | &Key::Escape => process::exit(0), [INFO] [stderr] 103 | | &Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] 104 | | &Key::D2 => self.chip.cpu.keys[0x2] = 1 as u8, [INFO] [stderr] ... | [INFO] [stderr] 120 | | _ => {} [INFO] [stderr] 121 | | }, [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: try [INFO] [stderr] | [INFO] [stderr] 101 | &Button::Keyboard(k) => match k { [INFO] [stderr] 102 | Key::Escape => process::exit(0), [INFO] [stderr] 103 | Key::D1 => self.chip.cpu.keys[0x1] = 1 as u8, [INFO] [stderr] 104 | Key::D2 => self.chip.cpu.keys[0x2] = 1 as u8, [INFO] [stderr] 105 | Key::D3 => self.chip.cpu.keys[0x3] = 1 as u8, [INFO] [stderr] 106 | Key::D4 => self.chip.cpu.keys[0xC] = 1 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/app.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | / match &b { [INFO] [stderr] 128 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 129 | | &Key::Escape => process::exit(0), [INFO] [stderr] 130 | | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => {} [INFO] [stderr] 150 | | } [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] 127 | if let &Button::Keyboard(k) = &b { match &k { [INFO] [stderr] 128 | &Key::Escape => process::exit(0), [INFO] [stderr] 129 | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] 130 | &Key::D2 => self.chip.cpu.keys[0x2] = 0 as u8, [INFO] [stderr] 131 | &Key::D3 => self.chip.cpu.keys[0x3] = 0 as u8, [INFO] [stderr] 132 | &Key::D4 => self.chip.cpu.keys[0xC] = 0 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:127:17 [INFO] [stderr] | [INFO] [stderr] 127 | / match &b { [INFO] [stderr] 128 | | &Button::Keyboard(k) => match &k { [INFO] [stderr] 129 | | &Key::Escape => process::exit(0), [INFO] [stderr] 130 | | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => {} [INFO] [stderr] 150 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 127 | match b { [INFO] [stderr] 128 | Button::Keyboard(k) => match &k { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/app.rs:128:45 [INFO] [stderr] | [INFO] [stderr] 128 | &Button::Keyboard(k) => match &k { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 129 | | &Key::Escape => process::exit(0), [INFO] [stderr] 130 | | &Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] 131 | | &Key::D2 => self.chip.cpu.keys[0x2] = 0 as u8, [INFO] [stderr] ... | [INFO] [stderr] 147 | | _ => {} [INFO] [stderr] 148 | | }, [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: try [INFO] [stderr] | [INFO] [stderr] 128 | &Button::Keyboard(k) => match k { [INFO] [stderr] 129 | Key::Escape => process::exit(0), [INFO] [stderr] 130 | Key::D1 => self.chip.cpu.keys[0x1] = 0 as u8, [INFO] [stderr] 131 | Key::D2 => self.chip.cpu.keys[0x2] = 0 as u8, [INFO] [stderr] 132 | Key::D3 => self.chip.cpu.keys[0x3] = 0 as u8, [INFO] [stderr] 133 | Key::D4 => self.chip.cpu.keys[0xC] = 0 as u8, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 13.27s [INFO] running `"docker" "inspect" "e6aed6214607fd5ae0257b4aaf436849413c9dabcd33f4637b45981f6ff6a8bd"` [INFO] running `"docker" "rm" "-f" "e6aed6214607fd5ae0257b4aaf436849413c9dabcd33f4637b45981f6ff6a8bd"` [INFO] [stdout] e6aed6214607fd5ae0257b4aaf436849413c9dabcd33f4637b45981f6ff6a8bd