[INFO] updating cached repository baileyforrest/gbc [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/baileyforrest/gbc [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/baileyforrest/gbc" "work/ex/clippy-test-run/sources/stable/gh/baileyforrest/gbc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/baileyforrest/gbc'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/baileyforrest/gbc" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/baileyforrest/gbc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/baileyforrest/gbc'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 47b902177d5e3fcfcfb9f9c15c5e1930abca1971 [INFO] sha for GitHub repo baileyforrest/gbc: 47b902177d5e3fcfcfb9f9c15c5e1930abca1971 [INFO] validating manifest of baileyforrest/gbc 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 baileyforrest/gbc 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 baileyforrest/gbc [INFO] finished frobbing baileyforrest/gbc [INFO] frobbed toml for baileyforrest/gbc written to work/ex/clippy-test-run/sources/stable/gh/baileyforrest/gbc/Cargo.toml [INFO] started frobbing baileyforrest/gbc [INFO] finished frobbing baileyforrest/gbc [INFO] frobbed toml for baileyforrest/gbc written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/baileyforrest/gbc/Cargo.toml [INFO] crate baileyforrest/gbc 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 baileyforrest/gbc 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-6/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/baileyforrest/gbc:/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] 4fcea3166023dc1410e014da7f5b8ed2c9983a0ac64567a7888d9f1307186f30 [INFO] running `"docker" "start" "-a" "4fcea3166023dc1410e014da7f5b8ed2c9983a0ac64567a7888d9f1307186f30"` [INFO] [stderr] Checking gbc v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:131:9 [INFO] [stderr] | [INFO] [stderr] 131 | write!(f, "AF: 0x{:04x}\n", self.af)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | write!(f, "BC: 0x{:04x}\n", self.bc)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | write!(f, "DE: 0x{:04x}\n", self.de)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | write!(f, "HL: 0x{:04x}\n", self.hl)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:135:9 [INFO] [stderr] | [INFO] [stderr] 135 | write!(f, "SP: 0x{:04x}\n", self.sp)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | write!(f, "PC: 0x{:04x}\n", self.pc)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | write!(f, "IME: {}\n", self.enable_interrupts)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | write!(f, "HALT: {}\n", self.halted)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | write!(f, "STOP: {}\n", self.stopped) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cpu.rs:264:29 [INFO] [stderr] | [INFO] [stderr] 264 | mem: mem, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mem` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cpu.rs:290:25 [INFO] [stderr] | [INFO] [stderr] 290 | mem: mem, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mem` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/cpu.rs:520:13 [INFO] [stderr] | [INFO] [stderr] 520 | let q = (byte0 >> 3) & 0x1; // [3:3] [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/cpu.rs:787:37 [INFO] [stderr] | [INFO] [stderr] 787 | let c = self.ns.regs.get_flag(FlagType::C); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/cpu.rs:873:37 [INFO] [stderr] | [INFO] [stderr] 873 | let c = new_sp & 0xff < sp & 0xff; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:131:9 [INFO] [stderr] | [INFO] [stderr] 131 | write!(f, "AF: 0x{:04x}\n", self.af)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | write!(f, "BC: 0x{:04x}\n", self.bc)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | write!(f, "DE: 0x{:04x}\n", self.de)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:134:9 [INFO] [stderr] | [INFO] [stderr] 134 | write!(f, "HL: 0x{:04x}\n", self.hl)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:135:9 [INFO] [stderr] | [INFO] [stderr] 135 | write!(f, "SP: 0x{:04x}\n", self.sp)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:136:9 [INFO] [stderr] | [INFO] [stderr] 136 | write!(f, "PC: 0x{:04x}\n", self.pc)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:137:9 [INFO] [stderr] | [INFO] [stderr] 137 | write!(f, "IME: {}\n", self.enable_interrupts)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:138:9 [INFO] [stderr] | [INFO] [stderr] 138 | write!(f, "HALT: {}\n", self.halted)?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/cpu.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | write!(f, "STOP: {}\n", self.stopped) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cpu.rs:264:29 [INFO] [stderr] | [INFO] [stderr] 264 | mem: mem, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mem` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cpu.rs:290:25 [INFO] [stderr] | [INFO] [stderr] 290 | mem: mem, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mem` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/cpu.rs:520:13 [INFO] [stderr] | [INFO] [stderr] 520 | let q = (byte0 >> 3) & 0x1; // [3:3] [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/cpu.rs:787:37 [INFO] [stderr] | [INFO] [stderr] 787 | let c = self.ns.regs.get_flag(FlagType::C); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 6th binding whose name is just one char [INFO] [stderr] --> src/cpu.rs:873:37 [INFO] [stderr] | [INFO] [stderr] 873 | let c = new_sp & 0xff < sp & 0xff; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cpu.rs:1125:32 [INFO] [stderr] | [INFO] [stderr] 1125 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 1126 | | if p == 0 { [INFO] [stderr] 1127 | | // CALL nn [INFO] [stderr] 1128 | | size = 3; [INFO] [stderr] ... | [INFO] [stderr] 1140 | | } [INFO] [stderr] 1141 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1125 | } else if p == 0 { [INFO] [stderr] 1126 | // CALL nn [INFO] [stderr] 1127 | size = 3; [INFO] [stderr] 1128 | cycles = 12; [INFO] [stderr] 1129 | [INFO] [stderr] 1130 | let addr = self.read_pc_val16(1); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lcd.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | color_idx [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/lcd.rs:268:25 [INFO] [stderr] | [INFO] [stderr] 268 | let color_idx = upper_bit << 1 | lower_bit; [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: All variants have the same prefix: `Mbc` [INFO] [stderr] --> src/mem.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / enum MbcType { [INFO] [stderr] 12 | | MbcNone, [INFO] [stderr] 13 | | Mbc1, [INFO] [stderr] 14 | | Mbc2, [INFO] [stderr] 15 | | Mbc3, [INFO] [stderr] 16 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cpu.rs:1125:32 [INFO] [stderr] | [INFO] [stderr] 1125 | } else { [INFO] [stderr] | ________________________________^ [INFO] [stderr] 1126 | | if p == 0 { [INFO] [stderr] 1127 | | // CALL nn [INFO] [stderr] 1128 | | size = 3; [INFO] [stderr] ... | [INFO] [stderr] 1140 | | } [INFO] [stderr] 1141 | | } [INFO] [stderr] | |_________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 1125 | } else if p == 0 { [INFO] [stderr] 1126 | // CALL nn [INFO] [stderr] 1127 | size = 3; [INFO] [stderr] 1128 | cycles = 12; [INFO] [stderr] 1129 | [INFO] [stderr] 1130 | let addr = self.read_pc_val16(1); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lcd.rs:270:9 [INFO] [stderr] | [INFO] [stderr] 270 | color_idx [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/lcd.rs:268:25 [INFO] [stderr] | [INFO] [stderr] 268 | let color_idx = upper_bit << 1 | lower_bit; [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: All variants have the same prefix: `Mbc` [INFO] [stderr] --> src/mem.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | / enum MbcType { [INFO] [stderr] 12 | | MbcNone, [INFO] [stderr] 13 | | Mbc1, [INFO] [stderr] 14 | | Mbc2, [INFO] [stderr] 15 | | Mbc3, [INFO] [stderr] 16 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::enum_variant_names)] on by default [INFO] [stderr] = help: remove the prefixes and use full paths to the variants instead of glob imports [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stderr] [INFO] [stderr] warning: enum is never used: `Button` [INFO] [stderr] --> src/joypad.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub enum Button { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_button` [INFO] [stderr] --> src/joypad.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn set_button(&mut self, button: Button, val: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_interrupt_en` [INFO] [stderr] --> src/mem.rs:400:5 [INFO] [stderr] | [INFO] [stderr] 400 | pub fn set_interrupt_en(&mut self, intr: cpu::Interrupt, set: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `sound` [INFO] [stderr] --> src/lib.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | sound: sound::Sound, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:309:32 [INFO] [stderr] | [INFO] [stderr] 309 | let signed_addr: i32 = self.cpu.regs.pc as i32 + offset as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.cpu.regs.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 i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:309:58 [INFO] [stderr] | [INFO] [stderr] 309 | let signed_addr: i32 = self.cpu.regs.pc as i32 + offset as i32; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i32::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:310:52 [INFO] [stderr] | [INFO] [stderr] 310 | assert!(signed_addr >= 0 && signed_addr <= u16::max_value() as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(u16::max_value())` [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:317:21 [INFO] [stderr] | [INFO] [stderr] 317 | let byte0 = self.read_pc_val(offset) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(offset))` [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:318:21 [INFO] [stderr] | [INFO] [stderr] 318 | let byte1 = self.read_pc_val(offset + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(offset + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | self.mem.read(self.cpu.regs.sp) as u16 | (self.mem.read(self.cpu.regs.sp + 1) as u16) << 8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem.read(self.cpu.regs.sp))` [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:338:50 [INFO] [stderr] | [INFO] [stderr] 338 | self.mem.read(self.cpu.regs.sp) as u16 | (self.mem.read(self.cpu.regs.sp + 1) as u16) << 8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem.read(self.cpu.regs.sp + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:441:40 [INFO] [stderr] | [INFO] [stderr] 441 | let other_with_carry = other_val as u16 + c_flag as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(other_val)` [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:451:52 [INFO] [stderr] | [INFO] [stderr] 451 | self.ns.regs.set_flag(FlagType::C, (a_val as u16) < other_with_carry); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(a_val)` [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 function has a cyclomatic complexity of 48 [INFO] [stderr] --> src/cpu.rs:501:5 [INFO] [stderr] | [INFO] [stderr] 501 | / fn generate(&mut self) { [INFO] [stderr] 502 | | const INVALID_PC: u16 = 0xffff; [INFO] [stderr] 503 | | [INFO] [stderr] 504 | | // TODO: Check flags. [INFO] [stderr] ... | [INFO] [stderr] 1170 | | } [INFO] [stderr] 1171 | | } [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: the operation is ineffective. Consider reducing it to `byte0` [INFO] [stderr] --> src/cpu.rs:518:17 [INFO] [stderr] | [INFO] [stderr] 518 | let z = (byte0 >> 0) & 0x7; // [2:0] [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 u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:568:51 [INFO] [stderr] | [INFO] [stderr] 568 | let sign_pc = self.cpu.regs.get16(Reg16::PC) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.cpu.regs.get16(Reg16::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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:571:65 [INFO] [stderr] | [INFO] [stderr] 571 | let next_pc = sign_pc + 2 + val as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/cpu.rs:698:25 [INFO] [stderr] | [INFO] [stderr] 698 | / let hc; [INFO] [stderr] 699 | | if z == 4 { [INFO] [stderr] 700 | | // INC r[y] [INFO] [stderr] 701 | | new_val = val.overflowing_add(1).0; [INFO] [stderr] ... | [INFO] [stderr] 708 | | hc = new_val & 0xf > val & 0xf; [INFO] [stderr] 709 | | } [INFO] [stderr] | |_________________________^ help: it is more idiomatic to write: `let hc = if z == 4 { ..; new_val & 0xf < val & 0xf } else { ..; new_val & 0xf > val & 0xf };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:741:53 [INFO] [stderr] | [INFO] [stderr] 741 | let mut new_a_val = a_val as i16; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i16::from(a_val)` [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:844:46 [INFO] [stderr] | [INFO] [stderr] 844 | let offset = self.read_pc_val(1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:853:46 [INFO] [stderr] | [INFO] [stderr] 853 | let to_add = (self.read_pc_val(1) as i8) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from((self.read_pc_val(1) as i8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:854:50 [INFO] [stderr] | [INFO] [stderr] 854 | let new_sp_i32 = sp as i32 + to_add; [INFO] [stderr] | ^^^^^^^^^ help: try: `i32::from(sp)` [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:881:46 [INFO] [stderr] | [INFO] [stderr] 881 | let offset = self.read_pc_val(1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:936:55 [INFO] [stderr] | [INFO] [stderr] 936 | self.ns.regs.pc = self.read_pc_val(1) as u16 | [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:937:55 [INFO] [stderr] | [INFO] [stderr] 937 | (self.read_pc_val(2) as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(2))` [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:947:53 [INFO] [stderr] | [INFO] [stderr] 947 | let addr = 0xff00 + self.get_reg8(Reg8::C) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_reg8(Reg8::C))` [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:965:53 [INFO] [stderr] | [INFO] [stderr] 965 | let addr = 0xff00 + self.get_reg8(Reg8::C) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_reg8(Reg8::C))` [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 `inst` [INFO] [stderr] --> src/cpu.rs:995:41 [INFO] [stderr] | [INFO] [stderr] 995 | let z = (inst >> 0) & 0x7; // [2:0] [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:1157:43 [INFO] [stderr] | [INFO] [stderr] 1157 | self.ns.regs.pc = y as u16 * 8; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:1183:25 [INFO] [stderr] | [INFO] [stderr] 1183 | *r = (*r & 0xff) | ((val as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(val)` [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:1187:26 [INFO] [stderr] | [INFO] [stderr] 1187 | *r = (*r & 0xff00) | val as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(val)` [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/dma.rs:24:27 [INFO] [stderr] | [INFO] [stderr] 24 | let mut dma_src = (dma as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(dma)` [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/lcd.rs:232:69 [INFO] [stderr] | [INFO] [stderr] 232 | TileSelectData::A8800 => TileSelectData::A8800 as u16 + idx as u16, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(idx)` [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/lcd.rs:236:33 [INFO] [stderr] | [INFO] [stderr] 236 | BASE_ADDR + idx as u16 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(idx)` [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/lcd.rs:239:33 [INFO] [stderr] | [INFO] [stderr] 239 | BASE_ADDR - abs as u16 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(abs)` [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/lcd.rs:263:57 [INFO] [stderr] | [INFO] [stderr] 263 | let tile_byte_upper = mem.read(tile_base_addr + tile_y as u16 * 2); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(tile_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:264:57 [INFO] [stderr] | [INFO] [stderr] 264 | let tile_byte_lower = mem.read(tile_base_addr + tile_y as u16 * 2 + 1); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(tile_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:274:28 [INFO] [stderr] | [INFO] [stderr] 274 | let map_tile_x = ((map_x as u16 + 7) / 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(map_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/lcd.rs:275:28 [INFO] [stderr] | [INFO] [stderr] 275 | let map_tile_y = ((map_y as u16 + 7) / 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(map_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:277:23 [INFO] [stderr] | [INFO] [stderr] 277 | let map_idx = map_tile_y as u16 * 32 + map_tile_x as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(map_tile_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:277:48 [INFO] [stderr] | [INFO] [stderr] 277 | let map_idx = map_tile_y as u16 * 32 + map_tile_x as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(map_tile_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/lcd.rs:348:36 [INFO] [stderr] | [INFO] [stderr] 348 | let mut tile_idx = mem.read(cur_sprite + 2) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(cur_sprite + 2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mem.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | / match self { [INFO] [stderr] 107 | | &CartErr::Io(ref e) => write!(f, "IO error: {}", e), [INFO] [stderr] 108 | | &CartErr::Length(ref size, ref msg) => { [INFO] [stderr] 109 | | write!(f, "Length error: {}. Size: {}", msg, size) [INFO] [stderr] 110 | | } [INFO] [stderr] 111 | | &CartErr::Invalid(ref msg) => write!(f, "Invalid input: {}", msg), [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 106 | match *self { [INFO] [stderr] 107 | CartErr::Io(ref e) => write!(f, "IO error: {}", e), [INFO] [stderr] 108 | CartErr::Length(ref size, ref msg) => { [INFO] [stderr] 109 | write!(f, "Length error: {}. Size: {}", msg, size) [INFO] [stderr] 110 | } [INFO] [stderr] 111 | CartErr::Invalid(ref msg) => write!(f, "Invalid input: {}", msg), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / match self { [INFO] [stderr] 19 | | &GbcErr::Cartridge(ref e) => write!(f, "Cartridge error: {}", e), [INFO] [stderr] 20 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 18 | match *self { [INFO] [stderr] 19 | GbcErr::Cartridge(ref e) => write!(f, "Cartridge error: {}", e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/lib.rs:65:12 [INFO] [stderr] | [INFO] [stderr] 65 | Ok(self.mem.load_cartridge(rom).map_err(GbcErr::Cartridge)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 65 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: enum is never used: `Button` [INFO] [stderr] --> src/joypad.rs:3:1 [INFO] [stderr] | [INFO] [stderr] 3 | pub enum Button { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_button` [INFO] [stderr] --> src/joypad.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn set_button(&mut self, button: Button, val: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `set_interrupt_en` [INFO] [stderr] --> src/mem.rs:400:5 [INFO] [stderr] | [INFO] [stderr] 400 | pub fn set_interrupt_en(&mut self, intr: cpu::Interrupt, set: bool) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field is never used: `sound` [INFO] [stderr] --> src/lib.rs:32:5 [INFO] [stderr] | [INFO] [stderr] 32 | sound: sound::Sound, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:309:32 [INFO] [stderr] | [INFO] [stderr] 309 | let signed_addr: i32 = self.cpu.regs.pc as i32 + offset as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.cpu.regs.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 i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:309:58 [INFO] [stderr] | [INFO] [stderr] 309 | let signed_addr: i32 = self.cpu.regs.pc as i32 + offset as i32; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `i32::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:310:52 [INFO] [stderr] | [INFO] [stderr] 310 | assert!(signed_addr >= 0 && signed_addr <= u16::max_value() as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(u16::max_value())` [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:317:21 [INFO] [stderr] | [INFO] [stderr] 317 | let byte0 = self.read_pc_val(offset) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(offset))` [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:318:21 [INFO] [stderr] | [INFO] [stderr] 318 | let byte1 = self.read_pc_val(offset + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(offset + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:338:9 [INFO] [stderr] | [INFO] [stderr] 338 | self.mem.read(self.cpu.regs.sp) as u16 | (self.mem.read(self.cpu.regs.sp + 1) as u16) << 8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem.read(self.cpu.regs.sp))` [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:338:50 [INFO] [stderr] | [INFO] [stderr] 338 | self.mem.read(self.cpu.regs.sp) as u16 | (self.mem.read(self.cpu.regs.sp + 1) as u16) << 8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem.read(self.cpu.regs.sp + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:441:40 [INFO] [stderr] | [INFO] [stderr] 441 | let other_with_carry = other_val as u16 + c_flag as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(other_val)` [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:451:52 [INFO] [stderr] | [INFO] [stderr] 451 | self.ns.regs.set_flag(FlagType::C, (a_val as u16) < other_with_carry); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(a_val)` [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 function has a cyclomatic complexity of 48 [INFO] [stderr] --> src/cpu.rs:501:5 [INFO] [stderr] | [INFO] [stderr] 501 | / fn generate(&mut self) { [INFO] [stderr] 502 | | const INVALID_PC: u16 = 0xffff; [INFO] [stderr] 503 | | [INFO] [stderr] 504 | | // TODO: Check flags. [INFO] [stderr] ... | [INFO] [stderr] 1170 | | } [INFO] [stderr] 1171 | | } [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: the operation is ineffective. Consider reducing it to `byte0` [INFO] [stderr] --> src/cpu.rs:518:17 [INFO] [stderr] | [INFO] [stderr] 518 | let z = (byte0 >> 0) & 0x7; // [2:0] [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 u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:568:51 [INFO] [stderr] | [INFO] [stderr] 568 | let sign_pc = self.cpu.regs.get16(Reg16::PC) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.cpu.regs.get16(Reg16::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 i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:571:65 [INFO] [stderr] | [INFO] [stderr] 571 | let next_pc = sign_pc + 2 + val as i32; [INFO] [stderr] | ^^^^^^^^^^ help: try: `i32::from(val)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/cpu.rs:698:25 [INFO] [stderr] | [INFO] [stderr] 698 | / let hc; [INFO] [stderr] 699 | | if z == 4 { [INFO] [stderr] 700 | | // INC r[y] [INFO] [stderr] 701 | | new_val = val.overflowing_add(1).0; [INFO] [stderr] ... | [INFO] [stderr] 708 | | hc = new_val & 0xf > val & 0xf; [INFO] [stderr] 709 | | } [INFO] [stderr] | |_________________________^ help: it is more idiomatic to write: `let hc = if z == 4 { ..; new_val & 0xf < val & 0xf } else { ..; new_val & 0xf > val & 0xf };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:741:53 [INFO] [stderr] | [INFO] [stderr] 741 | let mut new_a_val = a_val as i16; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i16::from(a_val)` [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:844:46 [INFO] [stderr] | [INFO] [stderr] 844 | let offset = self.read_pc_val(1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:853:46 [INFO] [stderr] | [INFO] [stderr] 853 | let to_add = (self.read_pc_val(1) as i8) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from((self.read_pc_val(1) as i8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:854:50 [INFO] [stderr] | [INFO] [stderr] 854 | let new_sp_i32 = sp as i32 + to_add; [INFO] [stderr] | ^^^^^^^^^ help: try: `i32::from(sp)` [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:881:46 [INFO] [stderr] | [INFO] [stderr] 881 | let offset = self.read_pc_val(1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:936:55 [INFO] [stderr] | [INFO] [stderr] 936 | self.ns.regs.pc = self.read_pc_val(1) as u16 | [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:937:55 [INFO] [stderr] | [INFO] [stderr] 937 | (self.read_pc_val(2) as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read_pc_val(2))` [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:947:53 [INFO] [stderr] | [INFO] [stderr] 947 | let addr = 0xff00 + self.get_reg8(Reg8::C) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_reg8(Reg8::C))` [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:965:53 [INFO] [stderr] | [INFO] [stderr] 965 | let addr = 0xff00 + self.get_reg8(Reg8::C) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.get_reg8(Reg8::C))` [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 `inst` [INFO] [stderr] --> src/cpu.rs:995:41 [INFO] [stderr] | [INFO] [stderr] 995 | let z = (inst >> 0) & 0x7; // [2:0] [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:1157:43 [INFO] [stderr] | [INFO] [stderr] 1157 | self.ns.regs.pc = y as u16 * 8; [INFO] [stderr] | ^^^^^^^^ help: try: `u16::from(y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:1183:25 [INFO] [stderr] | [INFO] [stderr] 1183 | *r = (*r & 0xff) | ((val as u16) << 8) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(val)` [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:1187:26 [INFO] [stderr] | [INFO] [stderr] 1187 | *r = (*r & 0xff00) | val as u16; [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(val)` [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/dma.rs:24:27 [INFO] [stderr] | [INFO] [stderr] 24 | let mut dma_src = (dma as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(dma)` [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/lcd.rs:232:69 [INFO] [stderr] | [INFO] [stderr] 232 | TileSelectData::A8800 => TileSelectData::A8800 as u16 + idx as u16, [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(idx)` [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/lcd.rs:236:33 [INFO] [stderr] | [INFO] [stderr] 236 | BASE_ADDR + idx as u16 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(idx)` [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/lcd.rs:239:33 [INFO] [stderr] | [INFO] [stderr] 239 | BASE_ADDR - abs as u16 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(abs)` [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/lcd.rs:263:57 [INFO] [stderr] | [INFO] [stderr] 263 | let tile_byte_upper = mem.read(tile_base_addr + tile_y as u16 * 2); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(tile_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:264:57 [INFO] [stderr] | [INFO] [stderr] 264 | let tile_byte_lower = mem.read(tile_base_addr + tile_y as u16 * 2 + 1); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(tile_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:274:28 [INFO] [stderr] | [INFO] [stderr] 274 | let map_tile_x = ((map_x as u16 + 7) / 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(map_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/lcd.rs:275:28 [INFO] [stderr] | [INFO] [stderr] 275 | let map_tile_y = ((map_y as u16 + 7) / 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(map_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:277:23 [INFO] [stderr] | [INFO] [stderr] 277 | let map_idx = map_tile_y as u16 * 32 + map_tile_x as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(map_tile_y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/lcd.rs:277:48 [INFO] [stderr] | [INFO] [stderr] 277 | let map_idx = map_tile_y as u16 * 32 + map_tile_x as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `u16::from(map_tile_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/lcd.rs:348:36 [INFO] [stderr] | [INFO] [stderr] 348 | let mut tile_idx = mem.read(cur_sprite + 2) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(cur_sprite + 2))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/mem.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | / match self { [INFO] [stderr] 107 | | &CartErr::Io(ref e) => write!(f, "IO error: {}", e), [INFO] [stderr] 108 | | &CartErr::Length(ref size, ref msg) => { [INFO] [stderr] 109 | | write!(f, "Length error: {}. Size: {}", msg, size) [INFO] [stderr] 110 | | } [INFO] [stderr] 111 | | &CartErr::Invalid(ref msg) => write!(f, "Invalid input: {}", msg), [INFO] [stderr] 112 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 106 | match *self { [INFO] [stderr] 107 | CartErr::Io(ref e) => write!(f, "IO error: {}", e), [INFO] [stderr] 108 | CartErr::Length(ref size, ref msg) => { [INFO] [stderr] 109 | write!(f, "Length error: {}. Size: {}", msg, size) [INFO] [stderr] 110 | } [INFO] [stderr] 111 | CartErr::Invalid(ref msg) => write!(f, "Invalid input: {}", msg), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | / match self { [INFO] [stderr] 19 | | &GbcErr::Cartridge(ref e) => write!(f, "Cartridge error: {}", e), [INFO] [stderr] 20 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 18 | match *self { [INFO] [stderr] 19 | GbcErr::Cartridge(ref e) => write!(f, "Cartridge error: {}", e), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/lib.rs:65:12 [INFO] [stderr] | [INFO] [stderr] 65 | Ok(self.mem.load_cartridge(rom).map_err(GbcErr::Cartridge)?) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 65 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client/cli.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client/cli.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client/cli.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/client/cli.rs:96:9 [INFO] [stderr] | [INFO] [stderr] 96 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: unused variable: `cmd` [INFO] [stderr] --> src/client/cli.rs:175:46 [INFO] [stderr] | [INFO] [stderr] 175 | fn run(&mut self, gbc: &mut libgbc::Gbc, cmd: &[&str]) { [INFO] [stderr] | ^^^ help: consider using `_cmd` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_u8` [INFO] [stderr] --> src/client/cli.rs:230:1 [INFO] [stderr] | [INFO] [stderr] 230 | fn parse_u8(s: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/client/cli.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if cmd.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `cmd.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/bin.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | if let None = arg1 { [INFO] [stderr] | _____- ^^^^ [INFO] [stderr] 12 | | println!("usage: {} rom_file", arg0.unwrap()); [INFO] [stderr] 13 | | process::exit(1); [INFO] [stderr] 14 | | } [INFO] [stderr] | |_____- help: try this: `if arg1.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: unused variable: `cmd` [INFO] [stderr] --> src/client/cli.rs:175:46 [INFO] [stderr] | [INFO] [stderr] 175 | fn run(&mut self, gbc: &mut libgbc::Gbc, cmd: &[&str]) { [INFO] [stderr] | ^^^ help: consider using `_cmd` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `parse_u8` [INFO] [stderr] --> src/client/cli.rs:230:1 [INFO] [stderr] | [INFO] [stderr] 230 | fn parse_u8(s: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/client/cli.rs:69:12 [INFO] [stderr] | [INFO] [stderr] 69 | if cmd.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `cmd.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_none()` [INFO] [stderr] --> src/bin.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | if let None = arg1 { [INFO] [stderr] | _____- ^^^^ [INFO] [stderr] 12 | | println!("usage: {} rom_file", arg0.unwrap()); [INFO] [stderr] 13 | | process::exit(1); [INFO] [stderr] 14 | | } [INFO] [stderr] | |_____- help: try this: `if arg1.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] Finished dev [unoptimized + debuginfo] target(s) in 1.92s [INFO] running `"docker" "inspect" "4fcea3166023dc1410e014da7f5b8ed2c9983a0ac64567a7888d9f1307186f30"` [INFO] running `"docker" "rm" "-f" "4fcea3166023dc1410e014da7f5b8ed2c9983a0ac64567a7888d9f1307186f30"` [INFO] [stdout] 4fcea3166023dc1410e014da7f5b8ed2c9983a0ac64567a7888d9f1307186f30