[INFO] updating cached repository Orenchon/chip8_mary [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Orenchon/chip8_mary [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Orenchon/chip8_mary" "work/ex/clippy-test-run/sources/stable/gh/Orenchon/chip8_mary"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Orenchon/chip8_mary'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Orenchon/chip8_mary" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Orenchon/chip8_mary"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Orenchon/chip8_mary'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f65357200c2ab94fe42abde662b620beeee0ea3b [INFO] sha for GitHub repo Orenchon/chip8_mary: f65357200c2ab94fe42abde662b620beeee0ea3b [INFO] validating manifest of Orenchon/chip8_mary 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 Orenchon/chip8_mary 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 Orenchon/chip8_mary [INFO] finished frobbing Orenchon/chip8_mary [INFO] frobbed toml for Orenchon/chip8_mary written to work/ex/clippy-test-run/sources/stable/gh/Orenchon/chip8_mary/Cargo.toml [INFO] started frobbing Orenchon/chip8_mary [INFO] finished frobbing Orenchon/chip8_mary [INFO] frobbed toml for Orenchon/chip8_mary written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Orenchon/chip8_mary/Cargo.toml [INFO] crate Orenchon/chip8_mary 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 Orenchon/chip8_mary against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Orenchon/chip8_mary:/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] b745172feb3c0a5da255b34af3c1cf4a617823ebe40c70112d13dd9e89614398 [INFO] running `"docker" "start" "-a" "b745172feb3c0a5da255b34af3c1cf4a617823ebe40c70112d13dd9e89614398"` [INFO] [stderr] Checking sdl2 v0.31.0 [INFO] [stderr] Checking chip8_mary v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/audio.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | / pub mod audio { [INFO] [stderr] 5 | | use audio::sdl2::audio::AudioCallback; [INFO] [stderr] 6 | | pub struct SquareWave { [INFO] [stderr] 7 | | pub phase_inc: f32, [INFO] [stderr] ... | [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/cpu.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod cpu { [INFO] [stderr] 3 | | extern crate rand; [INFO] [stderr] 4 | | ///4K Max rom size. [INFO] [stderr] 5 | | const MEMORY_SIZE: usize = 4096; [INFO] [stderr] ... | [INFO] [stderr] 516 | | ]; [INFO] [stderr] 517 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/cpu.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | return new_chip; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_chip` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:326:76 [INFO] [stderr] | [INFO] [stderr] 326 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:333:76 [INFO] [stderr] | [INFO] [stderr] 333 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:348:76 [INFO] [stderr] | [INFO] [stderr] 348 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:355:76 [INFO] [stderr] | [INFO] [stderr] 355 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unused import: `audio::*` [INFO] [stderr] --> src/lib.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use audio::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::*` [INFO] [stderr] --> src/lib.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use cpu::*; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `SquareWave` [INFO] [stderr] --> src/audio.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct SquareWave { [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:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | const MEMORY_SIZE: usize = 4096; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `STACK_SIZE` [INFO] [stderr] --> src/cpu.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | const STACK_SIZE: usize = 16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GFX_SIZE` [INFO] [stderr] --> src/cpu.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | const GFX_SIZE: usize = 64 * 32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `COWGOD_VER` [INFO] [stderr] --> src/cpu.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | const COWGOD_VER: u8 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `MATTMIK_VER` [INFO] [stderr] --> src/cpu.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | const MATTMIK_VER: u8 = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Chip` [INFO] [stderr] --> src/cpu.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub struct Chip { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn new(version: u8) -> Chip { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `load_program` [INFO] [stderr] --> src/cpu.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn load_program(&mut self, program: &[u8]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cycle` [INFO] [stderr] --> src/cpu.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn cycle(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `give_keypress` [INFO] [stderr] --> src/cpu.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | pub fn give_keypress(&mut self, key_pressed: Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `give_keyrelease` [INFO] [stderr] --> src/cpu.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn give_keyrelease(&mut self, key_pressed: Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cls` [INFO] [stderr] --> src/cpu.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | pub fn cls(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `jump` [INFO] [stderr] --> src/cpu.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | pub fn jump(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `jump_plus_reg` [INFO] [stderr] --> src/cpu.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | pub fn jump_plus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `gen_random` [INFO] [stderr] --> src/cpu.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | pub fn gen_random(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `index_sprite` [INFO] [stderr] --> src/cpu.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | pub fn index_sprite(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `should_draw` [INFO] [stderr] --> src/cpu.rs:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | pub fn should_draw(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `should_clear` [INFO] [stderr] --> src/cpu.rs:216:9 [INFO] [stderr] | [INFO] [stderr] 216 | pub fn should_clear(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `call_sub` [INFO] [stderr] --> src/cpu.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | pub fn call_sub(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `copy_to_memory` [INFO] [stderr] --> src/cpu.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | pub fn copy_to_memory(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `copy_to_registers` [INFO] [stderr] --> src/cpu.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | pub fn copy_to_registers(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `equal_to` [INFO] [stderr] --> src/cpu.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | pub fn equal_to(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `not_equal_to` [INFO] [stderr] --> src/cpu.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn not_equal_to(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_to_reg` [INFO] [stderr] --> src/cpu.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | pub fn reg_to_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_or_reg` [INFO] [stderr] --> src/cpu.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | pub fn reg_or_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_and_reg` [INFO] [stderr] --> src/cpu.rs:282:9 [INFO] [stderr] | [INFO] [stderr] 282 | pub fn reg_and_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_xor_reg` [INFO] [stderr] --> src/cpu.rs:288:9 [INFO] [stderr] | [INFO] [stderr] 288 | pub fn reg_xor_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_minus_reg` [INFO] [stderr] --> src/cpu.rs:294:9 [INFO] [stderr] | [INFO] [stderr] 294 | pub fn reg_minus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `inv_reg_minus_reg` [INFO] [stderr] --> src/cpu.rs:308:9 [INFO] [stderr] | [INFO] [stderr] 308 | pub fn inv_reg_minus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `shift_reg_right` [INFO] [stderr] --> src/cpu.rs:324:9 [INFO] [stderr] | [INFO] [stderr] 324 | pub fn shift_reg_right(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `shift_reg_left` [INFO] [stderr] --> src/cpu.rs:346:9 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn shift_reg_left(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_not_reg` [INFO] [stderr] --> src/cpu.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | pub fn reg_not_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_equals_reg` [INFO] [stderr] --> src/cpu.rs:376:9 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn reg_equals_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `assign` [INFO] [stderr] --> src/cpu.rs:386:9 [INFO] [stderr] | [INFO] [stderr] 386 | pub fn assign(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sum_to` [INFO] [stderr] --> src/cpu.rs:391:9 [INFO] [stderr] | [INFO] [stderr] 391 | pub fn sum_to(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sub_return` [INFO] [stderr] --> src/cpu.rs:398:9 [INFO] [stderr] | [INFO] [stderr] 398 | pub fn sub_return(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `skip_pressed` [INFO] [stderr] --> src/cpu.rs:403:9 [INFO] [stderr] | [INFO] [stderr] 403 | pub fn skip_pressed(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `skip_not_pressed` [INFO] [stderr] --> src/cpu.rs:411:9 [INFO] [stderr] | [INFO] [stderr] 411 | pub fn skip_not_pressed(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `store_delay_timer` [INFO] [stderr] --> src/cpu.rs:419:9 [INFO] [stderr] | [INFO] [stderr] 419 | pub fn store_delay_timer(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_delay_timer` [INFO] [stderr] --> src/cpu.rs:424:9 [INFO] [stderr] | [INFO] [stderr] 424 | pub fn set_delay_timer(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `index_plus_reg` [INFO] [stderr] --> src/cpu.rs:429:9 [INFO] [stderr] | [INFO] [stderr] 429 | pub fn index_plus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_sound_timer` [INFO] [stderr] --> src/cpu.rs:435:9 [INFO] [stderr] | [INFO] [stderr] 435 | pub fn set_sound_timer(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `wait_for_key` [INFO] [stderr] --> src/cpu.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | pub fn wait_for_key(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_plus_reg` [INFO] [stderr] --> src/cpu.rs:444:9 [INFO] [stderr] | [INFO] [stderr] 444 | pub fn reg_plus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `store_dec` [INFO] [stderr] --> src/cpu.rs:458:9 [INFO] [stderr] | [INFO] [stderr] 458 | pub fn store_dec(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `draw_sprite` [INFO] [stderr] --> src/cpu.rs:468:9 [INFO] [stderr] | [INFO] [stderr] 468 | pub fn draw_sprite(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `CHIP8_FONTSET` [INFO] [stderr] --> src/cpu.rs:499:5 [INFO] [stderr] | [INFO] [stderr] 499 | / const CHIP8_FONTSET: [u8; 80] = [ [INFO] [stderr] 500 | | 0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 [INFO] [stderr] 501 | | 0x20, 0x60, 0x20, 0x20, 0x70, // 1 [INFO] [stderr] 502 | | 0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 [INFO] [stderr] ... | [INFO] [stderr] 515 | | 0xF0, 0x80, 0xF0, 0x80, 0x80, // F [INFO] [stderr] 516 | | ]; [INFO] [stderr] | |______^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `font_addr` is used to index `CHIP8_FONTSET` [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr 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] 76 | for (font_addr, ) in CHIP8_FONTSET.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&CHIP8_FONTSET[..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 loop variable `prog_addr` is used to index `program` [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 80 | for (prog_addr, ) in program.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try replacing the loop by: `self.memory[512..(program.len() + 512)].clone_from_slice(&program[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/audio.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | / pub mod audio { [INFO] [stderr] 5 | | use audio::sdl2::audio::AudioCallback; [INFO] [stderr] 6 | | pub struct SquareWave { [INFO] [stderr] 7 | | pub phase_inc: f32, [INFO] [stderr] ... | [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/cpu.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod cpu { [INFO] [stderr] 3 | | extern crate rand; [INFO] [stderr] 4 | | ///4K Max rom size. [INFO] [stderr] 5 | | const MEMORY_SIZE: usize = 4096; [INFO] [stderr] ... | [INFO] [stderr] 516 | | ]; [INFO] [stderr] 517 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/cpu.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | return new_chip; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_chip` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:326:76 [INFO] [stderr] | [INFO] [stderr] 326 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:333:76 [INFO] [stderr] | [INFO] [stderr] 333 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:348:76 [INFO] [stderr] | [INFO] [stderr] 348 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:355:76 [INFO] [stderr] | [INFO] [stderr] 355 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:89:32 [INFO] [stderr] | [INFO] [stderr] 89 | self.op_code = (self.memory[self.program_counter as usize] as u16) << (8 as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize])` [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/cpu.rs:90:23 [INFO] [stderr] | [INFO] [stderr] 90 | | self.memory[self.program_counter as usize + 1 as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize + 1 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: unused import: `audio::*` [INFO] [stderr] --> src/lib.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use audio::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::*` [INFO] [stderr] --> src/lib.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use cpu::*; [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/cpu.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match key_pressed { [INFO] [stderr] 155 | | Some(key_pressed) => { [INFO] [stderr] 156 | | if self.locked { [INFO] [stderr] 157 | | self.locked = false; [INFO] [stderr] ... | [INFO] [stderr] 163 | | None => (), [INFO] [stderr] 164 | | } [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] 154 | if let Some(key_pressed) = key_pressed { [INFO] [stderr] 155 | if self.locked { [INFO] [stderr] 156 | self.locked = false; [INFO] [stderr] 157 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] 158 | self.program_counter += 2; [INFO] [stderr] 159 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/cpu.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::no_effect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [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/cpu.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | / match key_pressed { [INFO] [stderr] 169 | | Some(key_pressed) => self.key[key_pressed as usize] = 0, [INFO] [stderr] 170 | | None => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(key_pressed) = key_pressed { self.key[key_pressed as usize] = 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:186:36 [INFO] [stderr] | [INFO] [stderr] 186 | self.program_counter = self.cpu_reg[0] as u16 + (self.op_code & 0x0FFF) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `self.op_code as u8` [INFO] [stderr] --> src/cpu.rs:191:17 [INFO] [stderr] | [INFO] [stderr] 191 | (self.op_code as u8 & 0x00FFu8) & rand::random::(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | self.index = (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5)` [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/cpu.rs:231:25 [INFO] [stderr] | [INFO] [stderr] 231 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:25 [INFO] [stderr] | [INFO] [stderr] 241 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:430:39 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 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: the operation is ineffective. Consider reducing it to `self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]` [INFO] [stderr] --> src/cpu.rs:464:17 [INFO] [stderr] | [INFO] [stderr] 464 | (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] / 1) % 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:469:26 [INFO] [stderr] | [INFO] [stderr] 469 | let x: u32 = self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:470:26 [INFO] [stderr] | [INFO] [stderr] 470 | let y: u32 = self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:471:31 [INFO] [stderr] | [INFO] [stderr] 471 | let height: u32 = (self.op_code & 0x000F) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.op_code & 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: struct is never constructed: `SquareWave` [INFO] [stderr] --> src/audio.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | pub struct SquareWave { [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:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | const MEMORY_SIZE: usize = 4096; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `STACK_SIZE` [INFO] [stderr] --> src/cpu.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | const STACK_SIZE: usize = 16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `GFX_SIZE` [INFO] [stderr] --> src/cpu.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | const GFX_SIZE: usize = 64 * 32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `COWGOD_VER` [INFO] [stderr] --> src/cpu.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | const COWGOD_VER: u8 = 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `MATTMIK_VER` [INFO] [stderr] --> src/cpu.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | const MATTMIK_VER: u8 = 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Chip` [INFO] [stderr] --> src/cpu.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | pub struct Chip { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu.rs:53:9 [INFO] [stderr] | [INFO] [stderr] 53 | pub fn new(version: u8) -> Chip { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `load_program` [INFO] [stderr] --> src/cpu.rs:74:9 [INFO] [stderr] | [INFO] [stderr] 74 | pub fn load_program(&mut self, program: &[u8]) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cycle` [INFO] [stderr] --> src/cpu.rs:86:9 [INFO] [stderr] | [INFO] [stderr] 86 | pub fn cycle(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `give_keypress` [INFO] [stderr] --> src/cpu.rs:153:9 [INFO] [stderr] | [INFO] [stderr] 153 | pub fn give_keypress(&mut self, key_pressed: Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `give_keyrelease` [INFO] [stderr] --> src/cpu.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | pub fn give_keyrelease(&mut self, key_pressed: Option) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `cls` [INFO] [stderr] --> src/cpu.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | pub fn cls(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `jump` [INFO] [stderr] --> src/cpu.rs:181:9 [INFO] [stderr] | [INFO] [stderr] 181 | pub fn jump(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `jump_plus_reg` [INFO] [stderr] --> src/cpu.rs:185:9 [INFO] [stderr] | [INFO] [stderr] 185 | pub fn jump_plus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `gen_random` [INFO] [stderr] --> src/cpu.rs:189:9 [INFO] [stderr] | [INFO] [stderr] 189 | pub fn gen_random(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `index_sprite` [INFO] [stderr] --> src/cpu.rs:195:9 [INFO] [stderr] | [INFO] [stderr] 195 | pub fn index_sprite(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `should_draw` [INFO] [stderr] --> src/cpu.rs:201:9 [INFO] [stderr] | [INFO] [stderr] 201 | pub fn should_draw(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `should_clear` [INFO] [stderr] --> src/cpu.rs:216:9 [INFO] [stderr] | [INFO] [stderr] 216 | pub fn should_clear(&mut self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `call_sub` [INFO] [stderr] --> src/cpu.rs:224:9 [INFO] [stderr] | [INFO] [stderr] 224 | pub fn call_sub(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `copy_to_memory` [INFO] [stderr] --> src/cpu.rs:230:9 [INFO] [stderr] | [INFO] [stderr] 230 | pub fn copy_to_memory(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `copy_to_registers` [INFO] [stderr] --> src/cpu.rs:240:9 [INFO] [stderr] | [INFO] [stderr] 240 | pub fn copy_to_registers(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `equal_to` [INFO] [stderr] --> src/cpu.rs:250:9 [INFO] [stderr] | [INFO] [stderr] 250 | pub fn equal_to(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `not_equal_to` [INFO] [stderr] --> src/cpu.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn not_equal_to(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_to_reg` [INFO] [stderr] --> src/cpu.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | pub fn reg_to_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_or_reg` [INFO] [stderr] --> src/cpu.rs:276:9 [INFO] [stderr] | [INFO] [stderr] 276 | pub fn reg_or_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_and_reg` [INFO] [stderr] --> src/cpu.rs:282:9 [INFO] [stderr] | [INFO] [stderr] 282 | pub fn reg_and_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_xor_reg` [INFO] [stderr] --> src/cpu.rs:288:9 [INFO] [stderr] | [INFO] [stderr] 288 | pub fn reg_xor_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_minus_reg` [INFO] [stderr] --> src/cpu.rs:294:9 [INFO] [stderr] | [INFO] [stderr] 294 | pub fn reg_minus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `inv_reg_minus_reg` [INFO] [stderr] --> src/cpu.rs:308:9 [INFO] [stderr] | [INFO] [stderr] 308 | pub fn inv_reg_minus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `shift_reg_right` [INFO] [stderr] --> src/cpu.rs:324:9 [INFO] [stderr] | [INFO] [stderr] 324 | pub fn shift_reg_right(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `shift_reg_left` [INFO] [stderr] --> src/cpu.rs:346:9 [INFO] [stderr] | [INFO] [stderr] 346 | pub fn shift_reg_left(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_not_reg` [INFO] [stderr] --> src/cpu.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | pub fn reg_not_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_equals_reg` [INFO] [stderr] --> src/cpu.rs:376:9 [INFO] [stderr] | [INFO] [stderr] 376 | pub fn reg_equals_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `assign` [INFO] [stderr] --> src/cpu.rs:386:9 [INFO] [stderr] | [INFO] [stderr] 386 | pub fn assign(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sum_to` [INFO] [stderr] --> src/cpu.rs:391:9 [INFO] [stderr] | [INFO] [stderr] 391 | pub fn sum_to(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `sub_return` [INFO] [stderr] --> src/cpu.rs:398:9 [INFO] [stderr] | [INFO] [stderr] 398 | pub fn sub_return(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `skip_pressed` [INFO] [stderr] --> src/cpu.rs:403:9 [INFO] [stderr] | [INFO] [stderr] 403 | pub fn skip_pressed(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `skip_not_pressed` [INFO] [stderr] --> src/cpu.rs:411:9 [INFO] [stderr] | [INFO] [stderr] 411 | pub fn skip_not_pressed(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `store_delay_timer` [INFO] [stderr] --> src/cpu.rs:419:9 [INFO] [stderr] | [INFO] [stderr] 419 | pub fn store_delay_timer(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_delay_timer` [INFO] [stderr] --> src/cpu.rs:424:9 [INFO] [stderr] | [INFO] [stderr] 424 | pub fn set_delay_timer(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `index_plus_reg` [INFO] [stderr] --> src/cpu.rs:429:9 [INFO] [stderr] | [INFO] [stderr] 429 | pub fn index_plus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_sound_timer` [INFO] [stderr] --> src/cpu.rs:435:9 [INFO] [stderr] | [INFO] [stderr] 435 | pub fn set_sound_timer(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `wait_for_key` [INFO] [stderr] --> src/cpu.rs:440:9 [INFO] [stderr] | [INFO] [stderr] 440 | pub fn wait_for_key(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reg_plus_reg` [INFO] [stderr] --> src/cpu.rs:444:9 [INFO] [stderr] | [INFO] [stderr] 444 | pub fn reg_plus_reg(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `store_dec` [INFO] [stderr] --> src/cpu.rs:458:9 [INFO] [stderr] | [INFO] [stderr] 458 | pub fn store_dec(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `draw_sprite` [INFO] [stderr] --> src/cpu.rs:468:9 [INFO] [stderr] | [INFO] [stderr] 468 | pub fn draw_sprite(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `CHIP8_FONTSET` [INFO] [stderr] --> src/cpu.rs:499:5 [INFO] [stderr] | [INFO] [stderr] 499 | / const CHIP8_FONTSET: [u8; 80] = [ [INFO] [stderr] 500 | | 0xF0, 0x90, 0x90, 0x90, 0xF0, // 0 [INFO] [stderr] 501 | | 0x20, 0x60, 0x20, 0x20, 0x70, // 1 [INFO] [stderr] 502 | | 0xF0, 0x10, 0xF0, 0x80, 0xF0, // 2 [INFO] [stderr] ... | [INFO] [stderr] 515 | | 0xF0, 0x80, 0xF0, 0x80, 0x80, // F [INFO] [stderr] 516 | | ]; [INFO] [stderr] | |______^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `font_addr` is used to index `CHIP8_FONTSET` [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr 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] 76 | for (font_addr, ) in CHIP8_FONTSET.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&CHIP8_FONTSET[..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 loop variable `prog_addr` is used to index `program` [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 80 | for (prog_addr, ) in program.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try replacing the loop by: `self.memory[512..(program.len() + 512)].clone_from_slice(&program[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:89:32 [INFO] [stderr] | [INFO] [stderr] 89 | self.op_code = (self.memory[self.program_counter as usize] as u16) << (8 as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize])` [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/cpu.rs:90:23 [INFO] [stderr] | [INFO] [stderr] 90 | | self.memory[self.program_counter as usize + 1 as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize + 1 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/cpu.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match key_pressed { [INFO] [stderr] 155 | | Some(key_pressed) => { [INFO] [stderr] 156 | | if self.locked { [INFO] [stderr] 157 | | self.locked = false; [INFO] [stderr] ... | [INFO] [stderr] 163 | | None => (), [INFO] [stderr] 164 | | } [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] 154 | if let Some(key_pressed) = key_pressed { [INFO] [stderr] 155 | if self.locked { [INFO] [stderr] 156 | self.locked = false; [INFO] [stderr] 157 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] 158 | self.program_counter += 2; [INFO] [stderr] 159 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/cpu.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::no_effect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [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/cpu.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | / match key_pressed { [INFO] [stderr] 169 | | Some(key_pressed) => self.key[key_pressed as usize] = 0, [INFO] [stderr] 170 | | None => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(key_pressed) = key_pressed { self.key[key_pressed as usize] = 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:186:36 [INFO] [stderr] | [INFO] [stderr] 186 | self.program_counter = self.cpu_reg[0] as u16 + (self.op_code & 0x0FFF) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `self.op_code as u8` [INFO] [stderr] --> src/cpu.rs:191:17 [INFO] [stderr] | [INFO] [stderr] 191 | (self.op_code as u8 & 0x00FFu8) & rand::random::(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | self.index = (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5)` [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/cpu.rs:231:25 [INFO] [stderr] | [INFO] [stderr] 231 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:25 [INFO] [stderr] | [INFO] [stderr] 241 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:430:39 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 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: the operation is ineffective. Consider reducing it to `self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]` [INFO] [stderr] --> src/cpu.rs:464:17 [INFO] [stderr] | [INFO] [stderr] 464 | (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] / 1) % 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:469:26 [INFO] [stderr] | [INFO] [stderr] 469 | let x: u32 = self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:470:26 [INFO] [stderr] | [INFO] [stderr] 470 | let y: u32 = self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:471:31 [INFO] [stderr] | [INFO] [stderr] 471 | let height: u32 = (self.op_code & 0x000F) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.op_code & 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: module has the same name as its containing module [INFO] [stderr] --> src/audio.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | / pub mod audio { [INFO] [stderr] 5 | | use audio::sdl2::audio::AudioCallback; [INFO] [stderr] 6 | | pub struct SquareWave { [INFO] [stderr] 7 | | pub phase_inc: f32, [INFO] [stderr] ... | [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/cpu.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod cpu { [INFO] [stderr] 3 | | extern crate rand; [INFO] [stderr] 4 | | ///4K Max rom size. [INFO] [stderr] 5 | | const MEMORY_SIZE: usize = 4096; [INFO] [stderr] ... | [INFO] [stderr] 516 | | ]; [INFO] [stderr] 517 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/cpu.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | return new_chip; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_chip` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:326:76 [INFO] [stderr] | [INFO] [stderr] 326 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:333:76 [INFO] [stderr] | [INFO] [stderr] 333 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:348:76 [INFO] [stderr] | [INFO] [stderr] 348 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:355:76 [INFO] [stderr] | [INFO] [stderr] 355 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | return Some("0".parse::()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some("0".parse::())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | return Some("9".parse::()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some("9".parse::())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | return buffer.to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `buffer.to_vec()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/audio.rs:4:1 [INFO] [stderr] | [INFO] [stderr] 4 | / pub mod audio { [INFO] [stderr] 5 | | use audio::sdl2::audio::AudioCallback; [INFO] [stderr] 6 | | pub struct SquareWave { [INFO] [stderr] 7 | | pub phase_inc: f32, [INFO] [stderr] ... | [INFO] [stderr] 24 | | } [INFO] [stderr] 25 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/cpu.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod cpu { [INFO] [stderr] 3 | | extern crate rand; [INFO] [stderr] 4 | | ///4K Max rom size. [INFO] [stderr] 5 | | const MEMORY_SIZE: usize = 4096; [INFO] [stderr] ... | [INFO] [stderr] 516 | | ]; [INFO] [stderr] 517 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time` [INFO] [stderr] --> src/cpu.rs:15:9 [INFO] [stderr] | [INFO] [stderr] 15 | use std::time; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | return new_chip; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `new_chip` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:221:13 [INFO] [stderr] | [INFO] [stderr] 221 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:326:76 [INFO] [stderr] | [INFO] [stderr] 326 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:333:76 [INFO] [stderr] | [INFO] [stderr] 333 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b00000001 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:348:76 [INFO] [stderr] | [INFO] [stderr] 348 | if self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:355:76 [INFO] [stderr] | [INFO] [stderr] 355 | if self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] & 0b10000000 > 0 { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:26:9 [INFO] [stderr] | [INFO] [stderr] 26 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:34:9 [INFO] [stderr] | [INFO] [stderr] 34 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:43:9 [INFO] [stderr] | [INFO] [stderr] 43 | return Some("0".parse::()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some("0".parse::())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:52:9 [INFO] [stderr] | [INFO] [stderr] 52 | return Some("9".parse::()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some("9".parse::())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | return buffer.to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `buffer.to_vec()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:177:13 [INFO] [stderr] | [INFO] [stderr] 177 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: the loop variable `font_addr` is used to index `CHIP8_FONTSET` [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr 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] 76 | for (font_addr, ) in CHIP8_FONTSET.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&CHIP8_FONTSET[..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 loop variable `prog_addr` is used to index `program` [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 80 | for (prog_addr, ) in program.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try replacing the loop by: `self.memory[512..(program.len() + 512)].clone_from_slice(&program[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:89:32 [INFO] [stderr] | [INFO] [stderr] 89 | self.op_code = (self.memory[self.program_counter as usize] as u16) << (8 as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize])` [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/cpu.rs:90:23 [INFO] [stderr] | [INFO] [stderr] 90 | | self.memory[self.program_counter as usize + 1 as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize + 1 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/cpu.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match key_pressed { [INFO] [stderr] 155 | | Some(key_pressed) => { [INFO] [stderr] 156 | | if self.locked { [INFO] [stderr] 157 | | self.locked = false; [INFO] [stderr] ... | [INFO] [stderr] 163 | | None => (), [INFO] [stderr] 164 | | } [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] 154 | if let Some(key_pressed) = key_pressed { [INFO] [stderr] 155 | if self.locked { [INFO] [stderr] 156 | self.locked = false; [INFO] [stderr] 157 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] 158 | self.program_counter += 2; [INFO] [stderr] 159 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/cpu.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::no_effect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [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/cpu.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | / match key_pressed { [INFO] [stderr] 169 | | Some(key_pressed) => self.key[key_pressed as usize] = 0, [INFO] [stderr] 170 | | None => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(key_pressed) = key_pressed { self.key[key_pressed as usize] = 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:186:36 [INFO] [stderr] | [INFO] [stderr] 186 | self.program_counter = self.cpu_reg[0] as u16 + (self.op_code & 0x0FFF) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `self.op_code as u8` [INFO] [stderr] --> src/cpu.rs:191:17 [INFO] [stderr] | [INFO] [stderr] 191 | (self.op_code as u8 & 0x00FFu8) & rand::random::(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | self.index = (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5)` [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/cpu.rs:231:25 [INFO] [stderr] | [INFO] [stderr] 231 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:25 [INFO] [stderr] | [INFO] [stderr] 241 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:430:39 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 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: the operation is ineffective. Consider reducing it to `self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]` [INFO] [stderr] --> src/cpu.rs:464:17 [INFO] [stderr] | [INFO] [stderr] 464 | (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] / 1) % 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:469:26 [INFO] [stderr] | [INFO] [stderr] 469 | let x: u32 = self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:470:26 [INFO] [stderr] | [INFO] [stderr] 470 | let y: u32 = self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:471:31 [INFO] [stderr] | [INFO] [stderr] 471 | let height: u32 = (self.op_code & 0x000F) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.op_code & 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: the loop variable `font_addr` is used to index `CHIP8_FONTSET` [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr 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] 76 | for (font_addr, ) in CHIP8_FONTSET.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:76:30 [INFO] [stderr] | [INFO] [stderr] 76 | for font_addr in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&CHIP8_FONTSET[..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 loop variable `prog_addr` is used to index `program` [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 80 | for (prog_addr, ) in program.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:80:30 [INFO] [stderr] | [INFO] [stderr] 80 | for prog_addr in 0..program.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try replacing the loop by: `self.memory[512..(program.len() + 512)].clone_from_slice(&program[..])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:89:32 [INFO] [stderr] | [INFO] [stderr] 89 | self.op_code = (self.memory[self.program_counter as usize] as u16) << (8 as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize])` [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/cpu.rs:90:23 [INFO] [stderr] | [INFO] [stderr] 90 | | self.memory[self.program_counter as usize + 1 as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.program_counter as usize + 1 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/cpu.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match key_pressed { [INFO] [stderr] 155 | | Some(key_pressed) => { [INFO] [stderr] 156 | | if self.locked { [INFO] [stderr] 157 | | self.locked = false; [INFO] [stderr] ... | [INFO] [stderr] 163 | | None => (), [INFO] [stderr] 164 | | } [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] 154 | if let Some(key_pressed) = key_pressed { [INFO] [stderr] 155 | if self.locked { [INFO] [stderr] 156 | self.locked = false; [INFO] [stderr] 157 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] 158 | self.program_counter += 2; [INFO] [stderr] 159 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/cpu.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::no_effect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [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/cpu.rs:168:13 [INFO] [stderr] | [INFO] [stderr] 168 | / match key_pressed { [INFO] [stderr] 169 | | Some(key_pressed) => self.key[key_pressed as usize] = 0, [INFO] [stderr] 170 | | None => (), [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Some(key_pressed) = key_pressed { self.key[key_pressed as usize] = 0 }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:39:47 [INFO] [stderr] | [INFO] [stderr] 39 | let splitted = argument.split("=").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:186:36 [INFO] [stderr] | [INFO] [stderr] 186 | self.program_counter = self.cpu_reg[0] as u16 + (self.op_code & 0x0FFF) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[0])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `self.op_code as u8` [INFO] [stderr] --> src/cpu.rs:191:17 [INFO] [stderr] | [INFO] [stderr] 191 | (self.op_code as u8 & 0x00FFu8) & rand::random::(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:196:26 [INFO] [stderr] | [INFO] [stderr] 196 | self.index = (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] * 5)` [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/cpu.rs:231:25 [INFO] [stderr] | [INFO] [stderr] 231 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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 u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:25 [INFO] [stderr] | [INFO] [stderr] 241 | for i in 0..(((self.op_code & 0x0F00) >> 8) + 1) as u32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(((self.op_code & 0x0F00) >> 8) + 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: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let splitted = argument.split("=").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: The function/method `draw` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:146:31 [INFO] [stderr] | [INFO] [stderr] 146 | draw(&mut canvas, &mut cpu.gfx, &all_rects, &texel); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/main.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | pub fn load_file<'a>(filename: String) -> Vec { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:430:39 [INFO] [stderr] | [INFO] [stderr] 430 | self.index = self.index + self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.cpu_reg[((self.op_code & 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: the operation is ineffective. Consider reducing it to `self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize]` [INFO] [stderr] --> src/cpu.rs:464:17 [INFO] [stderr] | [INFO] [stderr] 464 | (self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] / 1) % 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [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/main.rs:212:12 [INFO] [stderr] | [INFO] [stderr] 212 | rects: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Rect]` [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:469:26 [INFO] [stderr] | [INFO] [stderr] 469 | let x: u32 = self.cpu_reg[((self.op_code & 0x0F00) >> 8) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:470:26 [INFO] [stderr] | [INFO] [stderr] 470 | let y: u32 = self.cpu_reg[((self.op_code & 0x00F0) >> 4) as usize] as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.cpu_reg[((self.op_code & 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/cpu.rs:471:31 [INFO] [stderr] | [INFO] [stderr] 471 | let height: u32 = (self.op_code & 0x000F) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(self.op_code & 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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/main.rs:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | / match draw_result { [INFO] [stderr] 221 | | Err(err_string) => println!("SDL Error! {}", err_string), [INFO] [stderr] 222 | | _ => {} [INFO] [stderr] 223 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(err_string) = draw_result { println!("SDL Error! {}", err_string) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:39:47 [INFO] [stderr] | [INFO] [stderr] 39 | let splitted = argument.split("=").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/main.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let splitted = argument.split("=").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: The function/method `draw` doesn't need a mutable reference [INFO] [stderr] --> src/main.rs:146:31 [INFO] [stderr] | [INFO] [stderr] 146 | draw(&mut canvas, &mut cpu.gfx, &all_rects, &texel); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this lifetime isn't used in the function definition [INFO] [stderr] --> src/main.rs:163:18 [INFO] [stderr] | [INFO] [stderr] 163 | pub fn load_file<'a>(filename: String) -> Vec { [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::extra_unused_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#extra_unused_lifetimes [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/main.rs:212:12 [INFO] [stderr] | [INFO] [stderr] 212 | rects: &Vec, [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[Rect]` [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:220:13 [INFO] [stderr] | [INFO] [stderr] 220 | / match draw_result { [INFO] [stderr] 221 | | Err(err_string) => println!("SDL Error! {}", err_string), [INFO] [stderr] 222 | | _ => {} [INFO] [stderr] 223 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(err_string) = draw_result { println!("SDL Error! {}", err_string) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 6.56s [INFO] running `"docker" "inspect" "b745172feb3c0a5da255b34af3c1cf4a617823ebe40c70112d13dd9e89614398"` [INFO] running `"docker" "rm" "-f" "b745172feb3c0a5da255b34af3c1cf4a617823ebe40c70112d13dd9e89614398"` [INFO] [stdout] b745172feb3c0a5da255b34af3c1cf4a617823ebe40c70112d13dd9e89614398