[INFO] updating cached repository taylorcoreyd/chip8 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/taylorcoreyd/chip8 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/taylorcoreyd/chip8" "work/ex/clippy-test-run/sources/stable/gh/taylorcoreyd/chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/taylorcoreyd/chip8'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/taylorcoreyd/chip8" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/taylorcoreyd/chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/taylorcoreyd/chip8'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] da93078a566fa2effdebb8adf959e00fb705a74a [INFO] sha for GitHub repo taylorcoreyd/chip8: da93078a566fa2effdebb8adf959e00fb705a74a [INFO] validating manifest of taylorcoreyd/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 taylorcoreyd/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 taylorcoreyd/chip8 [INFO] finished frobbing taylorcoreyd/chip8 [INFO] frobbed toml for taylorcoreyd/chip8 written to work/ex/clippy-test-run/sources/stable/gh/taylorcoreyd/chip8/Cargo.toml [INFO] started frobbing taylorcoreyd/chip8 [INFO] finished frobbing taylorcoreyd/chip8 [INFO] frobbed toml for taylorcoreyd/chip8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/taylorcoreyd/chip8/Cargo.toml [INFO] crate taylorcoreyd/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 taylorcoreyd/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/taylorcoreyd/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] 154bb5ca3afbe3e902c78bd75dca6acf57bf1ddc845c2bc5c3b6f08e728bc5c0 [INFO] running `"docker" "start" "-a" "154bb5ca3afbe3e902c78bd75dca6acf57bf1ddc845c2bc5c3b6f08e728bc5c0"` [INFO] [stderr] Compiling either v1.5.0 [INFO] [stderr] Compiling phf_shared v0.7.22 [INFO] [stderr] Checking log v0.4.2 [INFO] [stderr] Checking deflate v0.7.18 [INFO] [stderr] Checking rand v0.5.1 [INFO] [stderr] Compiling num-traits v0.2.4 [INFO] [stderr] Checking crossbeam-epoch v0.3.1 [INFO] [stderr] Checking rusttype v0.2.3 [INFO] [stderr] Checking piston2d-graphics v0.21.1 [INFO] [stderr] Compiling phf_generator v0.7.22 [INFO] [stderr] Compiling phf v0.7.22 [INFO] [stderr] Checking tempfile v2.2.0 [INFO] [stderr] Compiling itertools v0.5.10 [INFO] [stderr] Compiling log v0.3.9 [INFO] [stderr] Checking num-rational v0.1.42 [INFO] [stderr] Checking fs2 v0.2.5 [INFO] [stderr] Checking crossbeam-deque v0.2.0 [INFO] [stderr] Compiling phf_codegen v0.7.22 [INFO] [stderr] Checking png v0.9.0 [INFO] [stderr] Checking memmap v0.4.0 [INFO] [stderr] Compiling gl_generator v0.7.0 [INFO] [stderr] Compiling gl_generator v0.6.1 [INFO] [stderr] Compiling gl_generator v0.5.5 [INFO] [stderr] Checking pistoncore-input v0.19.0 [INFO] [stderr] Compiling num-traits v0.1.43 [INFO] [stderr] Compiling target_build_utils v0.3.1 [INFO] [stderr] Checking rayon-core v1.4.0 [INFO] [stderr] Checking pistoncore-window v0.32.0 [INFO] [stderr] Compiling serde_json v0.9.10 [INFO] [stderr] Compiling derivative v1.0.0 [INFO] [stderr] Checking pistoncore-event_loop v0.37.0 [INFO] [stderr] Checking rayon v1.0.1 [INFO] [stderr] Compiling glutin v0.9.2 [INFO] [stderr] Compiling gfx_gl v0.4.0 [INFO] [stderr] Compiling gl v0.6.5 [INFO] [stderr] Checking piston v0.37.0 [INFO] [stderr] Checking pistoncore-window v0.28.0 [INFO] [stderr] Checking pistoncore-event_loop v0.33.0 [INFO] [stderr] Checking jpeg-decoder v0.1.15 [INFO] [stderr] Checking gfx_core v0.7.2 [INFO] [stderr] Checking piston v0.33.0 [INFO] [stderr] Checking image v0.15.0 [INFO] [stderr] Compiling libloading v0.3.4 [INFO] [stderr] Checking dlib v0.3.1 [INFO] [stderr] Checking wayland-sys v0.9.10 [INFO] [stderr] Checking wayland-client v0.9.10 [INFO] [stderr] Checking wayland-protocols v0.9.10 [INFO] [stderr] Checking wayland-kbd v0.9.1 [INFO] [stderr] Checking wayland-window v0.7.0 [INFO] [stderr] Checking winit v0.7.6 [INFO] [stderr] Checking pistoncore-glutin_window v0.39.1 [INFO] [stderr] Checking gfx v0.16.3 [INFO] [stderr] Checking gfx_device_gl v0.14.6 [INFO] [stderr] Checking piston-gfx_texture v0.26.0 [INFO] [stderr] Checking piston2d-gfx_graphics v0.43.0 [INFO] [stderr] Checking piston_window v0.70.0 [INFO] [stderr] Checking chip8 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/cpu.rs:1220:9 [INFO] [stderr] | [INFO] [stderr] 1220 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/cpu.rs:1220:9 [INFO] [stderr] | [INFO] [stderr] 1220 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cpu.rs:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | return cpu; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `cpu` [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:39:9 [INFO] [stderr] | [INFO] [stderr] 39 | return cpu; [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `cpu` [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: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:769:22 [INFO] [stderr] | [INFO] [stderr] 769 | cpu.v[0] = 0b10110011; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1011_0011` [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:770:22 [INFO] [stderr] | [INFO] [stderr] 770 | cpu.v[0xA] = 0b01101001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0110_1001` [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:773:30 [INFO] [stderr] | [INFO] [stderr] 773 | assert_eq!(cpu.v[0], 0b11111011); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1111_1011` [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:780:22 [INFO] [stderr] | [INFO] [stderr] 780 | cpu.v[0xB] = 0b10110011; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1011_0011` [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:781:22 [INFO] [stderr] | [INFO] [stderr] 781 | cpu.v[0xA] = 0b01101001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0110_1001` [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:784:32 [INFO] [stderr] | [INFO] [stderr] 784 | assert_eq!(cpu.v[0xB], 0b00100001); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0010_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:791:22 [INFO] [stderr] | [INFO] [stderr] 791 | cpu.v[0xB] = 0b10110011; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1011_0011` [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:792:22 [INFO] [stderr] | [INFO] [stderr] 792 | cpu.v[0xA] = 0b01101001; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0110_1001` [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:795:32 [INFO] [stderr] | [INFO] [stderr] 795 | assert_eq!(cpu.v[0xB], 0b11011010); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1101_1010` [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:931:20 [INFO] [stderr] | [INFO] [stderr] 931 | cpu.v[4] = 0b11000000; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | self.sound_timer = self.sound_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sound_timer -= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:55:17 [INFO] [stderr] | [INFO] [stderr] 55 | self.delay_timer = self.delay_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.delay_timer -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | for i in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `data[..80].clone_from_slice(&FONT_SPRITES[..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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:78:23 [INFO] [stderr] | [INFO] [stderr] 78 | self.opcode = (self.memory[self.pc] as u16) << 8 | (self.memory[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:78:60 [INFO] [stderr] | [INFO] [stderr] 78 | self.opcode = (self.memory[self.pc] as u16) << 8 | (self.memory[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:22 [INFO] [stderr] | [INFO] [stderr] 241 | self.v[x] = ((self.v[x] as u16) + (self.get_kk() as u16)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:43 [INFO] [stderr] | [INFO] [stderr] 241 | self.v[x] = ((self.v[x] as u16) + (self.get_kk() as u16)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:259:9 [INFO] [stderr] | [INFO] [stderr] 259 | self.v[x] = self.v[x] | self.v[y]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] |= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | self.v[x] = self.v[x] & self.v[y]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] &= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | self.v[x] = self.v[x] ^ self.v[y]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] ^= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:290:19 [INFO] [stderr] | [INFO] [stderr] 290 | let sum = (self.v[x] as u16) + (self.v[y] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:290:40 [INFO] [stderr] | [INFO] [stderr] 290 | let sum = (self.v[x] as u16) + (self.v[y] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[y])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `row_index` is used to index `sprite` [INFO] [stderr] --> src/cpu.rs:416:30 [INFO] [stderr] | [INFO] [stderr] 416 | for row_index in 0 .. n { [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] 416 | for (row_index, ) in sprite.iter().enumerate().take(n) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/cpu.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | / let vxp8; // this clips "vx + 8" so that the maximum value is 64. [INFO] [stderr] 422 | | if vx + 8 > 64 { vxp8 = 64; } else { vxp8 = vx + 8; } [INFO] [stderr] | |_____________________________________________________________________^ help: it is more idiomatic to write: `let vxp8 = if vx + 8 > 64 { 64 } else { vx + 8 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the loop variable `pixel` is used to index `row_slice` [INFO] [stderr] --> src/cpu.rs:428:30 [INFO] [stderr] | [INFO] [stderr] 428 | for pixel in 0..row_slice.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] 428 | for (pixel, ) in row_slice.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:436:25 [INFO] [stderr] | [INFO] [stderr] 436 | row_slice[pixel] = row_slice[pixel] ^ sprite_pixel; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `row_slice[pixel] ^= sprite_pixel` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:509:9 [INFO] [stderr] | [INFO] [stderr] 509 | self.i = self.i + self.v[self.get_x() as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.i += self.v[self.get_x() as usize] as u16` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:509:27 [INFO] [stderr] | [INFO] [stderr] 509 | self.i = self.i + self.v[self.get_x() as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[self.get_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:517:18 [INFO] [stderr] | [INFO] [stderr] 517 | self.i = (self.v[self.get_x() as usize] * 5) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[self.get_x() 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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:538:17 [INFO] [stderr] | [INFO] [stderr] 538 | let x = self.get_x() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_x())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:551:17 [INFO] [stderr] | [INFO] [stderr] 551 | let x = self.get_x() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_x())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:67:21 [INFO] [stderr] | [INFO] [stderr] 67 | / let pixel_color; [INFO] [stderr] 68 | | if pixel { [INFO] [stderr] 69 | | pixel_color = white; [INFO] [stderr] 70 | | } else { [INFO] [stderr] 71 | | pixel_color = black; [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let pixel_color = if pixel { white } else { black };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:52:17 [INFO] [stderr] | [INFO] [stderr] 52 | self.sound_timer = self.sound_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sound_timer -= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:55:17 [INFO] [stderr] | [INFO] [stderr] 55 | self.delay_timer = self.delay_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.delay_timer -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:68:18 [INFO] [stderr] | [INFO] [stderr] 68 | for i in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `data[..80].clone_from_slice(&FONT_SPRITES[..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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:78:23 [INFO] [stderr] | [INFO] [stderr] 78 | self.opcode = (self.memory[self.pc] as u16) << 8 | (self.memory[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:78:60 [INFO] [stderr] | [INFO] [stderr] 78 | self.opcode = (self.memory[self.pc] as u16) << 8 | (self.memory[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.memory[self.pc + 1])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:22 [INFO] [stderr] | [INFO] [stderr] 241 | self.v[x] = ((self.v[x] as u16) + (self.get_kk() as u16)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:43 [INFO] [stderr] | [INFO] [stderr] 241 | self.v[x] = ((self.v[x] as u16) + (self.get_kk() as u16)) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:259:9 [INFO] [stderr] | [INFO] [stderr] 259 | self.v[x] = self.v[x] | self.v[y]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] |= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:268:9 [INFO] [stderr] | [INFO] [stderr] 268 | self.v[x] = self.v[x] & self.v[y]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] &= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:277:9 [INFO] [stderr] | [INFO] [stderr] 277 | self.v[x] = self.v[x] ^ self.v[y]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] ^= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:290:19 [INFO] [stderr] | [INFO] [stderr] 290 | let sum = (self.v[x] as u16) + (self.v[y] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:290:40 [INFO] [stderr] | [INFO] [stderr] 290 | let sum = (self.v[x] as u16) + (self.v[y] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[y])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `row_index` is used to index `sprite` [INFO] [stderr] --> src/cpu.rs:416:30 [INFO] [stderr] | [INFO] [stderr] 416 | for row_index in 0 .. n { [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] 416 | for (row_index, ) in sprite.iter().enumerate().take(n) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/cpu.rs:421:17 [INFO] [stderr] | [INFO] [stderr] 421 | / let vxp8; // this clips "vx + 8" so that the maximum value is 64. [INFO] [stderr] 422 | | if vx + 8 > 64 { vxp8 = 64; } else { vxp8 = vx + 8; } [INFO] [stderr] | |_____________________________________________________________________^ help: it is more idiomatic to write: `let vxp8 = if vx + 8 > 64 { 64 } else { vx + 8 };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the loop variable `pixel` is used to index `row_slice` [INFO] [stderr] --> src/cpu.rs:428:30 [INFO] [stderr] | [INFO] [stderr] 428 | for pixel in 0..row_slice.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] 428 | for (pixel, ) in row_slice.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:436:25 [INFO] [stderr] | [INFO] [stderr] 436 | row_slice[pixel] = row_slice[pixel] ^ sprite_pixel; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `row_slice[pixel] ^= sprite_pixel` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:509:9 [INFO] [stderr] | [INFO] [stderr] 509 | self.i = self.i + self.v[self.get_x() as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.i += self.v[self.get_x() as usize] as u16` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:509:27 [INFO] [stderr] | [INFO] [stderr] 509 | self.i = self.i + self.v[self.get_x() as usize] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[self.get_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:517:18 [INFO] [stderr] | [INFO] [stderr] 517 | self.i = (self.v[self.get_x() as usize] * 5) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[self.get_x() 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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:538:17 [INFO] [stderr] | [INFO] [stderr] 538 | let x = self.get_x() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_x())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:551:17 [INFO] [stderr] | [INFO] [stderr] 551 | let x = self.get_x() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_x())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `results` [INFO] [stderr] --> src/cpu.rs:598:18 [INFO] [stderr] | [INFO] [stderr] 598 | for i in 0..4096 { [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] 598 | for (i, ) in results.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `empty_disp` [INFO] [stderr] --> src/cpu.rs:1033:18 [INFO] [stderr] | [INFO] [stderr] 1033 | for i in 0..32 { [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] 1033 | for (i, ) in empty_disp.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:67:21 [INFO] [stderr] | [INFO] [stderr] 67 | / let pixel_color; [INFO] [stderr] 68 | | if pixel { [INFO] [stderr] 69 | | pixel_color = white; [INFO] [stderr] 70 | | } else { [INFO] [stderr] 71 | | pixel_color = black; [INFO] [stderr] 72 | | } [INFO] [stderr] | |_____________________^ help: it is more idiomatic to write: `let pixel_color = if pixel { white } else { black };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1m 46s [INFO] running `"docker" "inspect" "154bb5ca3afbe3e902c78bd75dca6acf57bf1ddc845c2bc5c3b6f08e728bc5c0"` [INFO] running `"docker" "rm" "-f" "154bb5ca3afbe3e902c78bd75dca6acf57bf1ddc845c2bc5c3b6f08e728bc5c0"` [INFO] [stdout] 154bb5ca3afbe3e902c78bd75dca6acf57bf1ddc845c2bc5c3b6f08e728bc5c0