[INFO] updating cached repository mmiecz/chip8-rust [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mmiecz/chip8-rust [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mmiecz/chip8-rust" "work/ex/clippy-test-run/sources/stable/gh/mmiecz/chip8-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mmiecz/chip8-rust'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mmiecz/chip8-rust" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mmiecz/chip8-rust"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mmiecz/chip8-rust'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e1a108b4c2d523484451138cea2b06efdf2fb3ef [INFO] sha for GitHub repo mmiecz/chip8-rust: e1a108b4c2d523484451138cea2b06efdf2fb3ef [INFO] validating manifest of mmiecz/chip8-rust 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 mmiecz/chip8-rust 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 mmiecz/chip8-rust [INFO] finished frobbing mmiecz/chip8-rust [INFO] frobbed toml for mmiecz/chip8-rust written to work/ex/clippy-test-run/sources/stable/gh/mmiecz/chip8-rust/Cargo.toml [INFO] started frobbing mmiecz/chip8-rust [INFO] finished frobbing mmiecz/chip8-rust [INFO] frobbed toml for mmiecz/chip8-rust written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mmiecz/chip8-rust/Cargo.toml [INFO] crate mmiecz/chip8-rust 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 mmiecz/chip8-rust against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mmiecz/chip8-rust:/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] 89acb33fa2988b5143e98728a5e5a59f11dd6693a6055f2fcb2047426897f7ae [INFO] running `"docker" "start" "-a" "89acb33fa2988b5143e98728a5e5a59f11dd6693a6055f2fcb2047426897f7ae"` [INFO] [stderr] Compiling libc v0.2.19 [INFO] [stderr] Compiling phf_shared v0.7.20 [INFO] [stderr] Compiling serde v0.8.22 [INFO] [stderr] Compiling gcc v0.3.41 [INFO] [stderr] Compiling x11-dl v2.12.0 [INFO] [stderr] Checking shared_library v0.1.5 [INFO] [stderr] Compiling tempfile v2.1.4 [INFO] [stderr] Compiling glutin v0.7.2 [INFO] [stderr] Compiling glium v0.16.0 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Compiling phf v0.7.20 [INFO] [stderr] Checking osmesa-sys v0.1.2 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Compiling rand v0.3.15 [INFO] [stderr] Compiling backtrace-sys v0.1.5 [INFO] [stderr] Checking backtrace v0.2.3 [INFO] [stderr] Compiling phf_generator v0.7.20 [INFO] [stderr] Compiling phf_codegen v0.7.20 [INFO] [stderr] Compiling serde_json v0.8.4 [INFO] [stderr] Compiling target_build_utils v0.1.2 [INFO] [stderr] Compiling libloading v0.3.1 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.7.6 [INFO] [stderr] Checking wayland-client v0.7.6 [INFO] [stderr] Checking wayland-window v0.4.3 [INFO] [stderr] Checking wayland-kbd v0.6.2 [INFO] [stderr] Checking winit v0.5.7 [INFO] [stderr] Checking chip8-rust v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/display.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | display: display, pixel_buffer: pixel_data, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `display` [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/display.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | vertex_buffer: vertex_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `vertex_buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/display.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | display: display, pixel_buffer: pixel_data, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `display` [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/display.rs:80:13 [INFO] [stderr] | [INFO] [stderr] 80 | vertex_buffer: vertex_buffer, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `vertex_buffer` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/cpu.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | let nib = ((opcode & 0x000F)) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unused import: `glium::glutin::VirtualKeyCode` [INFO] [stderr] --> src/cpu.rs:446:13 [INFO] [stderr] | [INFO] [stderr] 446 | use glium::glutin::VirtualKeyCode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `glium::glutin::VirtualKeyCode` [INFO] [stderr] --> src/cpu.rs:455:13 [INFO] [stderr] | [INFO] [stderr] 455 | use glium::glutin::VirtualKeyCode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mem.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: unused import: `glium::DisplayBuild` [INFO] [stderr] --> src/input.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use glium::DisplayBuild; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/input.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/input.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `glium::glutin` [INFO] [stderr] --> src/display.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use glium::glutin; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::path::Path` [INFO] [stderr] --> src/display.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/display.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `CpuError`, `Cpu`, `DecoderError` [INFO] [stderr] --> src/main.rs:9:11 [INFO] [stderr] | [INFO] [stderr] 9 | use cpu::{Cpu, DecoderError, CpuError}; [INFO] [stderr] | ^^^ ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Event`, `VirtualKeyCode` [INFO] [stderr] --> src/main.rs:10:21 [INFO] [stderr] | [INFO] [stderr] 10 | use glium::glutin::{VirtualKeyCode, Event}; [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/cpu.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | "cls".to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/cpu.rs:480:9 [INFO] [stderr] | [INFO] [stderr] 480 | format!("wkp {:#x}", self.regs.v[reg]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused variable: `what` [INFO] [stderr] --> src/cpu.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | Err(what) => Err(CpuError::DecoderError) [INFO] [stderr] | ^^^^ help: consider using `_what` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `placeholder_display` [INFO] [stderr] --> src/cpu.rs:262:23 [INFO] [stderr] | [INFO] [stderr] 262 | fn cls(&mut self, placeholder_display : u8 ) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using `_placeholder_display` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `reg` [INFO] [stderr] --> src/cpu.rs:478:37 [INFO] [stderr] | [INFO] [stderr] 478 | fn wait_for_keypress(&mut self, reg: usize) -> String { [INFO] [stderr] | ^^^ help: consider using `_reg` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `title` [INFO] [stderr] --> src/display.rs:30:39 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn new(dimension: (u32, u32), title: &str) -> Result { [INFO] [stderr] | ^^^^^ help: consider using `_title` instead [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/cpu.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | let nib = ((opcode & 0x000F)) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unused import: `glium::glutin::VirtualKeyCode` [INFO] [stderr] --> src/cpu.rs:446:13 [INFO] [stderr] | [INFO] [stderr] 446 | use glium::glutin::VirtualKeyCode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `glium::glutin::VirtualKeyCode` [INFO] [stderr] --> src/cpu.rs:455:13 [INFO] [stderr] | [INFO] [stderr] 455 | use glium::glutin::VirtualKeyCode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mem.rs:55:9 [INFO] [stderr] | [INFO] [stderr] 55 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: unused import: `glium::DisplayBuild` [INFO] [stderr] --> src/input.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use glium::DisplayBuild; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::thread` [INFO] [stderr] --> src/input.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use std::thread; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/input.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `glium::glutin` [INFO] [stderr] --> src/display.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use glium::glutin; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::path::Path` [INFO] [stderr] --> src/display.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/display.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `CpuError`, `Cpu`, `DecoderError` [INFO] [stderr] --> src/main.rs:9:11 [INFO] [stderr] | [INFO] [stderr] 9 | use cpu::{Cpu, DecoderError, CpuError}; [INFO] [stderr] | ^^^ ^^^^^^^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Event`, `VirtualKeyCode` [INFO] [stderr] --> src/main.rs:10:21 [INFO] [stderr] | [INFO] [stderr] 10 | use glium::glutin::{VirtualKeyCode, Event}; [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/display.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | let mut collision = 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: field is never used: `is_closing` [INFO] [stderr] --> src/input.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | is_closing : bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `InvalidDimensionError` [INFO] [stderr] --> src/display.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | InvalidDimensionError, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:330:30 [INFO] [stderr] | [INFO] [stderr] 330 | self.regs.v[15] = if result.1 == true { 1 } else { 0 }; // TODO: Better access for VF = V[15] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `result.1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:360:30 [INFO] [stderr] | [INFO] [stderr] 360 | self.regs.v[15] = if result.1 == true { 1 } else { 0 }; // TODO: Better access for VF = V[15] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `result.1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:369:30 [INFO] [stderr] | [INFO] [stderr] 369 | self.regs.v[15] = if result.1 == true { 1 } else { 0 }; // TODO: Better access for VF = V[15] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `result.1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:416:26 [INFO] [stderr] | [INFO] [stderr] 416 | let addr = val + self.regs.v[0] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.v[0])` [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: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:438:12 [INFO] [stderr] | [INFO] [stderr] 438 | if collision == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `collision` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/cpu.rs:457:12 [INFO] [stderr] | [INFO] [stderr] 457 | if self.input.is_key_pressed(key) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.input.is_key_pressed(key)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:493:24 [INFO] [stderr] | [INFO] [stderr] 493 | self.regs.i += self.regs.v[reg] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.v[reg])` [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/cpu.rs:500:46 [INFO] [stderr] | [INFO] [stderr] 500 | let addr = Mem::font_offset() + (5 * num as u16); // 5 byte per digit, move to mem.rs [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(num)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/cpu.rs:522:18 [INFO] [stderr] | [INFO] [stderr] 522 | for i in 0..until+1 { // Must be Inclusive [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=until` [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/cpu.rs:533:18 [INFO] [stderr] | [INFO] [stderr] 533 | for i in 0..until+1 { // Must be Inclusive [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=until` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/mem.rs:65:10 [INFO] [stderr] | [INFO] [stderr] 65 | ((self.raw[addr] as u16) << 8 ) | ( self.raw[addr+1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raw[addr])` [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/mem.rs:65:44 [INFO] [stderr] | [INFO] [stderr] 65 | ((self.raw[addr] as u16) << 8 ) | ( self.raw[addr+1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raw[addr+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: useless use of `format!` [INFO] [stderr] --> src/display.rs:44:25 [INFO] [stderr] | [INFO] [stderr] 44 | .with_title(format!("CHIP8-rust")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"CHIP8-rust".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/display.rs:96:65 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn buffer_update(&mut self, x : usize, y: usize, bytes: &Vec ) -> bool { [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | / match cpu.step() { [INFO] [stderr] 24 | | Err(what) => { cpu.dump_panic(what); }, //TODO: Better error handling [INFO] [stderr] 25 | | Ok(_) => () [INFO] [stderr] 26 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(what) = cpu.step() { cpu.dump_panic(what); }` [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] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/cpu.rs:264:9 [INFO] [stderr] | [INFO] [stderr] 264 | "cls".to_string() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: unreachable expression [INFO] [stderr] --> src/cpu.rs:480:9 [INFO] [stderr] | [INFO] [stderr] 480 | format!("wkp {:#x}", self.regs.v[reg]) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: unused variable: `what` [INFO] [stderr] --> src/cpu.rs:75:17 [INFO] [stderr] | [INFO] [stderr] 75 | Err(what) => Err(CpuError::DecoderError) [INFO] [stderr] | ^^^^ help: consider using `_what` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `placeholder_display` [INFO] [stderr] --> src/cpu.rs:262:23 [INFO] [stderr] | [INFO] [stderr] 262 | fn cls(&mut self, placeholder_display : u8 ) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using `_placeholder_display` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `reg` [INFO] [stderr] --> src/cpu.rs:478:37 [INFO] [stderr] | [INFO] [stderr] 478 | fn wait_for_keypress(&mut self, reg: usize) -> String { [INFO] [stderr] | ^^^ help: consider using `_reg` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `title` [INFO] [stderr] --> src/display.rs:30:39 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn new(dimension: (u32, u32), title: &str) -> Result { [INFO] [stderr] | ^^^^^ help: consider using `_title` instead [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/display.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | let mut collision = 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: field is never used: `is_closing` [INFO] [stderr] --> src/input.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | is_closing : bool, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: variant is never constructed: `InvalidDimensionError` [INFO] [stderr] --> src/display.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | InvalidDimensionError, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:330:30 [INFO] [stderr] | [INFO] [stderr] 330 | self.regs.v[15] = if result.1 == true { 1 } else { 0 }; // TODO: Better access for VF = V[15] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `result.1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:360:30 [INFO] [stderr] | [INFO] [stderr] 360 | self.regs.v[15] = if result.1 == true { 1 } else { 0 }; // TODO: Better access for VF = V[15] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `result.1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:369:30 [INFO] [stderr] | [INFO] [stderr] 369 | self.regs.v[15] = if result.1 == true { 1 } else { 0 }; // TODO: Better access for VF = V[15] [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `result.1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:416:26 [INFO] [stderr] | [INFO] [stderr] 416 | let addr = val + self.regs.v[0] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.v[0])` [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: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:438:12 [INFO] [stderr] | [INFO] [stderr] 438 | if collision == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `collision` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/cpu.rs:457:12 [INFO] [stderr] | [INFO] [stderr] 457 | if self.input.is_key_pressed(key) == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.input.is_key_pressed(key)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:493:24 [INFO] [stderr] | [INFO] [stderr] 493 | self.regs.i += self.regs.v[reg] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.v[reg])` [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/cpu.rs:500:46 [INFO] [stderr] | [INFO] [stderr] 500 | let addr = Mem::font_offset() + (5 * num as u16); // 5 byte per digit, move to mem.rs [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(num)` [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: an inclusive range would be more readable [INFO] [stderr] --> src/cpu.rs:522:18 [INFO] [stderr] | [INFO] [stderr] 522 | for i in 0..until+1 { // Must be Inclusive [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=until` [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/cpu.rs:533:18 [INFO] [stderr] | [INFO] [stderr] 533 | for i in 0..until+1 { // Must be Inclusive [INFO] [stderr] | ^^^^^^^^^^ help: use: `0..=until` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/mem.rs:65:10 [INFO] [stderr] | [INFO] [stderr] 65 | ((self.raw[addr] as u16) << 8 ) | ( self.raw[addr+1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raw[addr])` [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/mem.rs:65:44 [INFO] [stderr] | [INFO] [stderr] 65 | ((self.raw[addr] as u16) << 8 ) | ( self.raw[addr+1] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raw[addr+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: useless use of `format!` [INFO] [stderr] --> src/display.rs:44:25 [INFO] [stderr] | [INFO] [stderr] 44 | .with_title(format!("CHIP8-rust")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"CHIP8-rust".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/display.rs:96:65 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn buffer_update(&mut self, x : usize, y: usize, bytes: &Vec ) -> bool { [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:23:9 [INFO] [stderr] | [INFO] [stderr] 23 | / match cpu.step() { [INFO] [stderr] 24 | | Err(what) => { cpu.dump_panic(what); }, //TODO: Better error handling [INFO] [stderr] 25 | | Ok(_) => () [INFO] [stderr] 26 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(what) = cpu.step() { cpu.dump_panic(what); }` [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] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 05s [INFO] running `"docker" "inspect" "89acb33fa2988b5143e98728a5e5a59f11dd6693a6055f2fcb2047426897f7ae"` [INFO] running `"docker" "rm" "-f" "89acb33fa2988b5143e98728a5e5a59f11dd6693a6055f2fcb2047426897f7ae"` [INFO] [stdout] 89acb33fa2988b5143e98728a5e5a59f11dd6693a6055f2fcb2047426897f7ae