[INFO] updating cached repository bokuweb/rustynes [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/bokuweb/rustynes [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/bokuweb/rustynes" "work/ex/clippy-test-run/sources/stable/gh/bokuweb/rustynes"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/bokuweb/rustynes'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/bokuweb/rustynes" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bokuweb/rustynes"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bokuweb/rustynes'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 068ae6333feb89a7c53f238f466d247f0666e070 [INFO] sha for GitHub repo bokuweb/rustynes: 068ae6333feb89a7c53f238f466d247f0666e070 [INFO] validating manifest of bokuweb/rustynes 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 bokuweb/rustynes 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 bokuweb/rustynes [INFO] finished frobbing bokuweb/rustynes [INFO] frobbed toml for bokuweb/rustynes written to work/ex/clippy-test-run/sources/stable/gh/bokuweb/rustynes/Cargo.toml [INFO] started frobbing bokuweb/rustynes [INFO] finished frobbing bokuweb/rustynes [INFO] frobbed toml for bokuweb/rustynes written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/bokuweb/rustynes/Cargo.toml [INFO] crate bokuweb/rustynes 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 bokuweb/rustynes 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-1/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/bokuweb/rustynes:/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] 6bacd7560ea226b4caef91a219fea8172dee73e2560c05bdd8ed22695e459776 [INFO] running `"docker" "start" "-a" "6bacd7560ea226b4caef91a219fea8172dee73e2560c05bdd8ed22695e459776"` [INFO] [stderr] Checking rustynes v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:105:44 [INFO] [stderr] | [INFO] [stderr] 105 | Instruction::LAX => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:106:44 [INFO] [stderr] | [INFO] [stderr] 106 | Instruction::SAX => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:107:44 [INFO] [stderr] | [INFO] [stderr] 107 | Instruction::DCP => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:108:44 [INFO] [stderr] | [INFO] [stderr] 108 | Instruction::ISB => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:109:44 [INFO] [stderr] | [INFO] [stderr] 109 | Instruction::SLO => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:110:44 [INFO] [stderr] | [INFO] [stderr] 110 | Instruction::RLA => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:111:44 [INFO] [stderr] | [INFO] [stderr] 111 | Instruction::SRE => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:112:44 [INFO] [stderr] | [INFO] [stderr] 112 | Instruction::RRA => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:105:44 [INFO] [stderr] | [INFO] [stderr] 105 | Instruction::LAX => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:106:44 [INFO] [stderr] | [INFO] [stderr] 106 | Instruction::SAX => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:107:44 [INFO] [stderr] | [INFO] [stderr] 107 | Instruction::DCP => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:108:44 [INFO] [stderr] | [INFO] [stderr] 108 | Instruction::ISB => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:109:44 [INFO] [stderr] | [INFO] [stderr] 109 | Instruction::SLO => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:110:44 [INFO] [stderr] | [INFO] [stderr] 110 | Instruction::RLA => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:111:44 [INFO] [stderr] | [INFO] [stderr] 111 | Instruction::SRE => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/nes/cpu/mod.rs:112:44 [INFO] [stderr] | [INFO] [stderr] 112 | Instruction::RRA => println!("{}", "TODO:Undocumented instruction"), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/nes/apu/constants.rs:2:30 [INFO] [stderr] | [INFO] [stderr] 2 | pub const CPU_CLOCK: usize = 1789772; [INFO] [stderr] | ^^^^^^^ help: consider: `1_789_772` [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/nes/apu/constants.rs:6:27 [INFO] [stderr] | [INFO] [stderr] 6 | pub const COUNTER_TABLE: &'static [u8] = &[0x0A, 0xFE, 0x14, 0x02, 0x28, 0x04, 0x50, 0x06, 0xA0, [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/nes/apu/constants.rs:14:38 [INFO] [stderr] | [INFO] [stderr] 14 | pub const NOISE_TIMER_PERIOD_TABLE: &'static [u16] = &[0x004, 0x008, 0x010, 0x020, 0x040, 0x060, [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [INFO] [stderr] | [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: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/fetch.rs:88:44 [INFO] [stderr] | [INFO] [stderr] 88 | let upper = bus.read((addr & 0xFF00) | ((((addr & 0xFF) + 1) & 0xFF)) as Addr) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:148:23 [INFO] [stderr] | [INFO] [stderr] 148 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:162:23 [INFO] [stderr] | [INFO] [stderr] 162 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:175:23 [INFO] [stderr] | [INFO] [stderr] 175 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:189:23 [INFO] [stderr] | [INFO] [stderr] 189 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/nes/cpu/instructions.rs:556:15 [INFO] [stderr] | [INFO] [stderr] 556 | bus.write((addr | 0x0100), data); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: inconsistent casing in hexadecimal literal [INFO] [stderr] --> src/nes/ppu/registers/mod.rs:168:28 [INFO] [stderr] | [INFO] [stderr] 168 | self.ppu_status &= 0xbF; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mixed_case_hex_literals)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mixed_case_hex_literals [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | data [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:36:16 [INFO] [stderr] | [INFO] [stderr] 36 | let data = vram.read(addr); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/nes/apu/constants.rs:2:30 [INFO] [stderr] | [INFO] [stderr] 2 | pub const CPU_CLOCK: usize = 1789772; [INFO] [stderr] | ^^^^^^^ help: consider: `1_789_772` [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/nes/apu/constants.rs:6:27 [INFO] [stderr] | [INFO] [stderr] 6 | pub const COUNTER_TABLE: &'static [u8] = &[0x0A, 0xFE, 0x14, 0x02, 0x28, 0x04, 0x50, 0x06, 0xA0, [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/nes/apu/constants.rs:14:38 [INFO] [stderr] | [INFO] [stderr] 14 | pub const NOISE_TIMER_PERIOD_TABLE: &'static [u16] = &[0x004, 0x008, 0x010, 0x020, 0x040, 0x060, [INFO] [stderr] | -^^^^^^^------ help: consider removing `'static`: `&[u16]` [INFO] [stderr] | [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: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/fetch.rs:88:44 [INFO] [stderr] | [INFO] [stderr] 88 | let upper = bus.read((addr & 0xFF00) | ((((addr & 0xFF) + 1) & 0xFF)) as Addr) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:148:23 [INFO] [stderr] | [INFO] [stderr] 148 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:162:23 [INFO] [stderr] | [INFO] [stderr] 162 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:175:23 [INFO] [stderr] | [INFO] [stderr] 175 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/nes/cpu/instructions.rs:189:23 [INFO] [stderr] | [INFO] [stderr] 189 | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: unnecessary parentheses around method argument [INFO] [stderr] --> src/nes/cpu/instructions.rs:556:15 [INFO] [stderr] | [INFO] [stderr] 556 | bus.write((addr | 0x0100), data); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: inconsistent casing in hexadecimal literal [INFO] [stderr] --> src/nes/ppu/registers/mod.rs:168:28 [INFO] [stderr] | [INFO] [stderr] 168 | self.ppu_status &= 0xbF; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mixed_case_hex_literals)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mixed_case_hex_literals [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:37:5 [INFO] [stderr] | [INFO] [stderr] 37 | data [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:36:16 [INFO] [stderr] | [INFO] [stderr] 36 | let data = vram.read(addr); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/nes/cpu/mod.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | _ => panic!("{}", "Undefined opecode detected."), [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `enable` [INFO] [stderr] --> src/nes/apu/noise.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn enable(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `disable` [INFO] [stderr] --> src/nes/apu/noise.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn disable(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: foreign function is never used: `close_oscillator` [INFO] [stderr] --> src/nes/apu/triangle.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | fn close_oscillator(index: usize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: foreign function is never used: `set_oscillator_pulse_width` [INFO] [stderr] --> src/nes/apu/triangle.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | fn set_oscillator_pulse_width(index: usize, width: f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_bank` [INFO] [stderr] --> src/nes/mmc/mod.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn get_bank(&self) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_mapper` [INFO] [stderr] --> src/nes/mmc/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn get_mapper(&self) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reset_addr` [INFO] [stderr] --> src/nes/ppu/registers/oam.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn reset_addr(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `eval` [INFO] [stderr] --> src/externs/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn eval(x: &str) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: foreign function is never used: `emscripten_run_script_int` [INFO] [stderr] --> src/externs/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn emscripten_run_script_int(x: *const c_uchar) -> c_int; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/nes/apu/noise.rs:64:12 [INFO] [stderr] | [INFO] [stderr] 64 | if self.envelope_generator_counter <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.envelope_generator_counter == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/nes/apu/noise.rs:108:33 [INFO] [stderr] | [INFO] [stderr] 108 | NOISE_TIMER_PERIOD_TABLE[data as usize & 0xF] as f32 / [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(NOISE_TIMER_PERIOD_TABLE[data as usize & 0xF])` [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] error: this `if` has identical blocks [INFO] [stderr] --> src/nes/apu/square.rs:106:54 [INFO] [stderr] | [INFO] [stderr] 106 | } else if self.divider_for_frequency < 8 { [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 107 | | self.stop(); [INFO] [stderr] 108 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/nes/apu/square.rs:104:51 [INFO] [stderr] | [INFO] [stderr] 104 | if self.divider_for_frequency > 0x7FF { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 105 | | self.stop(); [INFO] [stderr] 106 | | } else if self.divider_for_frequency < 8 { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/nes/apu/square.rs:163:12 [INFO] [stderr] | [INFO] [stderr] 163 | if self.envelope_generator_counter <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.envelope_generator_counter == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:51:21 [INFO] [stderr] | [INFO] [stderr] 51 | let lower = self.read(addr) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read(addr))` [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/nes/bus/cpu_bus.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | let upper = self.read(addr + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read(addr + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | 0x4000...0x401F => self.apu.read(addr - 0x4000), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | 0x4016 => self.keypad.read(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: unreachable pattern [INFO] [stderr] --> src/nes/cpu/mod.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | _ => panic!("{}", "Undefined opecode detected."), [INFO] [stderr] | ^ [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | 0x4000...0x401F => self.apu.write(addr - 0x4000, data), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | 0x4014 => self.dma.write(data), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unreachable_patterns)] on by default [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:19:34 [INFO] [stderr] | [INFO] [stderr] 19 | Addressing::Immediate => fetch(registers, bus) as Word, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:21:33 [INFO] [stderr] | [INFO] [stderr] 21 | Addressing::ZeroPage => fetch(registers, bus) as Word, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:34:17 [INFO] [stderr] | [INFO] [stderr] 34 | let lower = bus.read(registers.get_PC()) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(registers.get_PC()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | let upper = bus.read(registers.get_PC()) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(registers.get_PC()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:42:16 [INFO] [stderr] | [INFO] [stderr] 42 | let base = fetch(registers, bus) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:51:16 [INFO] [stderr] | [INFO] [stderr] 51 | let addr = fetch(registers, bus) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | (addr + registers.get_X() as Word) & 0xFF as Word [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/fetch.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | let addr = fetch(registers, bus) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | (addr + registers.get_Y() as Word) & 0xFF as Word [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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: the operation is ineffective. Consider reducing it to `(addr + registers.get_X() as Word)` [INFO] [stderr] --> src/nes/cpu/fetch.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | (addr + registers.get_X() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | (addr + registers.get_X() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_X())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(addr + registers.get_Y() as Word)` [INFO] [stderr] --> src/nes/cpu/fetch.rs:67:5 [INFO] [stderr] | [INFO] [stderr] 67 | (addr + registers.get_Y() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | (addr + registers.get_Y() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/fetch.rs:73:16 [INFO] [stderr] | [INFO] [stderr] 73 | let addr = ((fetch(registers, bus) + registers.get_X()) & 0xFF) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((fetch(registers, bus) + registers.get_X()) & 0xFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(fetch(registers, bus) + registers.get_X())` [INFO] [stderr] --> src/nes/cpu/fetch.rs:73:16 [INFO] [stderr] | [INFO] [stderr] 73 | let addr = ((fetch(registers, bus) + registers.get_X()) & 0xFF) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:74:16 [INFO] [stderr] | [INFO] [stderr] 74 | let addr = (bus.read(addr) as Addr) + ((bus.read((addr + 1) as Addr & 0xFF) as Addr) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(addr))` [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/nes/cpu/fetch.rs:74:44 [INFO] [stderr] | [INFO] [stderr] 74 | let addr = (bus.read(addr) as Addr) + ((bus.read((addr + 1) as Addr & 0xFF) as Addr) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read((addr + 1) as Addr & 0xFF))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `addr` [INFO] [stderr] --> src/nes/cpu/fetch.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | addr & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | let addr = fetch(registers, bus) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | let upper = bus.read((addr & 0xFF00) | ((((addr & 0xFF) + 1) & 0xFF)) as Addr) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read((addr & 0xFF00) | ((((addr & 0xFF) + 1) & 0xFF)) as Addr))` [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/nes/cpu/fetch.rs:89:16 [INFO] [stderr] | [INFO] [stderr] 89 | let addr = (bus.read(addr) as Addr) + (upper << 8) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(addr))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `addr` [INFO] [stderr] --> src/nes/cpu/fetch.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | addr & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/nes/cpu/instructions.rs:147:23 [INFO] [stderr] | [INFO] [stderr] 147 | .set_overflow(!(((acc ^ (operand as Data)) & 0x80) != 0) && [INFO] [stderr] | _______________________^ [INFO] [stderr] 148 | | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | |______________________________________________________________^ help: try: `((acc ^ (operand as Data)) & 0x80) == 0 && (((acc ^ computed as Data) & 0x80)) != 0` [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/nes/cpu/instructions.rs:143:39 [INFO] [stderr] | [INFO] [stderr] 143 | let computed = (operand as u16) + registers.get_A() as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/instructions.rs:144:20 [INFO] [stderr] | [INFO] [stderr] 144 | bool_to_u8(registers.get_carry()) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bool_to_u8(registers.get_carry()))` [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/nes/cpu/instructions.rs:161:23 [INFO] [stderr] | [INFO] [stderr] 161 | .set_overflow(!(((acc ^ (fetched as Data)) & 0x80) != 0) && [INFO] [stderr] | _______________________^ [INFO] [stderr] 162 | | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | |______________________________________________________________^ help: try: `((acc ^ (fetched as Data)) & 0x80) == 0 && (((acc ^ computed as Data) & 0x80)) != 0` [INFO] [stderr] | [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/nes/cpu/instructions.rs:157:20 [INFO] [stderr] | [INFO] [stderr] 157 | let computed = fetched as u16 + registers.get_A() as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(fetched)` [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/nes/cpu/instructions.rs:157:37 [INFO] [stderr] | [INFO] [stderr] 157 | let computed = fetched as u16 + registers.get_A() as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/instructions.rs:158:20 [INFO] [stderr] | [INFO] [stderr] 158 | bool_to_u8(registers.get_carry()) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bool_to_u8(registers.get_carry()))` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:170:20 [INFO] [stderr] | [INFO] [stderr] 170 | let computed = registers.get_A() as i16 - (operand as i16) - [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:171:20 [INFO] [stderr] | [INFO] [stderr] 171 | bool_to_u8(!registers.get_carry()) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(bool_to_u8(!registers.get_carry()))` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:184:20 [INFO] [stderr] | [INFO] [stderr] 184 | let computed = registers.get_A() as i16 - fetched as i16 - [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:184:47 [INFO] [stderr] | [INFO] [stderr] 184 | let computed = registers.get_A() as i16 - fetched as i16 - [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:185:20 [INFO] [stderr] | [INFO] [stderr] 185 | bool_to_u8(!registers.get_carry()) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(bool_to_u8(!registers.get_carry()))` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:197:20 [INFO] [stderr] | [INFO] [stderr] 197 | let computed = registers.get_X() as i16 - (operand as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:206:20 [INFO] [stderr] | [INFO] [stderr] 206 | let computed = registers.get_X() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:206:47 [INFO] [stderr] | [INFO] [stderr] 206 | let computed = registers.get_X() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:214:20 [INFO] [stderr] | [INFO] [stderr] 214 | let computed = registers.get_Y() as i16 - (operand as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:223:20 [INFO] [stderr] | [INFO] [stderr] 223 | let computed = registers.get_Y() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:223:47 [INFO] [stderr] | [INFO] [stderr] 223 | let computed = registers.get_Y() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:231:20 [INFO] [stderr] | [INFO] [stderr] 231 | let computed = (registers.get_A() as i16) - (operand as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | let computed = (registers.get_A() as i16) - (fetched as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:240:49 [INFO] [stderr] | [INFO] [stderr] 240 | let computed = (registers.get_A() as i16) - (fetched as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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/nes/cpu/instructions.rs:555:16 [INFO] [stderr] | [INFO] [stderr] 555 | let addr = registers.get_SP() as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_SP())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:567:25 [INFO] [stderr] | [INFO] [stderr] 567 | let addr = 0x0100 | registers.get_SP() as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_SP())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:572:17 [INFO] [stderr] | [INFO] [stderr] 572 | let lower = pop(registers, bus) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(pop(registers, bus))` [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/nes/cpu/instructions.rs:573:17 [INFO] [stderr] | [INFO] [stderr] 573 | let upper = pop(registers, bus) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(pop(registers, bus))` [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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/nes/cpu/mod.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | let ref map = opecode::MAP; [INFO] [stderr] | ----^^^^^^^---------------- help: try: `let map = &opecode::MAP;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/dma/mod.rs:29:20 [INFO] [stderr] | [INFO] [stderr] 29 | let addr = (self.register as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.register)` [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] error: &-masking with zero [INFO] [stderr] --> src/nes/keypad/mod.rs:28:33 [INFO] [stderr] | [INFO] [stderr] 28 | } else if self.reset && data & 0x00 == 0x00 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::bad_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bad_bit_mask [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/nes/keypad/mod.rs:28:33 [INFO] [stderr] | [INFO] [stderr] 28 | } else if self.reset && data & 0x00 == 0x00 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/mmc/mod.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | addr + (self.bank as u16) * 0x2000 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.bank)` [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 function has too many arguments (8/7) [INFO] [stderr] --> src/nes/ppu/background.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn build_line( [INFO] [stderr] 35 | | &mut self, [INFO] [stderr] 36 | | vram: &Ram, [INFO] [stderr] 37 | | cram: &Ram, [INFO] [stderr] ... | [INFO] [stderr] 63 | | } [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/nes/ppu/background.rs:51:18 [INFO] [stderr] | [INFO] [stderr] 51 | for x in 0..(TILE_PER_LINE + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=TILE_PER_LINE` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/background.rs:55:53 [INFO] [stderr] | [INFO] [stderr] 55 | config.offset_addr_by_name_table = Some((name_table_id as Addr) * 0x400); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(name_table_id)` [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/nes/ppu/registers/oam.rs:31:21 [INFO] [stderr] | [INFO] [stderr] 31 | self.addr = data as Addr; [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/registers/ppu_addr.rs:38:26 [INFO] [stderr] | [INFO] [stderr] 38 | self.addr += data as Addr; [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/registers/ppu_addr.rs:41:25 [INFO] [stderr] | [INFO] [stderr] 41 | self.addr = (data as Addr) << 8; [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/sprite.rs:41:42 [INFO] [stderr] | [INFO] [stderr] 41 | let offset = 0x1000u16 * (sprite_id & 0x01) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(sprite_id & 0x01)` [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/nes/ppu/sprite_utils.rs:28:31 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn get_block_id(position: &SpritePosition) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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/nes/ppu/sprite_utils.rs:32:44 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn get_sprite_id(vram: &Ram, position: &SpritePosition, config: &SpriteConfig) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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/nes/ppu/sprite_utils.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | let tile_number = position.1 as Addr * 32 + position.0 as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(position.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:33:49 [INFO] [stderr] | [INFO] [stderr] 33 | let tile_number = position.1 as Addr * 32 + position.0 as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(position.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn get_attribute(vram: &Ram, position: &SpritePosition, config: &SpriteConfig) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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/nes/ppu/sprite_utils.rs:41:25 [INFO] [stderr] | [INFO] [stderr] 41 | let addr = 0x03C0 + ((position.0 / 4) + ((position.1 / 4) * 8)) as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((position.0 / 4) + ((position.1 / 4) * 8))` [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: identical conversion [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:48:30 [INFO] [stderr] | [INFO] [stderr] 48 | let mut sprite: Sprite = (0..8 * h).into_iter().map(|_| vec![0; 8 * h]).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..8 * h)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:52:28 [INFO] [stderr] | [INFO] [stderr] 52 | let addr = ((sprite_id + (k as u8)) as u16) * 16 + i + offset; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(sprite_id + (k as u8))` [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/nes/ppu/tile.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | position: &SpritePosition, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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: manual implementation of an assign operation [INFO] [stderr] --> src/nes/ppu/mod.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | self.line = self.line + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.line += 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:23:42 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn render(&mut self, background: &BackgroundField, sprites: &SpritesWithCtx) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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/nes/renderer/mod.rs:23:69 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn render(&mut self, background: &BackgroundField, sprites: &SpritesWithCtx) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:31:65 [INFO] [stderr] | [INFO] [stderr] 31 | fn should_pixel_hide(&self, x: usize, y: usize, background: &BackgroundField) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:40:49 [INFO] [stderr] | [INFO] [stderr] 40 | fn render_background(&mut self, background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/nes/renderer/mod.rs:41:35 [INFO] [stderr] | [INFO] [stderr] 41 | for (i, bg) in background.into_iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/nes/renderer/mod.rs:50:43 [INFO] [stderr] | [INFO] [stderr] 50 | fn render_sprites(&mut self, sprites: &SpritesWithCtx, background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:50:72 [INFO] [stderr] | [INFO] [stderr] 50 | fn render_sprites(&mut self, sprites: &SpritesWithCtx, background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:61:30 [INFO] [stderr] | [INFO] [stderr] 61 | sprite: &Sprite, [INFO] [stderr] | ^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:63:31 [INFO] [stderr] | [INFO] [stderr] 63 | palette: &PaletteList, [INFO] [stderr] | ^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:65:34 [INFO] [stderr] | [INFO] [stderr] 65 | background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nes/renderer/mod.rs:62:32 [INFO] [stderr] | [INFO] [stderr] 62 | position: &SpritePosition, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/nes/renderer/mod.rs:101:24 [INFO] [stderr] | [INFO] [stderr] 101 | let offset_x = (bg.scroll_x % 8) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bg.scroll_x % 8)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/nes/renderer/mod.rs:102:24 [INFO] [stderr] | [INFO] [stderr] 102 | let offset_y = (bg.scroll_y % 8) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bg.scroll_y % 8)` [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/nes/mod.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | cpu::run(&mut ctx.cpu_registers, &mut cpu_bus, &mut ctx.nmi) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu::run(&mut ctx.cpu_registers, &mut cpu_bus, &mut ctx.nmi))` [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: length comparison to zero [INFO] [stderr] --> src/nes/mod.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | if ctx.ppu.background.0.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ctx.ppu.background.0.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/main.rs:14:66 [INFO] [stderr] | [INFO] [stderr] 14 | let buf: &mut [u8] = unsafe { std::slice::from_raw_parts_mut(ptr, len + 1) }; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rustynes`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: method is never used: `enable` [INFO] [stderr] --> src/nes/apu/noise.rs:42:5 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn enable(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `disable` [INFO] [stderr] --> src/nes/apu/noise.rs:47:5 [INFO] [stderr] | [INFO] [stderr] 47 | pub fn disable(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: foreign function is never used: `close_oscillator` [INFO] [stderr] --> src/nes/apu/triangle.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | fn close_oscillator(index: usize); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: foreign function is never used: `set_oscillator_pulse_width` [INFO] [stderr] --> src/nes/apu/triangle.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | fn set_oscillator_pulse_width(index: usize, width: f32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_bank` [INFO] [stderr] --> src/nes/mmc/mod.rs:16:5 [INFO] [stderr] | [INFO] [stderr] 16 | pub fn get_bank(&self) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_mapper` [INFO] [stderr] --> src/nes/mmc/mod.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn get_mapper(&self) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `reset_addr` [INFO] [stderr] --> src/nes/ppu/registers/oam.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn reset_addr(&mut self) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `eval` [INFO] [stderr] --> src/externs/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn eval(x: &str) -> i32 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: foreign function is never used: `emscripten_run_script_int` [INFO] [stderr] --> src/externs/mod.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn emscripten_run_script_int(x: *const c_uchar) -> c_int; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/nes/apu/noise.rs:64:12 [INFO] [stderr] | [INFO] [stderr] 64 | if self.envelope_generator_counter <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::absurd_extreme_comparisons)] on by default [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.envelope_generator_counter == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: casting u16 to f32 may become silently lossy if types change [INFO] [stderr] --> src/nes/apu/noise.rs:108:33 [INFO] [stderr] | [INFO] [stderr] 108 | NOISE_TIMER_PERIOD_TABLE[data as usize & 0xF] as f32 / [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f32::from(NOISE_TIMER_PERIOD_TABLE[data as usize & 0xF])` [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] error: this `if` has identical blocks [INFO] [stderr] --> src/nes/apu/square.rs:106:54 [INFO] [stderr] | [INFO] [stderr] 106 | } else if self.divider_for_frequency < 8 { [INFO] [stderr] | ______________________________________________________^ [INFO] [stderr] 107 | | self.stop(); [INFO] [stderr] 108 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/nes/apu/square.rs:104:51 [INFO] [stderr] | [INFO] [stderr] 104 | if self.divider_for_frequency > 0x7FF { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 105 | | self.stop(); [INFO] [stderr] 106 | | } else if self.divider_for_frequency < 8 { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] error: this comparison involving the minimum or maximum element for this type contains a case that is always true or always false [INFO] [stderr] --> src/nes/apu/square.rs:163:12 [INFO] [stderr] | [INFO] [stderr] 163 | if self.envelope_generator_counter <= 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: because 0 is the minimum value for this type, the case where the two sides are not equal never occurs, consider using self.envelope_generator_counter == 0 instead [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#absurd_extreme_comparisons [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:51:21 [INFO] [stderr] | [INFO] [stderr] 51 | let lower = self.read(addr) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read(addr))` [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/nes/bus/cpu_bus.rs:52:21 [INFO] [stderr] | [INFO] [stderr] 52 | let upper = self.read(addr + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read(addr + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | 0x4000...0x401F => self.apu.read(addr - 0x4000), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:60:13 [INFO] [stderr] | [INFO] [stderr] 60 | 0x4016 => self.keypad.read(), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | 0x4000...0x401F => self.apu.write(addr - 0x4000, data), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/nes/bus/cpu_bus.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | 0x4014 => self.dma.write(data), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:19:34 [INFO] [stderr] | [INFO] [stderr] 19 | Addressing::Immediate => fetch(registers, bus) as Word, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:21:33 [INFO] [stderr] | [INFO] [stderr] 21 | Addressing::ZeroPage => fetch(registers, bus) as Word, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:34:17 [INFO] [stderr] | [INFO] [stderr] 34 | let lower = bus.read(registers.get_PC()) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(registers.get_PC()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:36:17 [INFO] [stderr] | [INFO] [stderr] 36 | let upper = bus.read(registers.get_PC()) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(registers.get_PC()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:42:16 [INFO] [stderr] | [INFO] [stderr] 42 | let base = fetch(registers, bus) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:51:16 [INFO] [stderr] | [INFO] [stderr] 51 | let addr = fetch(registers, bus) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | (addr + registers.get_X() as Word) & 0xFF as Word [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/fetch.rs:56:16 [INFO] [stderr] | [INFO] [stderr] 56 | let addr = fetch(registers, bus) as Word; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | (addr + registers.get_Y() as Word) & 0xFF as Word [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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: the operation is ineffective. Consider reducing it to `(addr + registers.get_X() as Word)` [INFO] [stderr] --> src/nes/cpu/fetch.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | (addr + registers.get_X() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | (addr + registers.get_X() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_X())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(addr + registers.get_Y() as Word)` [INFO] [stderr] --> src/nes/cpu/fetch.rs:67:5 [INFO] [stderr] | [INFO] [stderr] 67 | (addr + registers.get_Y() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | (addr + registers.get_Y() as Word) & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/fetch.rs:73:16 [INFO] [stderr] | [INFO] [stderr] 73 | let addr = ((fetch(registers, bus) + registers.get_X()) & 0xFF) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((fetch(registers, bus) + registers.get_X()) & 0xFF)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `(fetch(registers, bus) + registers.get_X())` [INFO] [stderr] --> src/nes/cpu/fetch.rs:73:16 [INFO] [stderr] | [INFO] [stderr] 73 | let addr = ((fetch(registers, bus) + registers.get_X()) & 0xFF) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:74:16 [INFO] [stderr] | [INFO] [stderr] 74 | let addr = (bus.read(addr) as Addr) + ((bus.read((addr + 1) as Addr & 0xFF) as Addr) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(addr))` [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/nes/cpu/fetch.rs:74:44 [INFO] [stderr] | [INFO] [stderr] 74 | let addr = (bus.read(addr) as Addr) + ((bus.read((addr + 1) as Addr & 0xFF) as Addr) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read((addr + 1) as Addr & 0xFF))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `addr` [INFO] [stderr] --> src/nes/cpu/fetch.rs:75:5 [INFO] [stderr] | [INFO] [stderr] 75 | addr & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/fetch.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | let addr = fetch(registers, bus) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(fetch(registers, bus))` [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/nes/cpu/fetch.rs:88:17 [INFO] [stderr] | [INFO] [stderr] 88 | let upper = bus.read((addr & 0xFF00) | ((((addr & 0xFF) + 1) & 0xFF)) as Addr) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read((addr & 0xFF00) | ((((addr & 0xFF) + 1) & 0xFF)) as Addr))` [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/nes/cpu/fetch.rs:89:16 [INFO] [stderr] | [INFO] [stderr] 89 | let addr = (bus.read(addr) as Addr) + (upper << 8) as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bus.read(addr))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `addr` [INFO] [stderr] --> src/nes/cpu/fetch.rs:90:5 [INFO] [stderr] | [INFO] [stderr] 90 | addr & 0xFFFF [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/nes/cpu/instructions.rs:147:23 [INFO] [stderr] | [INFO] [stderr] 147 | .set_overflow(!(((acc ^ (operand as Data)) & 0x80) != 0) && [INFO] [stderr] | _______________________^ [INFO] [stderr] 148 | | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | |______________________________________________________________^ help: try: `((acc ^ (operand as Data)) & 0x80) == 0 && (((acc ^ computed as Data) & 0x80)) != 0` [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/nes/cpu/instructions.rs:143:39 [INFO] [stderr] | [INFO] [stderr] 143 | let computed = (operand as u16) + registers.get_A() as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/instructions.rs:144:20 [INFO] [stderr] | [INFO] [stderr] 144 | bool_to_u8(registers.get_carry()) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bool_to_u8(registers.get_carry()))` [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/nes/cpu/instructions.rs:161:23 [INFO] [stderr] | [INFO] [stderr] 161 | .set_overflow(!(((acc ^ (fetched as Data)) & 0x80) != 0) && [INFO] [stderr] | _______________________^ [INFO] [stderr] 162 | | (((acc ^ computed as Data) & 0x80)) != 0) [INFO] [stderr] | |______________________________________________________________^ help: try: `((acc ^ (fetched as Data)) & 0x80) == 0 && (((acc ^ computed as Data) & 0x80)) != 0` [INFO] [stderr] | [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/nes/cpu/instructions.rs:157:20 [INFO] [stderr] | [INFO] [stderr] 157 | let computed = fetched as u16 + registers.get_A() as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(fetched)` [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/nes/cpu/instructions.rs:157:37 [INFO] [stderr] | [INFO] [stderr] 157 | let computed = fetched as u16 + registers.get_A() as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_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/nes/cpu/instructions.rs:158:20 [INFO] [stderr] | [INFO] [stderr] 158 | bool_to_u8(registers.get_carry()) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(bool_to_u8(registers.get_carry()))` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:170:20 [INFO] [stderr] | [INFO] [stderr] 170 | let computed = registers.get_A() as i16 - (operand as i16) - [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:171:20 [INFO] [stderr] | [INFO] [stderr] 171 | bool_to_u8(!registers.get_carry()) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(bool_to_u8(!registers.get_carry()))` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:184:20 [INFO] [stderr] | [INFO] [stderr] 184 | let computed = registers.get_A() as i16 - fetched as i16 - [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:184:47 [INFO] [stderr] | [INFO] [stderr] 184 | let computed = registers.get_A() as i16 - fetched as i16 - [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:185:20 [INFO] [stderr] | [INFO] [stderr] 185 | bool_to_u8(!registers.get_carry()) as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(bool_to_u8(!registers.get_carry()))` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:197:20 [INFO] [stderr] | [INFO] [stderr] 197 | let computed = registers.get_X() as i16 - (operand as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:206:20 [INFO] [stderr] | [INFO] [stderr] 206 | let computed = registers.get_X() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:206:47 [INFO] [stderr] | [INFO] [stderr] 206 | let computed = registers.get_X() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:214:20 [INFO] [stderr] | [INFO] [stderr] 214 | let computed = registers.get_Y() as i16 - (operand as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:223:20 [INFO] [stderr] | [INFO] [stderr] 223 | let computed = registers.get_Y() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:223:47 [INFO] [stderr] | [INFO] [stderr] 223 | let computed = registers.get_Y() as i16 - fetched as i16; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:231:20 [INFO] [stderr] | [INFO] [stderr] 231 | let computed = (registers.get_A() as i16) - (operand as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:240:20 [INFO] [stderr] | [INFO] [stderr] 240 | let computed = (registers.get_A() as i16) - (fetched as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(registers.get_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 i16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:240:49 [INFO] [stderr] | [INFO] [stderr] 240 | let computed = (registers.get_A() as i16) - (fetched as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i16::from(fetched)` [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/nes/cpu/instructions.rs:555:16 [INFO] [stderr] | [INFO] [stderr] 555 | let addr = registers.get_SP() as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_SP())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:567:25 [INFO] [stderr] | [INFO] [stderr] 567 | let addr = 0x0100 | registers.get_SP() as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(registers.get_SP())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/cpu/instructions.rs:572:17 [INFO] [stderr] | [INFO] [stderr] 572 | let lower = pop(registers, bus) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(pop(registers, bus))` [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/nes/cpu/instructions.rs:573:17 [INFO] [stderr] | [INFO] [stderr] 573 | let upper = pop(registers, bus) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(pop(registers, bus))` [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/nes/cpu/instructions.rs:612:25 [INFO] [stderr] | [INFO] [stderr] 612 | let lower = self.read(addr) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read(addr))` [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/nes/cpu/instructions.rs:613:25 [INFO] [stderr] | [INFO] [stderr] 613 | let upper = self.read(addr + 1) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.read(addr + 1))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/nes/cpu/mod.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | let ref map = opecode::MAP; [INFO] [stderr] | ----^^^^^^^---------------- help: try: `let map = &opecode::MAP;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/dma/mod.rs:29:20 [INFO] [stderr] | [INFO] [stderr] 29 | let addr = (self.register as u16) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.register)` [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] error: &-masking with zero [INFO] [stderr] --> src/nes/keypad/mod.rs:28:33 [INFO] [stderr] | [INFO] [stderr] 28 | } else if self.reset && data & 0x00 == 0x00 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::bad_bit_mask)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bad_bit_mask [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/nes/keypad/mod.rs:28:33 [INFO] [stderr] | [INFO] [stderr] 28 | } else if self.reset && data & 0x00 == 0x00 { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/mmc/mod.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | addr + (self.bank as u16) * 0x2000 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.bank)` [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 function has too many arguments (8/7) [INFO] [stderr] --> src/nes/ppu/background.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn build_line( [INFO] [stderr] 35 | | &mut self, [INFO] [stderr] 36 | | vram: &Ram, [INFO] [stderr] 37 | | cram: &Ram, [INFO] [stderr] ... | [INFO] [stderr] 63 | | } [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/nes/ppu/background.rs:51:18 [INFO] [stderr] | [INFO] [stderr] 51 | for x in 0..(TILE_PER_LINE + 1) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: use: `0..=TILE_PER_LINE` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/background.rs:55:53 [INFO] [stderr] | [INFO] [stderr] 55 | config.offset_addr_by_name_table = Some((name_table_id as Addr) * 0x400); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(name_table_id)` [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/nes/ppu/registers/oam.rs:31:21 [INFO] [stderr] | [INFO] [stderr] 31 | self.addr = data as Addr; [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/registers/ppu_addr.rs:38:26 [INFO] [stderr] | [INFO] [stderr] 38 | self.addr += data as Addr; [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/registers/ppu_addr.rs:41:25 [INFO] [stderr] | [INFO] [stderr] 41 | self.addr = (data as Addr) << 8; [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/sprite.rs:41:42 [INFO] [stderr] | [INFO] [stderr] 41 | let offset = 0x1000u16 * (sprite_id & 0x01) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(sprite_id & 0x01)` [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/nes/ppu/sprite_utils.rs:28:31 [INFO] [stderr] | [INFO] [stderr] 28 | pub fn get_block_id(position: &SpritePosition) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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/nes/ppu/sprite_utils.rs:32:44 [INFO] [stderr] | [INFO] [stderr] 32 | pub fn get_sprite_id(vram: &Ram, position: &SpritePosition, config: &SpriteConfig) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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/nes/ppu/sprite_utils.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | let tile_number = position.1 as Addr * 32 + position.0 as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(position.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:33:49 [INFO] [stderr] | [INFO] [stderr] 33 | let tile_number = position.1 as Addr * 32 + position.0 as Addr; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(position.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn get_attribute(vram: &Ram, position: &SpritePosition, config: &SpriteConfig) -> u8 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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/nes/ppu/sprite_utils.rs:41:25 [INFO] [stderr] | [INFO] [stderr] 41 | let addr = 0x03C0 + ((position.0 / 4) + ((position.1 / 4) * 8)) as u16 + [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((position.0 / 4) + ((position.1 / 4) * 8))` [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: identical conversion [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:48:30 [INFO] [stderr] | [INFO] [stderr] 48 | let mut sprite: Sprite = (0..8 * h).into_iter().map(|_| vec![0; 8 * h]).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into_iter()`: `(0..8 * h)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/nes/ppu/sprite_utils.rs:52:28 [INFO] [stderr] | [INFO] [stderr] 52 | let addr = ((sprite_id + (k as u8)) as u16) * 16 + i + offset; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(sprite_id + (k as u8))` [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/nes/ppu/tile.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | position: &SpritePosition, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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: manual implementation of an assign operation [INFO] [stderr] --> src/nes/ppu/mod.rs:91:9 [INFO] [stderr] | [INFO] [stderr] 91 | self.line = self.line + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.line += 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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:23:42 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn render(&mut self, background: &BackgroundField, sprites: &SpritesWithCtx) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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/nes/renderer/mod.rs:23:69 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn render(&mut self, background: &BackgroundField, sprites: &SpritesWithCtx) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:31:65 [INFO] [stderr] | [INFO] [stderr] 31 | fn should_pixel_hide(&self, x: usize, y: usize, background: &BackgroundField) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:40:49 [INFO] [stderr] | [INFO] [stderr] 40 | fn render_background(&mut self, background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: this .into_iter() call is equivalent to .iter() and will not move the Vec [INFO] [stderr] --> src/nes/renderer/mod.rs:41:35 [INFO] [stderr] | [INFO] [stderr] 41 | for (i, bg) in background.into_iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::into_iter_on_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [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/nes/renderer/mod.rs:50:43 [INFO] [stderr] | [INFO] [stderr] 50 | fn render_sprites(&mut self, sprites: &SpritesWithCtx, background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:50:72 [INFO] [stderr] | [INFO] [stderr] 50 | fn render_sprites(&mut self, sprites: &SpritesWithCtx, background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:61:30 [INFO] [stderr] | [INFO] [stderr] 61 | sprite: &Sprite, [INFO] [stderr] | ^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:63:31 [INFO] [stderr] | [INFO] [stderr] 63 | palette: &PaletteList, [INFO] [stderr] | ^^^^^^^^^^^^ [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/nes/renderer/mod.rs:65:34 [INFO] [stderr] | [INFO] [stderr] 65 | background: &BackgroundField) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [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: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/nes/renderer/mod.rs:62:32 [INFO] [stderr] | [INFO] [stderr] 62 | position: &SpritePosition, [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider passing by value instead: `SpritePosition` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/nes/renderer/mod.rs:101:24 [INFO] [stderr] | [INFO] [stderr] 101 | let offset_x = (bg.scroll_x % 8) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bg.scroll_x % 8)` [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 i32 may become silently lossy if types change [INFO] [stderr] --> src/nes/renderer/mod.rs:102:24 [INFO] [stderr] | [INFO] [stderr] 102 | let offset_y = (bg.scroll_y % 8) as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(bg.scroll_y % 8)` [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/nes/mod.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | cpu::run(&mut ctx.cpu_registers, &mut cpu_bus, &mut ctx.nmi) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu::run(&mut ctx.cpu_registers, &mut cpu_bus, &mut ctx.nmi))` [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: length comparison to zero [INFO] [stderr] --> src/nes/mod.rs:81:16 [INFO] [stderr] | [INFO] [stderr] 81 | if ctx.ppu.background.0.len() != 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!ctx.ppu.background.0.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: this public function dereferences a raw pointer but is not marked `unsafe` [INFO] [stderr] --> src/main.rs:14:66 [INFO] [stderr] | [INFO] [stderr] 14 | let buf: &mut [u8] = unsafe { std::slice::from_raw_parts_mut(ptr, len + 1) }; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::not_unsafe_ptr_arg_deref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#not_unsafe_ptr_arg_deref [INFO] [stderr] [INFO] [stderr] error: aborting due to 6 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `rustynes`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "6bacd7560ea226b4caef91a219fea8172dee73e2560c05bdd8ed22695e459776"` [INFO] running `"docker" "rm" "-f" "6bacd7560ea226b4caef91a219fea8172dee73e2560c05bdd8ed22695e459776"` [INFO] [stdout] 6bacd7560ea226b4caef91a219fea8172dee73e2560c05bdd8ed22695e459776