[INFO] updating cached repository mattbettcher/res [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/mattbettcher/res [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/mattbettcher/res" "work/ex/clippy-test-run/sources/stable/gh/mattbettcher/res"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/mattbettcher/res'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/mattbettcher/res" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mattbettcher/res"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mattbettcher/res'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] f0573d722abd5557271d94a18995a4d973470c6b [INFO] sha for GitHub repo mattbettcher/res: f0573d722abd5557271d94a18995a4d973470c6b [INFO] validating manifest of mattbettcher/res 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 mattbettcher/res 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 mattbettcher/res [INFO] finished frobbing mattbettcher/res [INFO] frobbed toml for mattbettcher/res written to work/ex/clippy-test-run/sources/stable/gh/mattbettcher/res/Cargo.toml [INFO] started frobbing mattbettcher/res [INFO] finished frobbing mattbettcher/res [INFO] frobbed toml for mattbettcher/res written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/mattbettcher/res/Cargo.toml [INFO] crate mattbettcher/res 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 mattbettcher/res against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/mattbettcher/res:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 02475326ea5a015b1a63d15a8e7549a02991620421fdeb4813a7690e4764331a [INFO] running `"docker" "start" "-a" "02475326ea5a015b1a63d15a8e7549a02991620421fdeb4813a7690e4764331a"` [INFO] [stderr] Checking res v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cart.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | mapper_number: mapper_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `mapper_number` [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/cart.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | mapper_number: mapper_number, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `mapper_number` [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: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:94:160 [INFO] [stderr] | [INFO] [stderr] 94 | self.ts, self.pc, self.a,self.x,self.y,self.p.pack(), self.s, self.op, self.v1, self.v2, self.ah_al(), if self.irq { 1 } else { 0 }, self.cycle % 1000000 ) [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/disasm.rs:9:22 [INFO] [stderr] | [INFO] [stderr] 9 | const OPTABLE: [&'static str; 256] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/disasm.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 42 | | if op == 0x00 || op == 0x40 || op == 0x60 { [INFO] [stderr] 43 | | "".to_string() /* imp */ [INFO] [stderr] 44 | | } else if op == 0x20 { [INFO] [stderr] ... | [INFO] [stderr] 50 | | } [INFO] [stderr] 51 | | }}, [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] 41 | } else if op == 0x00 || op == 0x40 || op == 0x60 { [INFO] [stderr] 42 | "".to_string() /* imp */ [INFO] [stderr] 43 | } else if op == 0x20 { [INFO] [stderr] 44 | format!("${:04x}", v1) /* jsr abs */ [INFO] [stderr] 45 | } else if op == 0x80 { [INFO] [stderr] 46 | "NOP*".to_string() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/disasm.rs:108:16 [INFO] [stderr] | [INFO] [stderr] 108 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 109 | | if op == 0xDA || op == 0xFA { [INFO] [stderr] 110 | | "UNK".to_string() /* unk */ [INFO] [stderr] 111 | | } else { "".to_string() /* imp */ } [INFO] [stderr] 112 | | }}, [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 108 | } else if op == 0xDA || op == 0xFA { [INFO] [stderr] 109 | "UNK".to_string() /* unk */ [INFO] [stderr] 110 | } else { "".to_string() /* imp */ }}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/disasm.rs:137:16 [INFO] [stderr] | [INFO] [stderr] 137 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 138 | | if op == 0x9e { [INFO] [stderr] 139 | | "UNK".to_string() [INFO] [stderr] 140 | | } else if op == 0xbe { /* ay */ [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | }}, [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 137 | } else if op == 0x9e { [INFO] [stderr] 138 | "UNK".to_string() [INFO] [stderr] 139 | } else if op == 0xbe { /* ay */ [INFO] [stderr] 140 | format!("${:04x},Y", v1) [INFO] [stderr] 141 | } else { /* ax */ [INFO] [stderr] 142 | format!("${:04x},X", v1) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / return Nrom { [INFO] [stderr] 17 | | prg_rom: prg.to_vec(), [INFO] [stderr] 18 | | prg_ram: Vec::new(), [INFO] [stderr] 19 | | chr_rom: chr.to_vec(), [INFO] [stderr] 20 | | mirroring: header.mirroring, [INFO] [stderr] 21 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 16 | Nrom { [INFO] [stderr] 17 | prg_rom: prg.to_vec(), [INFO] [stderr] 18 | prg_ram: Vec::new(), [INFO] [stderr] 19 | chr_rom: chr.to_vec(), [INFO] [stderr] 20 | mirroring: header.mirroring, [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | return self.mirroring; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.mirroring` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:32:34 [INFO] [stderr] | [INFO] [stderr] 32 | 0x0000 ... 0x1FFF => return self.chr_rom[address as usize], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.chr_rom[address as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | return self.prg_ram[((address - 0x6000) % (prg_ram_len as u16)) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.prg_ram[((address - 0x6000) % (prg_ram_len as u16)) as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:38:21 [INFO] [stderr] | [INFO] [stderr] 38 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | return self.prg_rom[(address % (prg_rom_len as u16)) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.prg_rom[(address % (prg_rom_len as u16)) as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:45:18 [INFO] [stderr] | [INFO] [stderr] 45 | _ => return 0 [INFO] [stderr] | ^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/none.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | / return NoneMapper { [INFO] [stderr] 12 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 11 | NoneMapper { [INFO] [stderr] 12 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/none.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | return Mirroring::Horizontal; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Mirroring::Horizontal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/none.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cart.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | return nes_header; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `nes_header` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cart.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 68 | | if vertical_mirroring { [INFO] [stderr] 69 | | nes_header.mirroring = Mirroring::Vertical; [INFO] [stderr] 70 | | } else { [INFO] [stderr] 71 | | nes_header.mirroring = Mirroring::Horizontal; [INFO] [stderr] 72 | | } [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 67 | } else if vertical_mirroring { [INFO] [stderr] 68 | nes_header.mirroring = Mirroring::Vertical; [INFO] [stderr] 69 | } else { [INFO] [stderr] 70 | nes_header.mirroring = Mirroring::Horizontal; [INFO] [stderr] 71 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cart.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | return mapper; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `mapper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/cpu.rs:94:160 [INFO] [stderr] | [INFO] [stderr] 94 | self.ts, self.pc, self.a,self.x,self.y,self.p.pack(), self.s, self.op, self.v1, self.v2, self.ah_al(), if self.irq { 1 } else { 0 }, self.cycle % 1000000 ) [INFO] [stderr] | ^^^^^^^ help: consider: `1_000_000` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/disasm.rs:9:22 [INFO] [stderr] | [INFO] [stderr] 9 | const OPTABLE: [&'static str; 256] = [ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/disasm.rs:41:16 [INFO] [stderr] | [INFO] [stderr] 41 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 42 | | if op == 0x00 || op == 0x40 || op == 0x60 { [INFO] [stderr] 43 | | "".to_string() /* imp */ [INFO] [stderr] 44 | | } else if op == 0x20 { [INFO] [stderr] ... | [INFO] [stderr] 50 | | } [INFO] [stderr] 51 | | }}, [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] 41 | } else if op == 0x00 || op == 0x40 || op == 0x60 { [INFO] [stderr] 42 | "".to_string() /* imp */ [INFO] [stderr] 43 | } else if op == 0x20 { [INFO] [stderr] 44 | format!("${:04x}", v1) /* jsr abs */ [INFO] [stderr] 45 | } else if op == 0x80 { [INFO] [stderr] 46 | "NOP*".to_string() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/disasm.rs:108:16 [INFO] [stderr] | [INFO] [stderr] 108 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 109 | | if op == 0xDA || op == 0xFA { [INFO] [stderr] 110 | | "UNK".to_string() /* unk */ [INFO] [stderr] 111 | | } else { "".to_string() /* imp */ } [INFO] [stderr] 112 | | }}, [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 108 | } else if op == 0xDA || op == 0xFA { [INFO] [stderr] 109 | "UNK".to_string() /* unk */ [INFO] [stderr] 110 | } else { "".to_string() /* imp */ }}, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/disasm.rs:137:16 [INFO] [stderr] | [INFO] [stderr] 137 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 138 | | if op == 0x9e { [INFO] [stderr] 139 | | "UNK".to_string() [INFO] [stderr] 140 | | } else if op == 0xbe { /* ay */ [INFO] [stderr] ... | [INFO] [stderr] 144 | | } [INFO] [stderr] 145 | | }}, [INFO] [stderr] | |_________^ [INFO] [stderr] | [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] 137 | } else if op == 0x9e { [INFO] [stderr] 138 | "UNK".to_string() [INFO] [stderr] 139 | } else if op == 0xbe { /* ay */ [INFO] [stderr] 140 | format!("${:04x},Y", v1) [INFO] [stderr] 141 | } else { /* ax */ [INFO] [stderr] 142 | format!("${:04x},X", v1) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / return Nrom { [INFO] [stderr] 17 | | prg_rom: prg.to_vec(), [INFO] [stderr] 18 | | prg_ram: Vec::new(), [INFO] [stderr] 19 | | chr_rom: chr.to_vec(), [INFO] [stderr] 20 | | mirroring: header.mirroring, [INFO] [stderr] 21 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 16 | Nrom { [INFO] [stderr] 17 | prg_rom: prg.to_vec(), [INFO] [stderr] 18 | prg_ram: Vec::new(), [INFO] [stderr] 19 | chr_rom: chr.to_vec(), [INFO] [stderr] 20 | mirroring: header.mirroring, [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:27:9 [INFO] [stderr] | [INFO] [stderr] 27 | return self.mirroring; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.mirroring` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:32:34 [INFO] [stderr] | [INFO] [stderr] 32 | 0x0000 ... 0x1FFF => return self.chr_rom[address as usize], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.chr_rom[address as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | return self.prg_ram[((address - 0x6000) % (prg_ram_len as u16)) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.prg_ram[((address - 0x6000) % (prg_ram_len as u16)) as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:38:21 [INFO] [stderr] | [INFO] [stderr] 38 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | return self.prg_rom[(address % (prg_rom_len as u16)) as usize]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.prg_rom[(address % (prg_rom_len as u16)) as usize]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/nrom.rs:45:18 [INFO] [stderr] | [INFO] [stderr] 45 | _ => return 0 [INFO] [stderr] | ^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/none.rs:11:9 [INFO] [stderr] | [INFO] [stderr] 11 | / return NoneMapper { [INFO] [stderr] 12 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 11 | NoneMapper { [INFO] [stderr] 12 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/none.rs:18:9 [INFO] [stderr] | [INFO] [stderr] 18 | return Mirroring::Horizontal; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Mirroring::Horizontal` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/mmc/none.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | return 0; [INFO] [stderr] | ^^^^^^^^^ help: remove `return` as shown: `0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cart.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | return nes_header; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `nes_header` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/cart.rs:67:12 [INFO] [stderr] | [INFO] [stderr] 67 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 68 | | if vertical_mirroring { [INFO] [stderr] 69 | | nes_header.mirroring = Mirroring::Vertical; [INFO] [stderr] 70 | | } else { [INFO] [stderr] 71 | | nes_header.mirroring = Mirroring::Horizontal; [INFO] [stderr] 72 | | } [INFO] [stderr] 73 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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] 67 | } else if vertical_mirroring { [INFO] [stderr] 68 | nes_header.mirroring = Mirroring::Vertical; [INFO] [stderr] 69 | } else { [INFO] [stderr] 70 | nes_header.mirroring = Mirroring::Horizontal; [INFO] [stderr] 71 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/cart.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | return mapper; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `mapper` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/cpu.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | fn read<'a>(&'a mut self, a: usize) -> u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/cpu.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | fn write<'a>(&'a mut self, a: usize, v: u8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | self.cycle = self.cycle + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cycle += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:145:30 [INFO] [stderr] | [INFO] [stderr] 145 | fn ah_al(&self) -> u16 { (self.ah as u16) << 8 | (self.al as u16) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.ah)` [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:145:54 [INFO] [stderr] | [INFO] [stderr] 145 | fn ah_al(&self) -> u16 { (self.ah as u16) << 8 | (self.al as u16) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.al)` [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:148:58 [INFO] [stderr] | [INFO] [stderr] 148 | fn set_pc (&mut self, pch: u8, pcl: u8) { self.pc = ((pch as u16) << 8)| (pcl as u16); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pch)` [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:148:78 [INFO] [stderr] | [INFO] [stderr] 148 | fn set_pc (&mut self, pch: u8, pcl: u8) { self.pc = ((pch as u16) << 8)| (pcl as u16); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pcl)` [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:150:78 [INFO] [stderr] | [INFO] [stderr] 150 | fn set_pcl(&mut self, pcl: u8) { self.pc = (self.pc & 0xFF00) | (pcl as u16); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pcl)` [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:152:58 [INFO] [stderr] | [INFO] [stderr] 152 | fn set_pch(&mut self, pch: u8) { self.pc = ((pch as u16) << 8)| (self.pc & 0x00FF); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | self.v1 = self.v1 << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v1 <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:172:9 [INFO] [stderr] | [INFO] [stderr] 172 | self.v1 = self.v1 >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v1 >>= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:200:25 [INFO] [stderr] | [INFO] [stderr] 200 | let tsum = (self.a as u16 + self.v1 as u16 + if self.p.c { 0x1 } else { 0x0 }) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(self.a)` [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:200:41 [INFO] [stderr] | [INFO] [stderr] 200 | let tsum = (self.a as u16 + self.v1 as u16 + if self.p.c { 0x1 } else { 0x0 }) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(self.v1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/cpu.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | self.p.c = !(tsub >= 0x100); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `tsub < 0x100` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:223:24 [INFO] [stderr] | [INFO] [stderr] 223 | let tsub = (self.a as u16).wrapping_sub(self.v1 as u16).wrapping_sub(if self.p.c { 0x0 } else { 0x1 } as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.a)` [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:223:53 [INFO] [stderr] | [INFO] [stderr] 223 | let tsub = (self.a as u16).wrapping_sub(self.v1 as u16).wrapping_sub(if self.p.c { 0x0 } else { 0x1 } as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(self.v1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:238:28 [INFO] [stderr] | [INFO] [stderr] 238 | fn op_and(&mut self) { self.a = self.a & self.v1; let tmp = self.a; self.fix_nz(tmp); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.a &= self.v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:239:28 [INFO] [stderr] | [INFO] [stderr] 239 | fn op_ora(&mut self) { self.a = self.a | self.v1; let tmp = self.a; self.fix_nz(tmp); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.a |= self.v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:240:28 [INFO] [stderr] | [INFO] [stderr] 240 | fn op_eor(&mut self) { self.a = self.a ^ self.v1; let tmp = self.a; self.fix_nz(tmp); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.a ^= self.v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:382:46 [INFO] [stderr] | [INFO] [stderr] 382 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:382:63 [INFO] [stderr] | [INFO] [stderr] 382 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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:414:46 [INFO] [stderr] | [INFO] [stderr] 414 | self.v2 = ((self.al as u16 + self.y as u16) >> 8) as u8; // here v2 is max 1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(self.al)` [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:414:63 [INFO] [stderr] | [INFO] [stderr] 414 | self.v2 = ((self.al as u16 + self.y as u16) >> 8) as u8; // here v2 is max 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:428:46 [INFO] [stderr] | [INFO] [stderr] 428 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:428:63 [INFO] [stderr] | [INFO] [stderr] 428 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:472:46 [INFO] [stderr] | [INFO] [stderr] 472 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:472:63 [INFO] [stderr] | [INFO] [stderr] 472 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:485:46 [INFO] [stderr] | [INFO] [stderr] 485 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:485:63 [INFO] [stderr] | [INFO] [stderr] 485 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:517:46 [INFO] [stderr] | [INFO] [stderr] 517 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:517:63 [INFO] [stderr] | [INFO] [stderr] 517 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:550:46 [INFO] [stderr] | [INFO] [stderr] 550 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:550:63 [INFO] [stderr] | [INFO] [stderr] 550 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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:683:30 [INFO] [stderr] | [INFO] [stderr] 683 | 4 => { self.pc = mem.read((self.s as usize) + 0x100) as u16; self.inc_sp(); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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:684:52 [INFO] [stderr] | [INFO] [stderr] 684 | 5 => { self.pc = (self.pc & 0x00ff) | ((mem.read((self.s as usize) + 0x100) as u16) << 8 ); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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:703:31 [INFO] [stderr] | [INFO] [stderr] 703 | 3 => { self.pc = mem.read(self.ah_al() as usize) as u16; self.al= self.al.wrapping_add(1) }, // carry IS NOT propagated.. don't jump from (XXFF)! [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(self.ah_al() as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:704:51 [INFO] [stderr] | [INFO] [stderr] 704 | 4 => { self.pc = (self.pc & 0xFF) | ((mem.read(self.ah_al() as usize) as u16) << 8); }, // load PC and fetch. only one mem read [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(self.ah_al() as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:713:31 [INFO] [stderr] | [INFO] [stderr] 713 | 3 => { self.pc = mem.read((self.s as usize) + 0x100) as u16; self.inc_sp(); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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:714:51 [INFO] [stderr] | [INFO] [stderr] 714 | 4 => { self.pc = (self.pc & 0xFF) | ((mem.read((self.s as usize) + 0x100) as u16) << 8 ); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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 i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:724:37 [INFO] [stderr] | [INFO] [stderr] 724 | let newpc = self.pc as i16 as i32 + self.v1 as i8 as i32; // we extend sign [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.pc as i16)` [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:724:61 [INFO] [stderr] | [INFO] [stderr] 724 | let newpc = self.pc as i16 as i32 + self.v1 as i8 as i32; // we extend sign [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.v1 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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:730:54 [INFO] [stderr] | [INFO] [stderr] 730 | self.pc = self.pc & 0xFF | ((self.v2 as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v2)` [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:859:17 [INFO] [stderr] | [INFO] [stderr] 859 | let param = (mem.read(pr.pc.wrapping_sub(1) as usize) as u16) | [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(pr.pc.wrapping_sub(1) as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:860:18 [INFO] [stderr] | [INFO] [stderr] 860 | ((mem.read(pr.pc as usize) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(pr.pc as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/disasm.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | / pub fn addr_name(op: u8, v1: u16) -> String { [INFO] [stderr] 37 | | match op & 0x0F { [INFO] [stderr] 38 | | 0x00 => { [INFO] [stderr] 39 | | if op & 0x10 != 0 { [INFO] [stderr] ... | [INFO] [stderr] 148 | | } [INFO] [stderr] 149 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ppu.rs:228:39 [INFO] [stderr] | [INFO] [stderr] 228 | self.vram_addr |= ((data & 0x3f) as u16) << 8; // write top 6 bits [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data & 0x3f)` [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/ppu.rs:233:39 [INFO] [stderr] | [INFO] [stderr] 233 | self.vram_addr |= data as u16; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(data)` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/mmc/nrom.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | / match address { [INFO] [stderr] 51 | | 0x6000 ... 0x7FFF => { [INFO] [stderr] 52 | | let prg_ram_len = self.prg_ram.len(); [INFO] [stderr] 53 | | if prg_ram_len > 0 { [INFO] [stderr] ... | [INFO] [stderr] 57 | | _ => {} [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 50 | if let 0x6000 ... 0x7FFF = address { [INFO] [stderr] 51 | let prg_ram_len = self.prg_ram.len(); [INFO] [stderr] 52 | if prg_ram_len > 0 { [INFO] [stderr] 53 | self.prg_ram[((address - 0x6000) % (prg_ram_len as u16)) as usize] = data; [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cart.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn extract_header(cartridge: &Vec) -> NesHeader { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cart.rs:88:62 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn load_from_cartridge(nes_header: NesHeader, cartridge: &Vec) -> Box { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cart.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | offset = offset + 512; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `offset += 512` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cart.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | offset = offset + prg_rom_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `offset += prg_rom_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/cpu.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | fn read<'a>(&'a mut self, a: usize) -> u8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/cpu.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | fn write<'a>(&'a mut self, a: usize, v: u8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:123:9 [INFO] [stderr] | [INFO] [stderr] 123 | self.cycle = self.cycle + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.cycle += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:145:30 [INFO] [stderr] | [INFO] [stderr] 145 | fn ah_al(&self) -> u16 { (self.ah as u16) << 8 | (self.al as u16) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.ah)` [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:145:54 [INFO] [stderr] | [INFO] [stderr] 145 | fn ah_al(&self) -> u16 { (self.ah as u16) << 8 | (self.al as u16) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.al)` [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:148:58 [INFO] [stderr] | [INFO] [stderr] 148 | fn set_pc (&mut self, pch: u8, pcl: u8) { self.pc = ((pch as u16) << 8)| (pcl as u16); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pch)` [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:148:78 [INFO] [stderr] | [INFO] [stderr] 148 | fn set_pc (&mut self, pch: u8, pcl: u8) { self.pc = ((pch as u16) << 8)| (pcl as u16); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pcl)` [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:150:78 [INFO] [stderr] | [INFO] [stderr] 150 | fn set_pcl(&mut self, pcl: u8) { self.pc = (self.pc & 0xFF00) | (pcl as u16); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pcl)` [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:152:58 [INFO] [stderr] | [INFO] [stderr] 152 | fn set_pch(&mut self, pch: u8) { self.pc = ((pch as u16) << 8)| (self.pc & 0x00FF); } [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u16::from(pch)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | self.v1 = self.v1 << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v1 <<= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:172:9 [INFO] [stderr] | [INFO] [stderr] 172 | self.v1 = self.v1 >> 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v1 >>= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:200:25 [INFO] [stderr] | [INFO] [stderr] 200 | let tsum = (self.a as u16 + self.v1 as u16 + if self.p.c { 0x1 } else { 0x0 }) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(self.a)` [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:200:41 [INFO] [stderr] | [INFO] [stderr] 200 | let tsum = (self.a as u16 + self.v1 as u16 + if self.p.c { 0x1 } else { 0x0 }) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(self.v1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/cpu.rs:224:24 [INFO] [stderr] | [INFO] [stderr] 224 | self.p.c = !(tsub >= 0x100); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `tsub < 0x100` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:223:24 [INFO] [stderr] | [INFO] [stderr] 223 | let tsub = (self.a as u16).wrapping_sub(self.v1 as u16).wrapping_sub(if self.p.c { 0x0 } else { 0x1 } as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.a)` [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:223:53 [INFO] [stderr] | [INFO] [stderr] 223 | let tsub = (self.a as u16).wrapping_sub(self.v1 as u16).wrapping_sub(if self.p.c { 0x0 } else { 0x1 } as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(self.v1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:238:28 [INFO] [stderr] | [INFO] [stderr] 238 | fn op_and(&mut self) { self.a = self.a & self.v1; let tmp = self.a; self.fix_nz(tmp); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.a &= self.v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:239:28 [INFO] [stderr] | [INFO] [stderr] 239 | fn op_ora(&mut self) { self.a = self.a | self.v1; let tmp = self.a; self.fix_nz(tmp); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.a |= self.v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:240:28 [INFO] [stderr] | [INFO] [stderr] 240 | fn op_eor(&mut self) { self.a = self.a ^ self.v1; let tmp = self.a; self.fix_nz(tmp); } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.a ^= self.v1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:382:46 [INFO] [stderr] | [INFO] [stderr] 382 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:382:63 [INFO] [stderr] | [INFO] [stderr] 382 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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:414:46 [INFO] [stderr] | [INFO] [stderr] 414 | self.v2 = ((self.al as u16 + self.y as u16) >> 8) as u8; // here v2 is max 1 [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(self.al)` [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:414:63 [INFO] [stderr] | [INFO] [stderr] 414 | self.v2 = ((self.al as u16 + self.y as u16) >> 8) as u8; // here v2 is max 1 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:428:46 [INFO] [stderr] | [INFO] [stderr] 428 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:428:63 [INFO] [stderr] | [INFO] [stderr] 428 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:472:46 [INFO] [stderr] | [INFO] [stderr] 472 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:472:63 [INFO] [stderr] | [INFO] [stderr] 472 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:485:46 [INFO] [stderr] | [INFO] [stderr] 485 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:485:63 [INFO] [stderr] | [INFO] [stderr] 485 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:517:46 [INFO] [stderr] | [INFO] [stderr] 517 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:517:63 [INFO] [stderr] | [INFO] [stderr] 517 | self.v2 = ((self.al as u32 + self.y as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:550:46 [INFO] [stderr] | [INFO] [stderr] 550 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u32::from(self.al)` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:550:63 [INFO] [stderr] | [INFO] [stderr] 550 | self.v2 = ((self.al as u32 + self.x as u32) >> 8) as u8; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u32::from(self.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:683:30 [INFO] [stderr] | [INFO] [stderr] 683 | 4 => { self.pc = mem.read((self.s as usize) + 0x100) as u16; self.inc_sp(); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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:684:52 [INFO] [stderr] | [INFO] [stderr] 684 | 5 => { self.pc = (self.pc & 0x00ff) | ((mem.read((self.s as usize) + 0x100) as u16) << 8 ); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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:703:31 [INFO] [stderr] | [INFO] [stderr] 703 | 3 => { self.pc = mem.read(self.ah_al() as usize) as u16; self.al= self.al.wrapping_add(1) }, // carry IS NOT propagated.. don't jump from (XXFF)! [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(self.ah_al() as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:704:51 [INFO] [stderr] | [INFO] [stderr] 704 | 4 => { self.pc = (self.pc & 0xFF) | ((mem.read(self.ah_al() as usize) as u16) << 8); }, // load PC and fetch. only one mem read [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(self.ah_al() as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:713:31 [INFO] [stderr] | [INFO] [stderr] 713 | 3 => { self.pc = mem.read((self.s as usize) + 0x100) as u16; self.inc_sp(); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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:714:51 [INFO] [stderr] | [INFO] [stderr] 714 | 4 => { self.pc = (self.pc & 0xFF) | ((mem.read((self.s as usize) + 0x100) as u16) << 8 ); }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read((self.s as usize) + 0x100))` [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 i16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:724:37 [INFO] [stderr] | [INFO] [stderr] 724 | let newpc = self.pc as i16 as i32 + self.v1 as i8 as i32; // we extend sign [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.pc as i16)` [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:724:61 [INFO] [stderr] | [INFO] [stderr] 724 | let newpc = self.pc as i16 as i32 + self.v1 as i8 as i32; // we extend sign [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(self.v1 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 u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:730:54 [INFO] [stderr] | [INFO] [stderr] 730 | self.pc = self.pc & 0xFF | ((self.v2 as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v2)` [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:859:17 [INFO] [stderr] | [INFO] [stderr] 859 | let param = (mem.read(pr.pc.wrapping_sub(1) as usize) as u16) | [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(pr.pc.wrapping_sub(1) as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:860:18 [INFO] [stderr] | [INFO] [stderr] 860 | ((mem.read(pr.pc as usize) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(mem.read(pr.pc as usize))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/disasm.rs:36:1 [INFO] [stderr] | [INFO] [stderr] 36 | / pub fn addr_name(op: u8, v1: u16) -> String { [INFO] [stderr] 37 | | match op & 0x0F { [INFO] [stderr] 38 | | 0x00 => { [INFO] [stderr] 39 | | if op & 0x10 != 0 { [INFO] [stderr] ... | [INFO] [stderr] 148 | | } [INFO] [stderr] 149 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/ppu.rs:228:39 [INFO] [stderr] | [INFO] [stderr] 228 | self.vram_addr |= ((data & 0x3f) as u16) << 8; // write top 6 bits [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(data & 0x3f)` [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/ppu.rs:233:39 [INFO] [stderr] | [INFO] [stderr] 233 | self.vram_addr |= data as u16; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u16::from(data)` [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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/mmc/nrom.rs:50:9 [INFO] [stderr] | [INFO] [stderr] 50 | / match address { [INFO] [stderr] 51 | | 0x6000 ... 0x7FFF => { [INFO] [stderr] 52 | | let prg_ram_len = self.prg_ram.len(); [INFO] [stderr] 53 | | if prg_ram_len > 0 { [INFO] [stderr] ... | [INFO] [stderr] 57 | | _ => {} [INFO] [stderr] 58 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 50 | if let 0x6000 ... 0x7FFF = address { [INFO] [stderr] 51 | let prg_ram_len = self.prg_ram.len(); [INFO] [stderr] 52 | if prg_ram_len > 0 { [INFO] [stderr] 53 | self.prg_ram[((address - 0x6000) % (prg_ram_len as u16)) as usize] = data; [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cart.rs:43:34 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn extract_header(cartridge: &Vec) -> NesHeader { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cart.rs:88:62 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn load_from_cartridge(nes_header: NesHeader, cartridge: &Vec) -> Box { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cart.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | offset = offset + 512; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `offset += 512` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cart.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | offset = offset + prg_rom_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `offset += prg_rom_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 2.35s [INFO] running `"docker" "inspect" "02475326ea5a015b1a63d15a8e7549a02991620421fdeb4813a7690e4764331a"` [INFO] running `"docker" "rm" "-f" "02475326ea5a015b1a63d15a8e7549a02991620421fdeb4813a7690e4764331a"` [INFO] [stdout] 02475326ea5a015b1a63d15a8e7549a02991620421fdeb4813a7690e4764331a