[INFO] updating cached repository romatthe/mudkip [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/romatthe/mudkip [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/romatthe/mudkip" "work/ex/clippy-test-run/sources/stable/gh/romatthe/mudkip"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/romatthe/mudkip'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/romatthe/mudkip" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/romatthe/mudkip"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/romatthe/mudkip'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 1d3586d415b1fa2fce7745ccf7ab7a752d04b847 [INFO] sha for GitHub repo romatthe/mudkip: 1d3586d415b1fa2fce7745ccf7ab7a752d04b847 [INFO] validating manifest of romatthe/mudkip 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 romatthe/mudkip 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 romatthe/mudkip [INFO] finished frobbing romatthe/mudkip [INFO] frobbed toml for romatthe/mudkip written to work/ex/clippy-test-run/sources/stable/gh/romatthe/mudkip/Cargo.toml [INFO] started frobbing romatthe/mudkip [INFO] finished frobbing romatthe/mudkip [INFO] frobbed toml for romatthe/mudkip written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/romatthe/mudkip/Cargo.toml [INFO] crate romatthe/mudkip 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 romatthe/mudkip 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-2/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/romatthe/mudkip:/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] 3c78885a73b8a359c073dbc20dd4ebe4492bc9e13c1c64634a86d72176bbf86b [INFO] running `"docker" "start" "-a" "3c78885a73b8a359c073dbc20dd4ebe4492bc9e13c1c64634a86d72176bbf86b"` [INFO] [stderr] Checking memchr v1.0.2 [INFO] [stderr] Checking clap v2.29.1 [INFO] [stderr] Checking nom v3.2.1 [INFO] [stderr] Checking mudkip v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | opcode: opcode, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [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/disassembler.rs:252:13 [INFO] [stderr] | [INFO] [stderr] 252 | mnemonic: mnemonic, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mnemonic` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:253:13 [INFO] [stderr] | [INFO] [stderr] 253 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | cycles: cycles, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cycles` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | operands: operands [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operands` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:23 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:39 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mnemonic` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:59 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:71 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:87 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cycles` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:108:15 [INFO] [stderr] | [INFO] [stderr] 108 | ROM { header: header, prg_rom: prg_rom, chr_rom: chr_rom } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `header` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:108:31 [INFO] [stderr] | [INFO] [stderr] 108 | ROM { header: header, prg_rom: prg_rom, chr_rom: chr_rom } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `prg_rom` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:108:49 [INFO] [stderr] | [INFO] [stderr] 108 | ROM { header: header, prg_rom: prg_rom, chr_rom: chr_rom } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `chr_rom` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | prg_size: prg_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `prg_size` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | chr_size: chr_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `chr_size` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:251:13 [INFO] [stderr] | [INFO] [stderr] 251 | opcode: opcode, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [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/disassembler.rs:252:13 [INFO] [stderr] | [INFO] [stderr] 252 | mnemonic: mnemonic, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mnemonic` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:253:13 [INFO] [stderr] | [INFO] [stderr] 253 | mode: mode, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:255:13 [INFO] [stderr] | [INFO] [stderr] 255 | cycles: cycles, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cycles` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/disassembler.rs:256:13 [INFO] [stderr] | [INFO] [stderr] 256 | operands: operands [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `operands` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:23 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:39 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `mnemonic` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:59 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `mode` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:71 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `length` [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: redundant field names in struct initialization [INFO] [stderr] --> src/cpu/instructions.rs:254:87 [INFO] [stderr] | [INFO] [stderr] 254 | Instruction { opcode: opcode, mnemonic: mnemonic, mode: mode, length: length, cycles: cycles } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `cycles` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:108:15 [INFO] [stderr] | [INFO] [stderr] 108 | ROM { header: header, prg_rom: prg_rom, chr_rom: chr_rom } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `header` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:108:31 [INFO] [stderr] | [INFO] [stderr] 108 | ROM { header: header, prg_rom: prg_rom, chr_rom: chr_rom } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `prg_rom` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:108:49 [INFO] [stderr] | [INFO] [stderr] 108 | ROM { header: header, prg_rom: prg_rom, chr_rom: chr_rom } [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `chr_rom` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | prg_size: prg_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `prg_size` [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: redundant field names in struct initialization [INFO] [stderr] --> src/nes/rom.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | chr_size: chr_size, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `chr_size` [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: unused import: `cpu::instructions` [INFO] [stderr] --> src/cpu/disassembler.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use cpu::instructions; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Instruction` [INFO] [stderr] --> src/cpu/disassembler.rs:6:25 [INFO] [stderr] | [INFO] [stderr] 6 | use cpu::instructions::{Instruction, Mnemonic, OpCode}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Cursor` [INFO] [stderr] --> src/nes/rom.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::Cursor; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::instructions` [INFO] [stderr] --> src/cpu/disassembler.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use cpu::instructions; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Instruction` [INFO] [stderr] --> src/cpu/disassembler.rs:6:25 [INFO] [stderr] | [INFO] [stderr] 6 | use cpu::instructions::{Instruction, Mnemonic, OpCode}; [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::Cursor` [INFO] [stderr] --> src/nes/rom.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::io::Cursor; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Cursor`, `Read` [INFO] [stderr] --> src/main.rs:15:15 [INFO] [stderr] | [INFO] [stderr] 15 | use std::io::{Cursor, Read}; [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `LittleEndian`, `ReadBytesExt` [INFO] [stderr] --> src/main.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | use byteorder::{LittleEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::instructions` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use cpu::instructions; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::instructions::Instruction` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use cpu::instructions::Instruction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nes::NES` [INFO] [stderr] --> src/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use nes::NES; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Cursor`, `Read` [INFO] [stderr] --> src/main.rs:15:15 [INFO] [stderr] | [INFO] [stderr] 15 | use std::io::{Cursor, Read}; [INFO] [stderr] | ^^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `LittleEndian`, `ReadBytesExt` [INFO] [stderr] --> src/main.rs:18:17 [INFO] [stderr] | [INFO] [stderr] 18 | use byteorder::{LittleEndian, ReadBytesExt}; [INFO] [stderr] | ^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::instructions` [INFO] [stderr] --> src/main.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | use cpu::instructions; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `cpu::instructions::Instruction` [INFO] [stderr] --> src/main.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use cpu::instructions::Instruction; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `nes::NES` [INFO] [stderr] --> src/main.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | use nes::NES; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `needed` [INFO] [stderr] --> src/nes/rom.rs:131:29 [INFO] [stderr] | [INFO] [stderr] 131 | IResult::Incomplete(needed) => Err("Failed to parse ROM file"), [INFO] [stderr] | ^^^^^^ help: consider using `_needed` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/main.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | Err(err) => eprintln!("{} Invalid path {:?} specified!", Red.bold().paint("error:"), path) [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `prg_ram` [INFO] [stderr] --> src/nes/rom.rs:138:70 [INFO] [stderr] | [INFO] [stderr] 138 | fn new(prg_size: usize, chr_size: usize, flags6: u8, flags7: u8, prg_ram: u8, flags9: u8, flags10: u8) -> Header { [INFO] [stderr] | ^^^^^^^ help: consider using `_prg_ram` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `flags10` [INFO] [stderr] --> src/nes/rom.rs:138:95 [INFO] [stderr] | [INFO] [stderr] 138 | fn new(prg_size: usize, chr_size: usize, flags6: u8, flags7: u8, prg_ram: u8, flags9: u8, flags10: u8) -> Header { [INFO] [stderr] | ^^^^^^^ help: consider using `_flags10` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `decode` [INFO] [stderr] --> src/cpu/instructions.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn decode(opcode: OpCode) -> Instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Instruction` [INFO] [stderr] --> src/cpu/instructions.rs:244:1 [INFO] [stderr] | [INFO] [stderr] 244 | pub struct Instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu/instructions.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | fn new(opcode: OpCode, mnemonic: Mnemonic, mode: AddressingMode, length: u8, cycles: u8) -> Instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Address` [INFO] [stderr] --> src/cpu/memory.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | type Address = u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `WorkingMemory` [INFO] [stderr] --> src/cpu/mod.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | type WorkingMemory = [u8; 2048]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterA` [INFO] [stderr] --> src/cpu/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | type RegisterA = u8; // Accumulator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterX` [INFO] [stderr] --> src/cpu/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | type RegisterX = u8; // Index X register [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterY` [INFO] [stderr] --> src/cpu/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | type RegisterY = u8; // Index Y register [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterPC` [INFO] [stderr] --> src/cpu/mod.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | type RegisterPC = Address; // Program Counter register [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterSP` [INFO] [stderr] --> src/cpu/mod.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | type RegisterSP = u8; // Stack pointer [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Address` [INFO] [stderr] --> src/cpu/mod.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | type Address = u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Cpu` [INFO] [stderr] --> src/cpu/mod.rs:94:1 [INFO] [stderr] | [INFO] [stderr] 94 | pub struct Cpu { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CpuRegisters` [INFO] [stderr] --> src/cpu/mod.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | struct CpuRegisters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu/mod.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | fn new() -> CpuRegisters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu/mod.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn new() -> Cpu { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `power_on` [INFO] [stderr] --> src/cpu/mod.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | pub fn power_on (&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reset` [INFO] [stderr] --> src/cpu/mod.rs:133:5 [INFO] [stderr] | [INFO] [stderr] 133 | pub fn reset(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `step` [INFO] [stderr] --> src/cpu/mod.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn step(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `NES` [INFO] [stderr] --> src/nes/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub struct NES { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/nes/mod.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn new(mut file: File) -> NES { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `load_rom` [INFO] [stderr] --> src/nes/mod.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn load_rom(&mut self, mut file: File) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `run` [INFO] [stderr] --> src/nes/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn run(mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/disassembler.rs:279:233 [INFO] [stderr] | [INFO] [stderr] 279 | (&AddressingMode::REL, _) => write!(f, "${:04X} {:02X}{:02X} {:?} ${:02X}\t; ${:04X} ({})", self.address, self.opcode, self.operands[0], self.mnemonic, self.operands[0], jump_to_address(self.address.wrapping_add(self.length as u16), self.operands[0]), self.operands[0] as i8), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.length)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cpu/disassembler.rs:287:32 [INFO] [stderr] | [INFO] [stderr] 287 | fn to_little_endian_str(bytes: &Vec) -> String { [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: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu/disassembler.rs:298:19 [INFO] [stderr] | [INFO] [stderr] 298 | let address = address as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(address)` [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/disassembler.rs:304:16 [INFO] [stderr] | [INFO] [stderr] 304 | (address + (distance as i32)) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i32::from(distance)` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/cpu/memory.rs:6:14 [INFO] [stderr] | [INFO] [stderr] 6 | fn fetch(&Address) -> u8; [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/cpu/memory.rs:7:14 [INFO] [stderr] | [INFO] [stderr] 7 | fn store(&Address, &u8); [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/cpu/memory.rs:7:24 [INFO] [stderr] | [INFO] [stderr] 7 | fn store(&Address, &u8); [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: unused variable: `needed` [INFO] [stderr] --> src/nes/rom.rs:131:29 [INFO] [stderr] | [INFO] [stderr] 131 | IResult::Incomplete(needed) => Err("Failed to parse ROM file"), [INFO] [stderr] | ^^^^^^ help: consider using `_needed` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `err` [INFO] [stderr] --> src/main.rs:55:21 [INFO] [stderr] | [INFO] [stderr] 55 | Err(err) => eprintln!("{} Invalid path {:?} specified!", Red.bold().paint("error:"), path) [INFO] [stderr] | ^^^ help: consider using `_err` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `prg_ram` [INFO] [stderr] --> src/nes/rom.rs:138:70 [INFO] [stderr] | [INFO] [stderr] 138 | fn new(prg_size: usize, chr_size: usize, flags6: u8, flags7: u8, prg_ram: u8, flags9: u8, flags10: u8) -> Header { [INFO] [stderr] | ^^^^^^^ help: consider using `_prg_ram` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `flags10` [INFO] [stderr] --> src/nes/rom.rs:138:95 [INFO] [stderr] | [INFO] [stderr] 138 | fn new(prg_size: usize, chr_size: usize, flags6: u8, flags7: u8, prg_ram: u8, flags9: u8, flags10: u8) -> Header { [INFO] [stderr] | ^^^^^^^ help: consider using `_flags10` instead [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/mod.rs:148:45 [INFO] [stderr] | [INFO] [stderr] 148 | self.registers.pc = pc.wrapping_add(instruction.length as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(instruction.length)` [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/nes/rom.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | file.read_to_end(&mut buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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/main.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / match input.subcommand() { [INFO] [stderr] 45 | | // Use the disassemble function of the emulator [INFO] [stderr] 46 | | ("disassemble", Some(file_input)) => { [INFO] [stderr] 47 | | let path_str = file_input.value_of("file").unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 59 | | _ => () [INFO] [stderr] 60 | | } [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] 44 | if let ("disassemble", Some(file_input)) = input.subcommand() { [INFO] [stderr] 45 | let path_str = file_input.value_of("file").unwrap(); [INFO] [stderr] 46 | let path = Path::new(path_str); [INFO] [stderr] 47 | [INFO] [stderr] 48 | match File::open(path) { [INFO] [stderr] 49 | Ok(mut file) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: function is never used: `decode` [INFO] [stderr] --> src/cpu/instructions.rs:26:1 [INFO] [stderr] | [INFO] [stderr] 26 | pub fn decode(opcode: OpCode) -> Instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Instruction` [INFO] [stderr] --> src/cpu/instructions.rs:244:1 [INFO] [stderr] | [INFO] [stderr] 244 | pub struct Instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu/instructions.rs:253:5 [INFO] [stderr] | [INFO] [stderr] 253 | fn new(opcode: OpCode, mnemonic: Mnemonic, mode: AddressingMode, length: u8, cycles: u8) -> Instruction { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Address` [INFO] [stderr] --> src/cpu/memory.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | type Address = u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `WorkingMemory` [INFO] [stderr] --> src/cpu/mod.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | type WorkingMemory = [u8; 2048]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterA` [INFO] [stderr] --> src/cpu/mod.rs:11:1 [INFO] [stderr] | [INFO] [stderr] 11 | type RegisterA = u8; // Accumulator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterX` [INFO] [stderr] --> src/cpu/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | type RegisterX = u8; // Index X register [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterY` [INFO] [stderr] --> src/cpu/mod.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | type RegisterY = u8; // Index Y register [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterPC` [INFO] [stderr] --> src/cpu/mod.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | type RegisterPC = Address; // Program Counter register [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `RegisterSP` [INFO] [stderr] --> src/cpu/mod.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | type RegisterSP = u8; // Stack pointer [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias is never used: `Address` [INFO] [stderr] --> src/cpu/mod.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | type Address = u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `Cpu` [INFO] [stderr] --> src/cpu/mod.rs:94:1 [INFO] [stderr] | [INFO] [stderr] 94 | pub struct Cpu { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `CpuRegisters` [INFO] [stderr] --> src/cpu/mod.rs:101:1 [INFO] [stderr] | [INFO] [stderr] 101 | struct CpuRegisters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu/mod.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | fn new() -> CpuRegisters { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/cpu/mod.rs:116:5 [INFO] [stderr] | [INFO] [stderr] 116 | pub fn new() -> Cpu { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `power_on` [INFO] [stderr] --> src/cpu/mod.rs:124:5 [INFO] [stderr] | [INFO] [stderr] 124 | pub fn power_on (&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reset` [INFO] [stderr] --> src/cpu/mod.rs:133:5 [INFO] [stderr] | [INFO] [stderr] 133 | pub fn reset(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `step` [INFO] [stderr] --> src/cpu/mod.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | pub fn step(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct is never constructed: `NES` [INFO] [stderr] --> src/nes/mod.rs:9:1 [INFO] [stderr] | [INFO] [stderr] 9 | pub struct NES { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/nes/mod.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn new(mut file: File) -> NES { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `load_rom` [INFO] [stderr] --> src/nes/mod.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | pub fn load_rom(&mut self, mut file: File) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `run` [INFO] [stderr] --> src/nes/mod.rs:24:5 [INFO] [stderr] | [INFO] [stderr] 24 | pub fn run(mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/disassembler.rs:279:233 [INFO] [stderr] | [INFO] [stderr] 279 | (&AddressingMode::REL, _) => write!(f, "${:04X} {:02X}{:02X} {:?} ${:02X}\t; ${:04X} ({})", self.address, self.opcode, self.operands[0], self.mnemonic, self.operands[0], jump_to_address(self.address.wrapping_add(self.length as u16), self.operands[0]), self.operands[0] as i8), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.length)` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cpu/disassembler.rs:287:32 [INFO] [stderr] | [INFO] [stderr] 287 | fn to_little_endian_str(bytes: &Vec) -> String { [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: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/cpu/disassembler.rs:298:19 [INFO] [stderr] | [INFO] [stderr] 298 | let address = address as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i32::from(address)` [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/disassembler.rs:304:16 [INFO] [stderr] | [INFO] [stderr] 304 | (address + (distance as i32)) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `i32::from(distance)` [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 argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/cpu/memory.rs:6:14 [INFO] [stderr] | [INFO] [stderr] 6 | fn fetch(&Address) -> u8; [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/cpu/memory.rs:7:14 [INFO] [stderr] | [INFO] [stderr] 7 | fn store(&Address, &u8); [INFO] [stderr] | ^^^^^^^^ help: consider passing by value instead: `Address` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/cpu/memory.rs:7:24 [INFO] [stderr] | [INFO] [stderr] 7 | fn store(&Address, &u8); [INFO] [stderr] | ^^^ help: consider passing by value instead: `u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/mod.rs:148:45 [INFO] [stderr] | [INFO] [stderr] 148 | self.registers.pc = pc.wrapping_add(instruction.length as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(instruction.length)` [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: unused `std::result::Result` that must be used [INFO] [stderr] --> src/nes/rom.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | file.read_to_end(&mut buf); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] = note: this `Result` may be an `Err` variant, which should be handled [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/main.rs:44:5 [INFO] [stderr] | [INFO] [stderr] 44 | / match input.subcommand() { [INFO] [stderr] 45 | | // Use the disassemble function of the emulator [INFO] [stderr] 46 | | ("disassemble", Some(file_input)) => { [INFO] [stderr] 47 | | let path_str = file_input.value_of("file").unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 59 | | _ => () [INFO] [stderr] 60 | | } [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] 44 | if let ("disassemble", Some(file_input)) = input.subcommand() { [INFO] [stderr] 45 | let path_str = file_input.value_of("file").unwrap(); [INFO] [stderr] 46 | let path = Path::new(path_str); [INFO] [stderr] 47 | [INFO] [stderr] 48 | match File::open(path) { [INFO] [stderr] 49 | Ok(mut file) => { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 9.17s [INFO] running `"docker" "inspect" "3c78885a73b8a359c073dbc20dd4ebe4492bc9e13c1c64634a86d72176bbf86b"` [INFO] running `"docker" "rm" "-f" "3c78885a73b8a359c073dbc20dd4ebe4492bc9e13c1c64634a86d72176bbf86b"` [INFO] [stdout] 3c78885a73b8a359c073dbc20dd4ebe4492bc9e13c1c64634a86d72176bbf86b