[INFO] updating cached repository hfcredidio/chip8rs [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/hfcredidio/chip8rs [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/hfcredidio/chip8rs" "work/ex/clippy-test-run/sources/stable/gh/hfcredidio/chip8rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/hfcredidio/chip8rs'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/hfcredidio/chip8rs" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hfcredidio/chip8rs"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hfcredidio/chip8rs'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c63136ba8d45a6c4bc689b0bb3a95cbb36632422 [INFO] sha for GitHub repo hfcredidio/chip8rs: c63136ba8d45a6c4bc689b0bb3a95cbb36632422 [INFO] validating manifest of hfcredidio/chip8rs 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 hfcredidio/chip8rs 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 hfcredidio/chip8rs [INFO] finished frobbing hfcredidio/chip8rs [INFO] frobbed toml for hfcredidio/chip8rs written to work/ex/clippy-test-run/sources/stable/gh/hfcredidio/chip8rs/Cargo.toml [INFO] started frobbing hfcredidio/chip8rs [INFO] finished frobbing hfcredidio/chip8rs [INFO] frobbed toml for hfcredidio/chip8rs written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hfcredidio/chip8rs/Cargo.toml [INFO] crate hfcredidio/chip8rs 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 hfcredidio/chip8rs against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hfcredidio/chip8rs:/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 -Dclippy::into_iter_on_array" "-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] 82985951d1078c022851bc49e28a4c9426b545f94265f18de784e608178a9845 [INFO] running `"docker" "start" "-a" "82985951d1078c022851bc49e28a4c9426b545f94265f18de784e608178a9845"` [INFO] [stderr] Checking chip8rs v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/cpu.rs:328:5 [INFO] [stderr] | [INFO] [stderr] 328 | fmt [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/cpu.rs:290:15 [INFO] [stderr] | [INFO] [stderr] 290 | let fmt = match (c, Vx, Vy, nibble) { [INFO] [stderr] | _______________^ [INFO] [stderr] 291 | | (0x0, 0x0, 0xE, 0x0) => "CLS".to_string(), [INFO] [stderr] 292 | | (0x0, 0x0, 0xE, 0xE) => "RET".to_string(), [INFO] [stderr] 293 | | (0x0, _, _, _) => format!("SYS\t{:X}", addr), [INFO] [stderr] ... | [INFO] [stderr] 326 | | ( _, _, _, _) => format!("SYS\t{:X}", addr), [INFO] [stderr] 327 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/cpu.rs:328:5 [INFO] [stderr] | [INFO] [stderr] 328 | fmt [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/cpu.rs:290:15 [INFO] [stderr] | [INFO] [stderr] 290 | let fmt = match (c, Vx, Vy, nibble) { [INFO] [stderr] | _______________^ [INFO] [stderr] 291 | | (0x0, 0x0, 0xE, 0x0) => "CLS".to_string(), [INFO] [stderr] 292 | | (0x0, 0x0, 0xE, 0xE) => "RET".to_string(), [INFO] [stderr] 293 | | (0x0, _, _, _) => format!("SYS\t{:X}", addr), [INFO] [stderr] ... | [INFO] [stderr] 326 | | ( _, _, _, _) => format!("SYS\t{:X}", addr), [INFO] [stderr] 327 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unused variable: `addr` [INFO] [stderr] --> src/cpu.rs:109:19 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^ help: consider using `_addr` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:218:23 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `y` [INFO] [stderr] --> src/cpu.rs:218:30 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_y` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `nibble` [INFO] [stderr] --> src/cpu.rs:218:37 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^^^^^^ help: consider using `_nibble` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:221:23 [INFO] [stderr] | [INFO] [stderr] 221 | fn SKP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | fn SKNP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:231:23 [INFO] [stderr] | [INFO] [stderr] 231 | fn LDK(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:243:23 [INFO] [stderr] | [INFO] [stderr] 243 | fn LDD(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `addr` [INFO] [stderr] --> src/cpu.rs:109:19 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^ help: consider using `_addr` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:218:23 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `y` [INFO] [stderr] --> src/cpu.rs:218:30 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^ help: consider using `_y` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `nibble` [INFO] [stderr] --> src/cpu.rs:218:37 [INFO] [stderr] | [INFO] [stderr] 218 | fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] | ^^^^^^ help: consider using `_nibble` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:221:23 [INFO] [stderr] | [INFO] [stderr] 221 | fn SKP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | fn SKNP(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:231:23 [INFO] [stderr] | [INFO] [stderr] 231 | fn LDK(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `x` [INFO] [stderr] --> src/cpu.rs:243:23 [INFO] [stderr] | [INFO] [stderr] 243 | fn LDD(&mut self, x: u8) { [INFO] [stderr] | ^ help: consider using `_x` instead [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | (n1 as u16) << 8 | n2 as u16 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(n1)` [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:47:28 [INFO] [stderr] | [INFO] [stderr] 47 | (n1 as u16) << 8 | n2 as u16 [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::from(n2)` [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 `buf` [INFO] [stderr] --> src/cpu.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 0..size { [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] 50 | for (i, ) in buf.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:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `self.ram[512..(size + 512)].clone_from_slice(&buf[..size])` [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:55:22 [INFO] [stderr] | [INFO] [stderr] 55 | let opcode = (self.read_memory(self.pc) as u16) << 8 | self.read_memory(self.pc + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_memory(self.pc))` [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:55:64 [INFO] [stderr] | [INFO] [stderr] 55 | let opcode = (self.read_memory(self.pc) as u16) << 8 | self.read_memory(self.pc + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_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: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: method `SYS` should have a snake case name such as `sys` [INFO] [stderr] --> src/cpu.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `CLS` should have a snake case name such as `cls` [INFO] [stderr] --> src/cpu.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | fn CLS(&self) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `RET` should have a snake case name such as `ret` [INFO] [stderr] --> src/cpu.rs:111:5 [INFO] [stderr] | [INFO] [stderr] 111 | / fn RET(&mut self) { [INFO] [stderr] 112 | | self.pc = self.pop_stack(); [INFO] [stderr] 113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JP` should have a snake case name such as `jp` [INFO] [stderr] --> src/cpu.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / fn JP(&mut self, addr: u16) { [INFO] [stderr] 115 | | self.pc = addr - 2; [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `CALL` should have a snake case name such as `call` [INFO] [stderr] --> src/cpu.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | / fn CALL(&mut self, addr: u16) { [INFO] [stderr] 118 | | let pc = self.pc; [INFO] [stderr] 119 | | self.push_stack(pc); [INFO] [stderr] 120 | | self.pc = addr - 2; [INFO] [stderr] 121 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE` should have a snake case name such as `se` [INFO] [stderr] --> src/cpu.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / fn SE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 123 | | let xval = self.read_register(x); [INFO] [stderr] 124 | | if xval == byte { [INFO] [stderr] 125 | | self.pc += 2; [INFO] [stderr] 126 | | } [INFO] [stderr] 127 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE` should have a snake case name such as `sne` [INFO] [stderr] --> src/cpu.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / fn SNE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 129 | | let xval = self.read_register(x); [INFO] [stderr] 130 | | if xval != byte { [INFO] [stderr] 131 | | self.pc += 2; [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE2` should have a snake case name such as `se2` [INFO] [stderr] --> src/cpu.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | / fn SE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 135 | | let xval = self.read_register(x); [INFO] [stderr] 136 | | let yval = self.read_register(y); [INFO] [stderr] 137 | | if xval == yval { [INFO] [stderr] 138 | | self.pc += 2; [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD` should have a snake case name such as `ld` [INFO] [stderr] --> src/cpu.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / fn LD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 142 | | self.write_register(x, byte); [INFO] [stderr] 143 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD` should have a snake case name such as `add` [INFO] [stderr] --> src/cpu.rs:144:5 [INFO] [stderr] | [INFO] [stderr] 144 | / fn ADD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 145 | | let xval = self.read_register(x); [INFO] [stderr] 146 | | self.write_register(x, xval + byte); [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD2` should have a snake case name such as `ld2` [INFO] [stderr] --> src/cpu.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / fn LD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 149 | | let yval = self.read_register(y); [INFO] [stderr] 150 | | self.write_register(x, yval); [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `OR` should have a snake case name such as `or` [INFO] [stderr] --> src/cpu.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | / fn OR(&mut self, x: u8, y: u8) { [INFO] [stderr] 153 | | let xval = self.read_register(x); [INFO] [stderr] 154 | | let yval = self.read_register(y); [INFO] [stderr] 155 | | self.write_register(x, xval | yval); [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `AND` should have a snake case name such as `and` [INFO] [stderr] --> src/cpu.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | / fn AND(&mut self, x: u8, y: u8) { [INFO] [stderr] 158 | | let xval = self.read_register(x); [INFO] [stderr] 159 | | let yval = self.read_register(y); [INFO] [stderr] 160 | | self.write_register(x, xval & yval); [INFO] [stderr] 161 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `XOR` should have a snake case name such as `xor` [INFO] [stderr] --> src/cpu.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | / fn XOR(&mut self, x: u8, y: u8) { [INFO] [stderr] 163 | | let xval = self.read_register(x); [INFO] [stderr] 164 | | let yval = self.read_register(y); [INFO] [stderr] 165 | | self.write_register(x, xval ^ yval); [INFO] [stderr] 166 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD2` should have a snake case name such as `add2` [INFO] [stderr] --> src/cpu.rs:167:5 [INFO] [stderr] | [INFO] [stderr] 167 | / fn ADD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 168 | | let xval = self.read_register(x); [INFO] [stderr] 169 | | let yval = self.read_register(y); [INFO] [stderr] 170 | | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] ... | [INFO] [stderr] 173 | | self.write_register(0xF, (carry != 0) as u8); [INFO] [stderr] 174 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:170:24 [INFO] [stderr] | [INFO] [stderr] 170 | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(xval)` [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:170:40 [INFO] [stderr] | [INFO] [stderr] 170 | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(yval)` [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: method `SUB` should have a snake case name such as `sub` [INFO] [stderr] --> src/cpu.rs:175:5 [INFO] [stderr] | [INFO] [stderr] 175 | / fn SUB(&mut self, x: u8, y: u8) { [INFO] [stderr] 176 | | let xval = self.read_register(x); [INFO] [stderr] 177 | | let yval = self.read_register(y); [INFO] [stderr] 178 | | let res = xval - yval; [INFO] [stderr] ... | [INFO] [stderr] 181 | | self.write_register(0xF, borrow); [INFO] [stderr] 182 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHR` should have a snake case name such as `shr` [INFO] [stderr] --> src/cpu.rs:183:5 [INFO] [stderr] | [INFO] [stderr] 183 | / fn SHR(&mut self, x: u8, y: u8) { [INFO] [stderr] 184 | | let yval = self.read_register(y); [INFO] [stderr] 185 | | self.write_register(x, yval >> 1); [INFO] [stderr] 186 | | self.write_register(0xF, yval & 0x01); [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SUBN` should have a snake case name such as `subn` [INFO] [stderr] --> src/cpu.rs:188:5 [INFO] [stderr] | [INFO] [stderr] 188 | / fn SUBN(&mut self, x: u8, y: u8) { [INFO] [stderr] 189 | | let xval = self.read_register(x); [INFO] [stderr] 190 | | let yval = self.read_register(y); [INFO] [stderr] 191 | | let res = yval - xval; [INFO] [stderr] ... | [INFO] [stderr] 194 | | self.write_register(0xF, borrow); [INFO] [stderr] 195 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHL` should have a snake case name such as `shl` [INFO] [stderr] --> src/cpu.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / fn SHL(&mut self, x: u8, y: u8) { [INFO] [stderr] 197 | | let yval = self.read_register(y); [INFO] [stderr] 198 | | self.write_register(x, yval << 1); [INFO] [stderr] 199 | | self.write_register(0xF, yval >> 7); [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE2` should have a snake case name such as `sne2` [INFO] [stderr] --> src/cpu.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | / fn SNE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 202 | | let xval = self.read_register(x); [INFO] [stderr] 203 | | let yval = self.read_register(y); [INFO] [stderr] 204 | | if xval != yval { [INFO] [stderr] 205 | | self.pc += 2; [INFO] [stderr] 206 | | } [INFO] [stderr] 207 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDI` should have a snake case name such as `ldi` [INFO] [stderr] --> src/cpu.rs:208:5 [INFO] [stderr] | [INFO] [stderr] 208 | / fn LDI(&mut self, addr: u16) { [INFO] [stderr] 209 | | self.i = addr; [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JPV0` should have a snake case name such as `jpv0` [INFO] [stderr] --> src/cpu.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | / fn JPV0(&mut self, addr: u16) { [INFO] [stderr] 212 | | self.pc = self.read_register(0x0) as u16 + addr - 2; [INFO] [stderr] 213 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:212:19 [INFO] [stderr] | [INFO] [stderr] 212 | self.pc = self.read_register(0x0) as u16 + addr - 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_register(0x0))` [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: method `RND` should have a snake case name such as `rnd` [INFO] [stderr] --> src/cpu.rs:214:5 [INFO] [stderr] | [INFO] [stderr] 214 | / fn RND(&mut self, x: u8, byte: u8) { [INFO] [stderr] 215 | | let rnd = 0; [INFO] [stderr] 216 | | self.write_register(x, rnd & byte); [INFO] [stderr] 217 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `DRW` should have a snake case name such as `drw` [INFO] [stderr] --> src/cpu.rs:218:5 [INFO] [stderr] | [INFO] [stderr] 218 | / fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] 219 | | // todo [INFO] [stderr] 220 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKP` should have a snake case name such as `skp` [INFO] [stderr] --> src/cpu.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / fn SKP(&mut self, x: u8) { [INFO] [stderr] 222 | | // todo [INFO] [stderr] 223 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKNP` should have a snake case name such as `sknp` [INFO] [stderr] --> src/cpu.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | / fn SKNP(&mut self, x: u8) { [INFO] [stderr] 225 | | // todo [INFO] [stderr] 226 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT` should have a snake case name such as `ldt` [INFO] [stderr] --> src/cpu.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | / fn LDT(&mut self, x: u8) { [INFO] [stderr] 228 | | let dt = self.dt; [INFO] [stderr] 229 | | self.write_register(x, dt); [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDK` should have a snake case name such as `ldk` [INFO] [stderr] --> src/cpu.rs:231:5 [INFO] [stderr] | [INFO] [stderr] 231 | / fn LDK(&mut self, x: u8) { [INFO] [stderr] 232 | | // toddo [INFO] [stderr] 233 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT2` should have a snake case name such as `ldt2` [INFO] [stderr] --> src/cpu.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / fn LDT2(&mut self, x: u8) { [INFO] [stderr] 235 | | self.dt = self.read_register(x); [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDS` should have a snake case name such as `lds` [INFO] [stderr] --> src/cpu.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / fn LDS(&mut self, x: u8) { [INFO] [stderr] 238 | | self.st = self.read_register(x); [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADDI` should have a snake case name such as `addi` [INFO] [stderr] --> src/cpu.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / fn ADDI(&mut self, x: u8) { [INFO] [stderr] 241 | | self.i += self.read_register(x) as u16; [INFO] [stderr] 242 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:19 [INFO] [stderr] | [INFO] [stderr] 241 | self.i += self.read_register(x) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_register(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: method `LDD` should have a snake case name such as `ldd` [INFO] [stderr] --> src/cpu.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | / fn LDD(&mut self, x: u8) { [INFO] [stderr] 244 | | // todo [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDB` should have a snake case name such as `ldb` [INFO] [stderr] --> src/cpu.rs:246:5 [INFO] [stderr] | [INFO] [stderr] 246 | / fn LDB(&mut self, x: u8) { [INFO] [stderr] 247 | | let xval = self.read_register(x); [INFO] [stderr] 248 | | let c = xval / 100; [INFO] [stderr] 249 | | let d = (xval - c * 100) / 10; [INFO] [stderr] ... | [INFO] [stderr] 255 | | self.i += 2; [INFO] [stderr] 256 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `STR` should have a snake case name such as `str` [INFO] [stderr] --> src/cpu.rs:257:5 [INFO] [stderr] | [INFO] [stderr] 257 | / fn STR(&mut self, x: u8) { [INFO] [stderr] 258 | | let addr = self.i; [INFO] [stderr] 259 | | for reg in 0..x { [INFO] [stderr] 260 | | let val = self.read_register(reg); [INFO] [stderr] ... | [INFO] [stderr] 263 | | self.i += x as u16 + 1; [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:261:38 [INFO] [stderr] | [INFO] [stderr] 261 | self.write_memory(addr + reg as u16, val); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(reg)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:263:19 [INFO] [stderr] | [INFO] [stderr] 263 | self.i += x as u16 + 1; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(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: method `LDR` should have a snake case name such as `ldr` [INFO] [stderr] --> src/cpu.rs:265:5 [INFO] [stderr] | [INFO] [stderr] 265 | / fn LDR(&mut self, x: u8) { [INFO] [stderr] 266 | | for reg in 0..x { [INFO] [stderr] 267 | | let val = self.read_memory(self.i + x as u16); [INFO] [stderr] 268 | | self.write_register(reg, val); [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | self.i += x as u16; [INFO] [stderr] 271 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:267:49 [INFO] [stderr] | [INFO] [stderr] 267 | let val = self.read_memory(self.i + x as u16); [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(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:270:19 [INFO] [stderr] | [INFO] [stderr] 270 | self.i += x as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(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 operation is ineffective. Consider reducing it to `(word & 0x000F)` [INFO] [stderr] --> src/cpu.rs:280:9 [INFO] [stderr] | [INFO] [stderr] 280 | ((word & 0x000F) >> 0) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | (n1 as u16) << 8 | n2 as u16 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(n1)` [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:47:28 [INFO] [stderr] | [INFO] [stderr] 47 | (n1 as u16) << 8 | n2 as u16 [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::from(n2)` [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 `buf` [INFO] [stderr] --> src/cpu.rs:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 0..size { [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] 50 | for (i, ) in buf.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:50:18 [INFO] [stderr] | [INFO] [stderr] 50 | for i in 0..size { [INFO] [stderr] | ^^^^^^^ help: try replacing the loop by: `self.ram[512..(size + 512)].clone_from_slice(&buf[..size])` [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:55:22 [INFO] [stderr] | [INFO] [stderr] 55 | let opcode = (self.read_memory(self.pc) as u16) << 8 | self.read_memory(self.pc + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_memory(self.pc))` [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:55:64 [INFO] [stderr] | [INFO] [stderr] 55 | let opcode = (self.read_memory(self.pc) as u16) << 8 | self.read_memory(self.pc + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_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: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:66:17 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:66:21 [INFO] [stderr] | [INFO] [stderr] 66 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: method `SYS` should have a snake case name such as `sys` [INFO] [stderr] --> src/cpu.rs:109:5 [INFO] [stderr] | [INFO] [stderr] 109 | fn SYS(&self, addr: u16) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `CLS` should have a snake case name such as `cls` [INFO] [stderr] --> src/cpu.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | fn CLS(&self) {} [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `RET` should have a snake case name such as `ret` [INFO] [stderr] --> src/cpu.rs:111:5 [INFO] [stderr] | [INFO] [stderr] 111 | / fn RET(&mut self) { [INFO] [stderr] 112 | | self.pc = self.pop_stack(); [INFO] [stderr] 113 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JP` should have a snake case name such as `jp` [INFO] [stderr] --> src/cpu.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / fn JP(&mut self, addr: u16) { [INFO] [stderr] 115 | | self.pc = addr - 2; [INFO] [stderr] 116 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `CALL` should have a snake case name such as `call` [INFO] [stderr] --> src/cpu.rs:117:5 [INFO] [stderr] | [INFO] [stderr] 117 | / fn CALL(&mut self, addr: u16) { [INFO] [stderr] 118 | | let pc = self.pc; [INFO] [stderr] 119 | | self.push_stack(pc); [INFO] [stderr] 120 | | self.pc = addr - 2; [INFO] [stderr] 121 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE` should have a snake case name such as `se` [INFO] [stderr] --> src/cpu.rs:122:5 [INFO] [stderr] | [INFO] [stderr] 122 | / fn SE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 123 | | let xval = self.read_register(x); [INFO] [stderr] 124 | | if xval == byte { [INFO] [stderr] 125 | | self.pc += 2; [INFO] [stderr] 126 | | } [INFO] [stderr] 127 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE` should have a snake case name such as `sne` [INFO] [stderr] --> src/cpu.rs:128:5 [INFO] [stderr] | [INFO] [stderr] 128 | / fn SNE(&mut self, x: u8, byte: u8) { [INFO] [stderr] 129 | | let xval = self.read_register(x); [INFO] [stderr] 130 | | if xval != byte { [INFO] [stderr] 131 | | self.pc += 2; [INFO] [stderr] 132 | | } [INFO] [stderr] 133 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SE2` should have a snake case name such as `se2` [INFO] [stderr] --> src/cpu.rs:134:5 [INFO] [stderr] | [INFO] [stderr] 134 | / fn SE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 135 | | let xval = self.read_register(x); [INFO] [stderr] 136 | | let yval = self.read_register(y); [INFO] [stderr] 137 | | if xval == yval { [INFO] [stderr] 138 | | self.pc += 2; [INFO] [stderr] 139 | | } [INFO] [stderr] 140 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD` should have a snake case name such as `ld` [INFO] [stderr] --> src/cpu.rs:141:5 [INFO] [stderr] | [INFO] [stderr] 141 | / fn LD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 142 | | self.write_register(x, byte); [INFO] [stderr] 143 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD` should have a snake case name such as `add` [INFO] [stderr] --> src/cpu.rs:144:5 [INFO] [stderr] | [INFO] [stderr] 144 | / fn ADD(&mut self, x: u8, byte: u8) { [INFO] [stderr] 145 | | let xval = self.read_register(x); [INFO] [stderr] 146 | | self.write_register(x, xval + byte); [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LD2` should have a snake case name such as `ld2` [INFO] [stderr] --> src/cpu.rs:148:5 [INFO] [stderr] | [INFO] [stderr] 148 | / fn LD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 149 | | let yval = self.read_register(y); [INFO] [stderr] 150 | | self.write_register(x, yval); [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `OR` should have a snake case name such as `or` [INFO] [stderr] --> src/cpu.rs:152:5 [INFO] [stderr] | [INFO] [stderr] 152 | / fn OR(&mut self, x: u8, y: u8) { [INFO] [stderr] 153 | | let xval = self.read_register(x); [INFO] [stderr] 154 | | let yval = self.read_register(y); [INFO] [stderr] 155 | | self.write_register(x, xval | yval); [INFO] [stderr] 156 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `AND` should have a snake case name such as `and` [INFO] [stderr] --> src/cpu.rs:157:5 [INFO] [stderr] | [INFO] [stderr] 157 | / fn AND(&mut self, x: u8, y: u8) { [INFO] [stderr] 158 | | let xval = self.read_register(x); [INFO] [stderr] 159 | | let yval = self.read_register(y); [INFO] [stderr] 160 | | self.write_register(x, xval & yval); [INFO] [stderr] 161 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:287:17 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: method `XOR` should have a snake case name such as `xor` [INFO] [stderr] --> src/cpu.rs:162:5 [INFO] [stderr] | [INFO] [stderr] 162 | / fn XOR(&mut self, x: u8, y: u8) { [INFO] [stderr] 163 | | let xval = self.read_register(x); [INFO] [stderr] 164 | | let yval = self.read_register(y); [INFO] [stderr] 165 | | self.write_register(x, xval ^ yval); [INFO] [stderr] 166 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADD2` should have a snake case name such as `add2` [INFO] [stderr] --> src/cpu.rs:167:5 [INFO] [stderr] | [INFO] [stderr] 167 | / fn ADD2(&mut self, x: u8, y: u8) { [INFO] [stderr] 168 | | let xval = self.read_register(x); [INFO] [stderr] 169 | | let yval = self.read_register(y); [INFO] [stderr] 170 | | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] ... | [INFO] [stderr] 173 | | self.write_register(0xF, (carry != 0) as u8); [INFO] [stderr] 174 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:170:24 [INFO] [stderr] | [INFO] [stderr] 170 | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(xval)` [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:170:40 [INFO] [stderr] | [INFO] [stderr] 170 | let res: u16 = (xval as u16) + (yval as u16); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(yval)` [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: method `SUB` should have a snake case name such as `sub` [INFO] [stderr] --> src/cpu.rs:175:5 [INFO] [stderr] | [INFO] [stderr] 175 | / fn SUB(&mut self, x: u8, y: u8) { [INFO] [stderr] 176 | | let xval = self.read_register(x); [INFO] [stderr] 177 | | let yval = self.read_register(y); [INFO] [stderr] 178 | | let res = xval - yval; [INFO] [stderr] ... | [INFO] [stderr] 181 | | self.write_register(0xF, borrow); [INFO] [stderr] 182 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHR` should have a snake case name such as `shr` [INFO] [stderr] --> src/cpu.rs:183:5 [INFO] [stderr] | [INFO] [stderr] 183 | / fn SHR(&mut self, x: u8, y: u8) { [INFO] [stderr] 184 | | let yval = self.read_register(y); [INFO] [stderr] 185 | | self.write_register(x, yval >> 1); [INFO] [stderr] 186 | | self.write_register(0xF, yval & 0x01); [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SUBN` should have a snake case name such as `subn` [INFO] [stderr] --> src/cpu.rs:188:5 [INFO] [stderr] | [INFO] [stderr] 188 | / fn SUBN(&mut self, x: u8, y: u8) { [INFO] [stderr] 189 | | let xval = self.read_register(x); [INFO] [stderr] 190 | | let yval = self.read_register(y); [INFO] [stderr] 191 | | let res = yval - xval; [INFO] [stderr] ... | [INFO] [stderr] 194 | | self.write_register(0xF, borrow); [INFO] [stderr] 195 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SHL` should have a snake case name such as `shl` [INFO] [stderr] --> src/cpu.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / fn SHL(&mut self, x: u8, y: u8) { [INFO] [stderr] 197 | | let yval = self.read_register(y); [INFO] [stderr] 198 | | self.write_register(x, yval << 1); [INFO] [stderr] 199 | | self.write_register(0xF, yval >> 7); [INFO] [stderr] 200 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SNE2` should have a snake case name such as `sne2` [INFO] [stderr] --> src/cpu.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | / fn SNE2(&mut self, x: u8, y: u8) { [INFO] [stderr] 202 | | let xval = self.read_register(x); [INFO] [stderr] 203 | | let yval = self.read_register(y); [INFO] [stderr] 204 | | if xval != yval { [INFO] [stderr] 205 | | self.pc += 2; [INFO] [stderr] 206 | | } [INFO] [stderr] 207 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDI` should have a snake case name such as `ldi` [INFO] [stderr] --> src/cpu.rs:208:5 [INFO] [stderr] | [INFO] [stderr] 208 | / fn LDI(&mut self, addr: u16) { [INFO] [stderr] 209 | | self.i = addr; [INFO] [stderr] 210 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `JPV0` should have a snake case name such as `jpv0` [INFO] [stderr] --> src/cpu.rs:211:5 [INFO] [stderr] | [INFO] [stderr] 211 | / fn JPV0(&mut self, addr: u16) { [INFO] [stderr] 212 | | self.pc = self.read_register(0x0) as u16 + addr - 2; [INFO] [stderr] 213 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:212:19 [INFO] [stderr] | [INFO] [stderr] 212 | self.pc = self.read_register(0x0) as u16 + addr - 2; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_register(0x0))` [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: method `RND` should have a snake case name such as `rnd` [INFO] [stderr] --> src/cpu.rs:214:5 [INFO] [stderr] | [INFO] [stderr] 214 | / fn RND(&mut self, x: u8, byte: u8) { [INFO] [stderr] 215 | | let rnd = 0; [INFO] [stderr] 216 | | self.write_register(x, rnd & byte); [INFO] [stderr] 217 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `DRW` should have a snake case name such as `drw` [INFO] [stderr] --> src/cpu.rs:218:5 [INFO] [stderr] | [INFO] [stderr] 218 | / fn DRW(&mut self, x: u8, y: u8, nibble: u8) { [INFO] [stderr] 219 | | // todo [INFO] [stderr] 220 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKP` should have a snake case name such as `skp` [INFO] [stderr] --> src/cpu.rs:221:5 [INFO] [stderr] | [INFO] [stderr] 221 | / fn SKP(&mut self, x: u8) { [INFO] [stderr] 222 | | // todo [INFO] [stderr] 223 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `SKNP` should have a snake case name such as `sknp` [INFO] [stderr] --> src/cpu.rs:224:5 [INFO] [stderr] | [INFO] [stderr] 224 | / fn SKNP(&mut self, x: u8) { [INFO] [stderr] 225 | | // todo [INFO] [stderr] 226 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT` should have a snake case name such as `ldt` [INFO] [stderr] --> src/cpu.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | / fn LDT(&mut self, x: u8) { [INFO] [stderr] 228 | | let dt = self.dt; [INFO] [stderr] 229 | | self.write_register(x, dt); [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDK` should have a snake case name such as `ldk` [INFO] [stderr] --> src/cpu.rs:231:5 [INFO] [stderr] | [INFO] [stderr] 231 | / fn LDK(&mut self, x: u8) { [INFO] [stderr] 232 | | // toddo [INFO] [stderr] 233 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDT2` should have a snake case name such as `ldt2` [INFO] [stderr] --> src/cpu.rs:234:5 [INFO] [stderr] | [INFO] [stderr] 234 | / fn LDT2(&mut self, x: u8) { [INFO] [stderr] 235 | | self.dt = self.read_register(x); [INFO] [stderr] 236 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDS` should have a snake case name such as `lds` [INFO] [stderr] --> src/cpu.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | / fn LDS(&mut self, x: u8) { [INFO] [stderr] 238 | | self.st = self.read_register(x); [INFO] [stderr] 239 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `ADDI` should have a snake case name such as `addi` [INFO] [stderr] --> src/cpu.rs:240:5 [INFO] [stderr] | [INFO] [stderr] 240 | / fn ADDI(&mut self, x: u8) { [INFO] [stderr] 241 | | self.i += self.read_register(x) as u16; [INFO] [stderr] 242 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:241:19 [INFO] [stderr] | [INFO] [stderr] 241 | self.i += self.read_register(x) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_register(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: method `LDD` should have a snake case name such as `ldd` [INFO] [stderr] --> src/cpu.rs:243:5 [INFO] [stderr] | [INFO] [stderr] 243 | / fn LDD(&mut self, x: u8) { [INFO] [stderr] 244 | | // todo [INFO] [stderr] 245 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `LDB` should have a snake case name such as `ldb` [INFO] [stderr] --> src/cpu.rs:246:5 [INFO] [stderr] | [INFO] [stderr] 246 | / fn LDB(&mut self, x: u8) { [INFO] [stderr] 247 | | let xval = self.read_register(x); [INFO] [stderr] 248 | | let c = xval / 100; [INFO] [stderr] 249 | | let d = (xval - c * 100) / 10; [INFO] [stderr] ... | [INFO] [stderr] 255 | | self.i += 2; [INFO] [stderr] 256 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: method `STR` should have a snake case name such as `str` [INFO] [stderr] --> src/cpu.rs:257:5 [INFO] [stderr] | [INFO] [stderr] 257 | / fn STR(&mut self, x: u8) { [INFO] [stderr] 258 | | let addr = self.i; [INFO] [stderr] 259 | | for reg in 0..x { [INFO] [stderr] 260 | | let val = self.read_register(reg); [INFO] [stderr] ... | [INFO] [stderr] 263 | | self.i += x as u16 + 1; [INFO] [stderr] 264 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:261:38 [INFO] [stderr] | [INFO] [stderr] 261 | self.write_memory(addr + reg as u16, val); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(reg)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:263:19 [INFO] [stderr] | [INFO] [stderr] 263 | self.i += x as u16 + 1; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(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: method `LDR` should have a snake case name such as `ldr` [INFO] [stderr] --> src/cpu.rs:265:5 [INFO] [stderr] | [INFO] [stderr] 265 | / fn LDR(&mut self, x: u8) { [INFO] [stderr] 266 | | for reg in 0..x { [INFO] [stderr] 267 | | let val = self.read_memory(self.i + x as u16); [INFO] [stderr] 268 | | self.write_register(reg, val); [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | self.i += x as u16; [INFO] [stderr] 271 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:267:49 [INFO] [stderr] | [INFO] [stderr] 267 | let val = self.read_memory(self.i + x as u16); [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(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:270:19 [INFO] [stderr] | [INFO] [stderr] 270 | self.i += x as u16; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(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 operation is ineffective. Consider reducing it to `(word & 0x000F)` [INFO] [stderr] --> src/cpu.rs:280:9 [INFO] [stderr] | [INFO] [stderr] 280 | ((word & 0x000F) >> 0) as u8, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: denote infinite loops with `loop { ... }` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | while true { [INFO] [stderr] | ^^^^^^^^^^ help: use `loop` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(while_true)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable `Vx` should have a snake case name such as `vx` [INFO] [stderr] --> src/cpu.rs:287:13 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: variable `Vy` should have a snake case name such as `vy` [INFO] [stderr] --> src/cpu.rs:287:17 [INFO] [stderr] | [INFO] [stderr] 287 | let (c, Vx, Vy, nibble) = word_to_nibbles(word); [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: denote infinite loops with `loop { ... }` [INFO] [stderr] --> src/main.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | while true { [INFO] [stderr] | ^^^^^^^^^^ help: use `loop` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(while_true)] on by default [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 0.44s [INFO] running `"docker" "inspect" "82985951d1078c022851bc49e28a4c9426b545f94265f18de784e608178a9845"` [INFO] running `"docker" "rm" "-f" "82985951d1078c022851bc49e28a4c9426b545f94265f18de784e608178a9845"` [INFO] [stdout] 82985951d1078c022851bc49e28a4c9426b545f94265f18de784e608178a9845