[INFO] updating cached repository Rowmance/Chip8 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Rowmance/Chip8 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Rowmance/Chip8" "work/ex/clippy-test-run/sources/stable/gh/Rowmance/Chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Rowmance/Chip8'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Rowmance/Chip8" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Rowmance/Chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Rowmance/Chip8'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 402a8ba49253521f7d64cf9b201b74a452826c5f [INFO] sha for GitHub repo Rowmance/Chip8: 402a8ba49253521f7d64cf9b201b74a452826c5f [INFO] validating manifest of Rowmance/Chip8 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 Rowmance/Chip8 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 Rowmance/Chip8 [INFO] finished frobbing Rowmance/Chip8 [INFO] frobbed toml for Rowmance/Chip8 written to work/ex/clippy-test-run/sources/stable/gh/Rowmance/Chip8/Cargo.toml [INFO] started frobbing Rowmance/Chip8 [INFO] finished frobbing Rowmance/Chip8 [INFO] frobbed toml for Rowmance/Chip8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Rowmance/Chip8/Cargo.toml [INFO] crate Rowmance/Chip8 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 Rowmance/Chip8 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Rowmance/Chip8:/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] c086d7bf2638bc2196bc264feeccfddd78824db6c30654c40e74405ec3128c27 [INFO] running `"docker" "start" "-a" "c086d7bf2638bc2196bc264feeccfddd78824db6c30654c40e74405ec3128c27"` [INFO] [stderr] Checking chip8 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:260:45 [INFO] [stderr] | [INFO] [stderr] 260 | self.v[0xF] = (self.v[x as usize] & 0b10000000) >> 7; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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: unneeded return statement [INFO] [stderr] --> src/graphics.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | return state && !self.memory[index]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `state && !self.memory[index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::event::Event` [INFO] [stderr] --> src/keypad.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use sdl2::event::Event; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `graphics::Graphics` [INFO] [stderr] --> src/io.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use graphics::Graphics; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::rect::Point` [INFO] [stderr] --> src/io.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use sdl2::rect::Point; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/io.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `graphics::Graphics` [INFO] [stderr] --> src/main.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use graphics::Graphics; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `keypad::Keypad` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use keypad::Keypad; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:260:45 [INFO] [stderr] | [INFO] [stderr] 260 | self.v[0xF] = (self.v[x as usize] & 0b10000000) >> 7; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1000_0000` [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: unneeded return statement [INFO] [stderr] --> src/graphics.rs:24:9 [INFO] [stderr] | [INFO] [stderr] 24 | return state && !self.memory[index]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `state && !self.memory[index]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::event::Event` [INFO] [stderr] --> src/keypad.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use sdl2::event::Event; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `graphics::Graphics` [INFO] [stderr] --> src/io.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use graphics::Graphics; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `sdl2::rect::Point` [INFO] [stderr] --> src/io.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use sdl2::rect::Point; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::time::Duration` [INFO] [stderr] --> src/io.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::time::Duration; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `graphics::Graphics` [INFO] [stderr] --> src/main.rs:14:5 [INFO] [stderr] | [INFO] [stderr] 14 | use graphics::Graphics; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `keypad::Keypad` [INFO] [stderr] --> src/main.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | use keypad::Keypad; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `ld_key` [INFO] [stderr] --> src/cpu.rs:318:5 [INFO] [stderr] | [INFO] [stderr] 318 | fn ld_key(&mut self, x: u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `PONG` [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | / const PONG: [u8; 246] = [ [INFO] [stderr] 21 | | 0x6a, 0x02, 0x6b, 0x0c, 0x6c, 0x3f, 0x6d, 0x0c, 0xa2, 0xea, 0xda, 0xb6, 0xdc, 0xd6, 0x6e, 0x00, [INFO] [stderr] 22 | | 0x22, 0xd4, 0x66, 0x03, 0x68, 0x02, 0x60, 0x60, 0xf0, 0x15, 0xf0, 0x07, 0x30, 0x00, 0x12, 0x1a, [INFO] [stderr] 23 | | 0xc7, 0x17, 0x77, 0x08, 0x69, 0xff, 0xa2, 0xf0, 0xd6, 0x71, 0xa2, 0xea, 0xda, 0xb6, 0xdc, 0xd6, [INFO] [stderr] ... | [INFO] [stderr] 36 | | 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 [INFO] [stderr] 37 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TEST` [INFO] [stderr] --> src/main.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / const TEST: [u8; 470] = [ [INFO] [stderr] 40 | | 0x00, 0xe0, 0x63, 0x00, 0x64, 0x01, 0x65, 0xee, 0x35, 0xee, 0x13, 0x10, 0x63, 0x00, 0x64, 0x02, [INFO] [stderr] 41 | | 0x65, 0xee, 0x66, 0xee, 0x55, 0x60, 0x13, 0x10, 0x63, 0x00, 0x64, 0x03, 0x65, 0xee, 0x45, 0xfd, [INFO] [stderr] 42 | | 0x13, 0x10, 0x63, 0x00, 0x64, 0x04, 0x65, 0xee, 0x75, 0x01, 0x35, 0xef, 0x13, 0x10, 0x63, 0x00, [INFO] [stderr] ... | [INFO] [stderr] 69 | | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 [INFO] [stderr] 70 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TEST2` [INFO] [stderr] --> src/main.rs:72:1 [INFO] [stderr] | [INFO] [stderr] 72 | / const TEST2: [u8; 176] = [ [INFO] [stderr] 73 | | 0x22, 0x80, 0xcc, 0x01, 0x4c, 0x01, 0x12, 0x16, 0xca, 0x3e, 0x6b, 0x02, 0x4a, 0x00, 0x12, 0x02, [INFO] [stderr] 74 | | 0xa2, 0xa1, 0xda, 0xb1, 0x12, 0x24, 0xcb, 0x1e, 0x6a, 0x02, 0x4b, 0x00, 0x12, 0x02, 0xa2, 0xa1, [INFO] [stderr] 75 | | 0xda, 0xb1, 0x00, 0x00, 0xcd, 0x03, 0x4d, 0x00, 0x7a, 0xff, 0x4a, 0x01, 0x7a, 0x02, 0x4d, 0x01, [INFO] [stderr] ... | [INFO] [stderr] 83 | | 0xff, 0x80, 0x6b, 0x01, 0xa2, 0xa1, 0xda, 0xb1, 0x7b, 0x01, 0x3b, 0x1f, 0x12, 0xa4, 0x00, 0xee [INFO] [stderr] 84 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cpu::Cpu` [INFO] [stderr] --> src/cpu.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / pub fn new() -> Self { [INFO] [stderr] 49 | | let mut initial_memory = [0; 4096]; [INFO] [stderr] 50 | | for i in 0..FONT_SET.len() { [INFO] [stderr] 51 | | initial_memory[i] = FONT_SET[i]; [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 46 | impl Default for cpu::Cpu { [INFO] [stderr] 47 | fn default() -> Self { [INFO] [stderr] 48 | Self::new() [INFO] [stderr] 49 | } [INFO] [stderr] 50 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 0..FONT_SET.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `initial_memory[..FONT_SET.len()].clone_from_slice(&FONT_SET[..])` [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 `x` is used to index `rom` [INFO] [stderr] --> src/cpu.rs:72:18 [INFO] [stderr] | [INFO] [stderr] 72 | for x in 0..rom.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 72 | for (x, ) in rom.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:81:21 [INFO] [stderr] | [INFO] [stderr] 81 | let part1 = self.memory[self.pc as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc 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:82:21 [INFO] [stderr] | [INFO] [stderr] 82 | let part2 = self.memory[self.pc as usize + 1] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc as usize + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:194:18 [INFO] [stderr] | [INFO] [stderr] 194 | let vx = self.v[x as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:195:27 [INFO] [stderr] | [INFO] [stderr] 195 | let result = vx + (kk as u16); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(kk)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:227:18 [INFO] [stderr] | [INFO] [stderr] 227 | let vx = self.v[x as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:228:18 [INFO] [stderr] | [INFO] [stderr] 228 | let vy = self.v[y as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[y as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:278:26 [INFO] [stderr] | [INFO] [stderr] 278 | self.pc = addr + self.v[0] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:341:19 [INFO] [stderr] | [INFO] [stderr] 341 | self.i += self.v[x as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:348:18 [INFO] [stderr] | [INFO] [stderr] 348 | self.i = self.v[x as usize] as u16 * 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x 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: this call to `as_ref` does nothing [INFO] [stderr] --> src/graphics.rs:43:30 [INFO] [stderr] | [INFO] [stderr] 43 | str.push_str(strbit.as_ref()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `strbit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `graphics::Graphics` [INFO] [stderr] --> src/graphics.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | / pub fn new() -> Self { [INFO] [stderr] 54 | | Graphics { [INFO] [stderr] 55 | | memory: [false; (WIDTH * HEIGHT) as usize] [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | impl Default for graphics::Graphics { [INFO] [stderr] 52 | fn default() -> Self { [INFO] [stderr] 53 | Self::new() [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `yy` is used to index `bytes` [INFO] [stderr] --> src/graphics.rs:73:19 [INFO] [stderr] | [INFO] [stderr] 73 | for yy in 0..bytes.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] 73 | for (yy, ) in bytes.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/io.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | self.canvas.fill_rect(Rect::new((x * SCALE) as i32, (y * SCALE) as i32, SCALE, SCALE)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] warning: method is never used: `ld_key` [INFO] [stderr] --> src/cpu.rs:318:5 [INFO] [stderr] | [INFO] [stderr] 318 | fn ld_key(&mut self, x: u8) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `PONG` [INFO] [stderr] --> src/main.rs:20:1 [INFO] [stderr] | [INFO] [stderr] 20 | / const PONG: [u8; 246] = [ [INFO] [stderr] 21 | | 0x6a, 0x02, 0x6b, 0x0c, 0x6c, 0x3f, 0x6d, 0x0c, 0xa2, 0xea, 0xda, 0xb6, 0xdc, 0xd6, 0x6e, 0x00, [INFO] [stderr] 22 | | 0x22, 0xd4, 0x66, 0x03, 0x68, 0x02, 0x60, 0x60, 0xf0, 0x15, 0xf0, 0x07, 0x30, 0x00, 0x12, 0x1a, [INFO] [stderr] 23 | | 0xc7, 0x17, 0x77, 0x08, 0x69, 0xff, 0xa2, 0xf0, 0xd6, 0x71, 0xa2, 0xea, 0xda, 0xb6, 0xdc, 0xd6, [INFO] [stderr] ... | [INFO] [stderr] 36 | | 0x80, 0x00, 0x00, 0x00, 0x00, 0x00 [INFO] [stderr] 37 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TEST` [INFO] [stderr] --> src/main.rs:39:1 [INFO] [stderr] | [INFO] [stderr] 39 | / const TEST: [u8; 470] = [ [INFO] [stderr] 40 | | 0x00, 0xe0, 0x63, 0x00, 0x64, 0x01, 0x65, 0xee, 0x35, 0xee, 0x13, 0x10, 0x63, 0x00, 0x64, 0x02, [INFO] [stderr] 41 | | 0x65, 0xee, 0x66, 0xee, 0x55, 0x60, 0x13, 0x10, 0x63, 0x00, 0x64, 0x03, 0x65, 0xee, 0x45, 0xfd, [INFO] [stderr] 42 | | 0x13, 0x10, 0x63, 0x00, 0x64, 0x04, 0x65, 0xee, 0x75, 0x01, 0x35, 0xef, 0x13, 0x10, 0x63, 0x00, [INFO] [stderr] ... | [INFO] [stderr] 69 | | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 [INFO] [stderr] 70 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: constant item is never used: `TEST2` [INFO] [stderr] --> src/main.rs:72:1 [INFO] [stderr] | [INFO] [stderr] 72 | / const TEST2: [u8; 176] = [ [INFO] [stderr] 73 | | 0x22, 0x80, 0xcc, 0x01, 0x4c, 0x01, 0x12, 0x16, 0xca, 0x3e, 0x6b, 0x02, 0x4a, 0x00, 0x12, 0x02, [INFO] [stderr] 74 | | 0xa2, 0xa1, 0xda, 0xb1, 0x12, 0x24, 0xcb, 0x1e, 0x6a, 0x02, 0x4b, 0x00, 0x12, 0x02, 0xa2, 0xa1, [INFO] [stderr] 75 | | 0xda, 0xb1, 0x00, 0x00, 0xcd, 0x03, 0x4d, 0x00, 0x7a, 0xff, 0x4a, 0x01, 0x7a, 0x02, 0x4d, 0x01, [INFO] [stderr] ... | [INFO] [stderr] 83 | | 0xff, 0x80, 0x6b, 0x01, 0xa2, 0xa1, 0xda, 0xb1, 0x7b, 0x01, 0x3b, 0x1f, 0x12, 0xa4, 0x00, 0xee [INFO] [stderr] 84 | | ]; [INFO] [stderr] | |__^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cpu::Cpu` [INFO] [stderr] --> src/cpu.rs:48:5 [INFO] [stderr] | [INFO] [stderr] 48 | / pub fn new() -> Self { [INFO] [stderr] 49 | | let mut initial_memory = [0; 4096]; [INFO] [stderr] 50 | | for i in 0..FONT_SET.len() { [INFO] [stderr] 51 | | initial_memory[i] = FONT_SET[i]; [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 46 | impl Default for cpu::Cpu { [INFO] [stderr] 47 | fn default() -> Self { [INFO] [stderr] 48 | Self::new() [INFO] [stderr] 49 | } [INFO] [stderr] 50 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 0..FONT_SET.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try replacing the loop by: `initial_memory[..FONT_SET.len()].clone_from_slice(&FONT_SET[..])` [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 `x` is used to index `rom` [INFO] [stderr] --> src/cpu.rs:72:18 [INFO] [stderr] | [INFO] [stderr] 72 | for x in 0..rom.len() { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 72 | for (x, ) in rom.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:81:21 [INFO] [stderr] | [INFO] [stderr] 81 | let part1 = self.memory[self.pc as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc 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:82:21 [INFO] [stderr] | [INFO] [stderr] 82 | let part2 = self.memory[self.pc as usize + 1] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc as usize + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:194:18 [INFO] [stderr] | [INFO] [stderr] 194 | let vx = self.v[x as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:195:27 [INFO] [stderr] | [INFO] [stderr] 195 | let result = vx + (kk as u16); [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(kk)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:227:18 [INFO] [stderr] | [INFO] [stderr] 227 | let vx = self.v[x as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:228:18 [INFO] [stderr] | [INFO] [stderr] 228 | let vy = self.v[y as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[y as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:278:26 [INFO] [stderr] | [INFO] [stderr] 278 | self.pc = addr + self.v[0] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:341:19 [INFO] [stderr] | [INFO] [stderr] 341 | self.i += self.v[x as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:348:18 [INFO] [stderr] | [INFO] [stderr] 348 | self.i = self.v[x as usize] as u16 * 5; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x 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: this call to `as_ref` does nothing [INFO] [stderr] --> src/graphics.rs:43:30 [INFO] [stderr] | [INFO] [stderr] 43 | str.push_str(strbit.as_ref()); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try this: `strbit` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_asref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_asref [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `graphics::Graphics` [INFO] [stderr] --> src/graphics.rs:53:5 [INFO] [stderr] | [INFO] [stderr] 53 | / pub fn new() -> Self { [INFO] [stderr] 54 | | Graphics { [INFO] [stderr] 55 | | memory: [false; (WIDTH * HEIGHT) as usize] [INFO] [stderr] 56 | | } [INFO] [stderr] 57 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | impl Default for graphics::Graphics { [INFO] [stderr] 52 | fn default() -> Self { [INFO] [stderr] 53 | Self::new() [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `yy` is used to index `bytes` [INFO] [stderr] --> src/graphics.rs:73:19 [INFO] [stderr] | [INFO] [stderr] 73 | for yy in 0..bytes.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] 73 | for (yy, ) in bytes.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused `std::result::Result` that must be used [INFO] [stderr] --> src/io.rs:53:17 [INFO] [stderr] | [INFO] [stderr] 53 | self.canvas.fill_rect(Rect::new((x * SCALE) as i32, (y * SCALE) as i32, SCALE, SCALE)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.14s [INFO] running `"docker" "inspect" "c086d7bf2638bc2196bc264feeccfddd78824db6c30654c40e74405ec3128c27"` [INFO] running `"docker" "rm" "-f" "c086d7bf2638bc2196bc264feeccfddd78824db6c30654c40e74405ec3128c27"` [INFO] [stdout] c086d7bf2638bc2196bc264feeccfddd78824db6c30654c40e74405ec3128c27