[INFO] updating cached repository foxbot/chip8 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/foxbot/chip8 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/foxbot/chip8" "work/ex/clippy-test-run/sources/stable/gh/foxbot/chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/foxbot/chip8'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/foxbot/chip8" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/foxbot/chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/foxbot/chip8'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 288dc94d6af7c09f41f20a9a37bfcfdf69cab6b3 [INFO] sha for GitHub repo foxbot/chip8: 288dc94d6af7c09f41f20a9a37bfcfdf69cab6b3 [INFO] validating manifest of foxbot/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 foxbot/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 foxbot/chip8 [INFO] finished frobbing foxbot/chip8 [INFO] frobbed toml for foxbot/chip8 written to work/ex/clippy-test-run/sources/stable/gh/foxbot/chip8/Cargo.toml [INFO] started frobbing foxbot/chip8 [INFO] finished frobbing foxbot/chip8 [INFO] frobbed toml for foxbot/chip8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/foxbot/chip8/Cargo.toml [INFO] crate foxbot/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 foxbot/chip8 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/foxbot/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] 970654c0e3750656cd8bd478e15b8bffe214268e61e98264db5bb726cce59208 [INFO] running `"docker" "start" "-a" "970654c0e3750656cd8bd478e15b8bffe214268e61e98264db5bb726cce59208"` [INFO] [stderr] Checking chip8 v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: the loop variable `i` is used to index `FONT` [INFO] [stderr] --> src/cpu.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..80 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 60 | for (i, ) in FONT.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `cpu.mem[..80].clone_from_slice(&FONT[..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] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/cpu.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | f.read(&mut rom).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `rom` [INFO] [stderr] --> src/cpu.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | for i in 0..size { [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] 76 | for (i, ) in rom.iter().enumerate().take(size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `self.mem[512..(size + 512)].clone_from_slice(&rom[..size])` [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: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/cpu.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / pub fn cycle(&mut self) { [INFO] [stderr] 84 | | let op: u16 = ((self.mem[self.pc] as u16) << 8) | (self.mem[self.pc + 1] as u16); [INFO] [stderr] 85 | | self.op = op; // TOOD: needed? [INFO] [stderr] 86 | | [INFO] [stderr] ... | [INFO] [stderr] 435 | | } [INFO] [stderr] 436 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:84:24 [INFO] [stderr] | [INFO] [stderr] 84 | let op: u16 = ((self.mem[self.pc] as u16) << 8) | (self.mem[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem[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:84:59 [INFO] [stderr] | [INFO] [stderr] 84 | let op: u16 = ((self.mem[self.pc] as u16) << 8) | (self.mem[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem[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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:98:25 [INFO] [stderr] | [INFO] [stderr] 98 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:103:29 [INFO] [stderr] | [INFO] [stderr] 103 | self.sp = self.sp - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp -= 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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | self.sp = self.sp + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp += 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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:131:21 [INFO] [stderr] | [INFO] [stderr] 131 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:133:17 [INFO] [stderr] | [INFO] [stderr] 133 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:140:21 [INFO] [stderr] | [INFO] [stderr] 140 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:142:17 [INFO] [stderr] | [INFO] [stderr] 142 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:149:21 [INFO] [stderr] | [INFO] [stderr] 149 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:151:17 [INFO] [stderr] | [INFO] [stderr] 151 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:166:17 [INFO] [stderr] | [INFO] [stderr] 166 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:181:25 [INFO] [stderr] | [INFO] [stderr] 181 | self.reg[vx] = self.reg[vx] | self.reg[vy]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.reg[vx] |= self.reg[vy]` [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:187:25 [INFO] [stderr] | [INFO] [stderr] 187 | self.reg[vx] = self.reg[vx] & self.reg[vy]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.reg[vx] &= self.reg[vy]` [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:193:25 [INFO] [stderr] | [INFO] [stderr] 193 | self.reg[vx] = self.reg[vx] ^ self.reg[vy]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.reg[vx] ^= self.reg[vy]` [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/cpu.rs:202:32 [INFO] [stderr] | [INFO] [stderr] 202 | if let None = x.checked_add(y) { [INFO] [stderr] | _________________________- ^^^^ [INFO] [stderr] 203 | | self.reg[vx] = x.saturating_add(y); [INFO] [stderr] 204 | | self.reg[0xF] = 1; [INFO] [stderr] 205 | | } else { [INFO] [stderr] 206 | | self.reg[vx] = x + y; [INFO] [stderr] 207 | | self.reg[0xF] = 0; [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________________________- help: try this: `if x.checked_add(y).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:256:17 [INFO] [stderr] | [INFO] [stderr] 256 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:263:21 [INFO] [stderr] | [INFO] [stderr] 263 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:265:17 [INFO] [stderr] | [INFO] [stderr] 265 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:271:17 [INFO] [stderr] | [INFO] [stderr] 271 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:276:28 [INFO] [stderr] | [INFO] [stderr] 276 | self.pc = (self.reg[0] as u16 + val) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:285:17 [INFO] [stderr] | [INFO] [stderr] 285 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:301:33 [INFO] [stderr] | [INFO] [stderr] 301 | tx = tx - GFX_COLS; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tx -= GFX_COLS` [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:313:17 [INFO] [stderr] | [INFO] [stderr] 313 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:322:29 [INFO] [stderr] | [INFO] [stderr] 322 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:324:25 [INFO] [stderr] | [INFO] [stderr] 324 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:330:29 [INFO] [stderr] | [INFO] [stderr] 330 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:332:25 [INFO] [stderr] | [INFO] [stderr] 332 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:346:25 [INFO] [stderr] | [INFO] [stderr] 346 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:354:33 [INFO] [stderr] | [INFO] [stderr] 354 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:363:25 [INFO] [stderr] | [INFO] [stderr] 363 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:369:25 [INFO] [stderr] | [INFO] [stderr] 369 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:374:25 [INFO] [stderr] | [INFO] [stderr] 374 | self.idx = self.idx + (self.reg[vx] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.idx += (self.reg[vx] 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:374:47 [INFO] [stderr] | [INFO] [stderr] 374 | self.idx = self.idx + (self.reg[vx] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.reg[vx])` [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:375:25 [INFO] [stderr] | [INFO] [stderr] 375 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:381:25 [INFO] [stderr] | [INFO] [stderr] 381 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:393:25 [INFO] [stderr] | [INFO] [stderr] 393 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:400:34 [INFO] [stderr] | [INFO] [stderr] 400 | for o in 0..vx { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.mem[i..(vx + i)].clone_from_slice(&self.reg[..vx])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:403:25 [INFO] [stderr] | [INFO] [stderr] 403 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:413:25 [INFO] [stderr] | [INFO] [stderr] 413 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:427:13 [INFO] [stderr] | [INFO] [stderr] 427 | self.del_timer = self.del_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.del_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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | self.snd_timer = self.snd_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.snd_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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `chip8`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: the loop variable `i` is used to index `FONT` [INFO] [stderr] --> src/cpu.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..80 { [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 60 | for (i, ) in FONT.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:60:18 [INFO] [stderr] | [INFO] [stderr] 60 | for i in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `cpu.mem[..80].clone_from_slice(&FONT[..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] error: handle read amount returned or use `Read::read_exact` instead [INFO] [stderr] --> src/cpu.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | f.read(&mut rom).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `rom` [INFO] [stderr] --> src/cpu.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | for i in 0..size { [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] 76 | for (i, ) in rom.iter().enumerate().take(size) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:76:18 [INFO] [stderr] | [INFO] [stderr] 76 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `self.mem[512..(size + 512)].clone_from_slice(&rom[..size])` [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: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/cpu.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | / pub fn cycle(&mut self) { [INFO] [stderr] 84 | | let op: u16 = ((self.mem[self.pc] as u16) << 8) | (self.mem[self.pc + 1] as u16); [INFO] [stderr] 85 | | self.op = op; // TOOD: needed? [INFO] [stderr] 86 | | [INFO] [stderr] ... | [INFO] [stderr] 435 | | } [INFO] [stderr] 436 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:84:24 [INFO] [stderr] | [INFO] [stderr] 84 | let op: u16 = ((self.mem[self.pc] as u16) << 8) | (self.mem[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem[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:84:59 [INFO] [stderr] | [INFO] [stderr] 84 | let op: u16 = ((self.mem[self.pc] as u16) << 8) | (self.mem[self.pc + 1] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem[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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:98:25 [INFO] [stderr] | [INFO] [stderr] 98 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:103:29 [INFO] [stderr] | [INFO] [stderr] 103 | self.sp = self.sp - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp -= 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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:121:17 [INFO] [stderr] | [INFO] [stderr] 121 | self.sp = self.sp + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp += 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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:131:21 [INFO] [stderr] | [INFO] [stderr] 131 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:133:17 [INFO] [stderr] | [INFO] [stderr] 133 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:140:21 [INFO] [stderr] | [INFO] [stderr] 140 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:142:17 [INFO] [stderr] | [INFO] [stderr] 142 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:149:21 [INFO] [stderr] | [INFO] [stderr] 149 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:151:17 [INFO] [stderr] | [INFO] [stderr] 151 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:166:17 [INFO] [stderr] | [INFO] [stderr] 166 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:181:25 [INFO] [stderr] | [INFO] [stderr] 181 | self.reg[vx] = self.reg[vx] | self.reg[vy]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.reg[vx] |= self.reg[vy]` [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:187:25 [INFO] [stderr] | [INFO] [stderr] 187 | self.reg[vx] = self.reg[vx] & self.reg[vy]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.reg[vx] &= self.reg[vy]` [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:193:25 [INFO] [stderr] | [INFO] [stderr] 193 | self.reg[vx] = self.reg[vx] ^ self.reg[vy]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.reg[vx] ^= self.reg[vy]` [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: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/cpu.rs:202:32 [INFO] [stderr] | [INFO] [stderr] 202 | if let None = x.checked_add(y) { [INFO] [stderr] | _________________________- ^^^^ [INFO] [stderr] 203 | | self.reg[vx] = x.saturating_add(y); [INFO] [stderr] 204 | | self.reg[0xF] = 1; [INFO] [stderr] 205 | | } else { [INFO] [stderr] 206 | | self.reg[vx] = x + y; [INFO] [stderr] 207 | | self.reg[0xF] = 0; [INFO] [stderr] 208 | | } [INFO] [stderr] | |_________________________- help: try this: `if x.checked_add(y).is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:256:17 [INFO] [stderr] | [INFO] [stderr] 256 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:263:21 [INFO] [stderr] | [INFO] [stderr] 263 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:265:17 [INFO] [stderr] | [INFO] [stderr] 265 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:271:17 [INFO] [stderr] | [INFO] [stderr] 271 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:276:28 [INFO] [stderr] | [INFO] [stderr] 276 | self.pc = (self.reg[0] as u16 + val) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:285:17 [INFO] [stderr] | [INFO] [stderr] 285 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:301:33 [INFO] [stderr] | [INFO] [stderr] 301 | tx = tx - GFX_COLS; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `tx -= GFX_COLS` [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:313:17 [INFO] [stderr] | [INFO] [stderr] 313 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:322:29 [INFO] [stderr] | [INFO] [stderr] 322 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:324:25 [INFO] [stderr] | [INFO] [stderr] 324 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:330:29 [INFO] [stderr] | [INFO] [stderr] 330 | self.pc = self.pc + 4; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 4` [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:332:25 [INFO] [stderr] | [INFO] [stderr] 332 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:346:25 [INFO] [stderr] | [INFO] [stderr] 346 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:354:33 [INFO] [stderr] | [INFO] [stderr] 354 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:363:25 [INFO] [stderr] | [INFO] [stderr] 363 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:369:25 [INFO] [stderr] | [INFO] [stderr] 369 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:374:25 [INFO] [stderr] | [INFO] [stderr] 374 | self.idx = self.idx + (self.reg[vx] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.idx += (self.reg[vx] 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:374:47 [INFO] [stderr] | [INFO] [stderr] 374 | self.idx = self.idx + (self.reg[vx] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.reg[vx])` [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:375:25 [INFO] [stderr] | [INFO] [stderr] 375 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:381:25 [INFO] [stderr] | [INFO] [stderr] 381 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:393:25 [INFO] [stderr] | [INFO] [stderr] 393 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:400:34 [INFO] [stderr] | [INFO] [stderr] 400 | for o in 0..vx { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.mem[i..(vx + i)].clone_from_slice(&self.reg[..vx])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:403:25 [INFO] [stderr] | [INFO] [stderr] 403 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:413:25 [INFO] [stderr] | [INFO] [stderr] 413 | self.pc = self.pc + 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 2` [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:427:13 [INFO] [stderr] | [INFO] [stderr] 427 | self.del_timer = self.del_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.del_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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:434:13 [INFO] [stderr] | [INFO] [stderr] 434 | self.snd_timer = self.snd_timer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.snd_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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `chip8`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "970654c0e3750656cd8bd478e15b8bffe214268e61e98264db5bb726cce59208"` [INFO] running `"docker" "rm" "-f" "970654c0e3750656cd8bd478e15b8bffe214268e61e98264db5bb726cce59208"` [INFO] [stdout] 970654c0e3750656cd8bd478e15b8bffe214268e61e98264db5bb726cce59208