[INFO] crate zinc64 0.6.0 is already in cache [INFO] extracting crate zinc64 0.6.0 into work/ex/clippy-test-run/sources/stable/reg/zinc64/0.6.0 [INFO] extracting crate zinc64 0.6.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/zinc64/0.6.0 [INFO] validating manifest of zinc64-0.6.0 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 zinc64-0.6.0 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 zinc64-0.6.0 [INFO] finished frobbing zinc64-0.6.0 [INFO] frobbed toml for zinc64-0.6.0 written to work/ex/clippy-test-run/sources/stable/reg/zinc64/0.6.0/Cargo.toml [INFO] started frobbing zinc64-0.6.0 [INFO] finished frobbing zinc64-0.6.0 [INFO] frobbed toml for zinc64-0.6.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/zinc64/0.6.0/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [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 zinc64-0.6.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/zinc64/0.6.0:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 0a59948ad0d9ba76774f2743cb8d926e7ca8cfab6f3ccfc5787d8dfbe8b484bd [INFO] running `"docker" "start" "-a" "0a59948ad0d9ba76774f2743cb8d926e7ca8cfab6f3ccfc5787d8dfbe8b484bd"` [INFO] [stderr] Checking zinc64 v0.6.0 (/opt/crater/workdir) [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/system/c64.rs:432:9 [INFO] [stderr] | [INFO] [stderr] 432 | / if self.autostart.is_some() { [INFO] [stderr] 433 | | if self.cpu.get_pc() == BaseAddr::BootComplete.addr() { [INFO] [stderr] 434 | | if let Some(mut autostart) = self.autostart.take() { [INFO] [stderr] 435 | | autostart.execute(self); [INFO] [stderr] 436 | | } [INFO] [stderr] 437 | | } [INFO] [stderr] 438 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 432 | if self.autostart.is_some() && self.cpu.get_pc() == BaseAddr::BootComplete.addr() { [INFO] [stderr] 433 | if let Some(mut autostart) = self.autostart.take() { [INFO] [stderr] 434 | autostart.execute(self); [INFO] [stderr] 435 | } [INFO] [stderr] 436 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/system/condition.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | result [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/system/condition.rs:233:18 [INFO] [stderr] | [INFO] [stderr] 233 | let result = match c { [INFO] [stderr] | __________________^ [INFO] [stderr] 234 | | '<' | '=' | '>' | '!' => true, [INFO] [stderr] 235 | | _ => false, [INFO] [stderr] 236 | | }; [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/system/palette.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | 0x000000, // Black [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0000_0000` [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: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | 0xffffff, // White [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | 0x68372b, // Red [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0068_372b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | 0x70a4b2, // Cyan [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0070_a4b2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | 0x6f3d86, // Purple [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006f_3d86` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | 0x588d43, // Green [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0058_8d43` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | 0x352879, // Blue [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0035_2879` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | 0xb8c76f, // Yellow [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00b8_c76f` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | 0x6f4f25, // Orange [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006f_4f25` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | 0x433900, // Brown [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0043_3900` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | 0x9a6759, // LightRed [INFO] [stderr] | ^^^^^^^^ help: consider: `0x009a_6759` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | 0x444444, // DarkGray [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0044_4444` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | 0x6c6c6c, // MediumGray [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006c_6c6c` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | 0x9ad284, // LightGreen [INFO] [stderr] | ^^^^^^^^ help: consider: `0x009a_d284` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | 0x6c5eb5, // LightBlue [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006c_5eb5` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | 0x959595, // LightGray [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0095_9595` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/video/border_unit.rs:90:16 [INFO] [stderr] | [INFO] [stderr] 90 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 91 | | if x == 0x83 { [INFO] [stderr] 92 | | self.update_vertical_flop(y, den); [INFO] [stderr] 93 | | if !self.vertical_flop { [INFO] [stderr] ... | [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 90 | } else if x == 0x83 { [INFO] [stderr] 91 | self.update_vertical_flop(y, den); [INFO] [stderr] 92 | if !self.vertical_flop { [INFO] [stderr] 93 | self.main_flop = false; [INFO] [stderr] 94 | } [INFO] [stderr] 95 | } else if x == 0x1b3 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/video/border_unit.rs:117:16 [INFO] [stderr] | [INFO] [stderr] 117 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 118 | | if y == 55 && den { [INFO] [stderr] 119 | | self.vertical_flop = false; [INFO] [stderr] 120 | | } else if y == 247 { [INFO] [stderr] 121 | | self.vertical_flop = true; [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 117 | } else if y == 55 && den { [INFO] [stderr] 118 | self.vertical_flop = false; [INFO] [stderr] 119 | } else if y == 247 { [INFO] [stderr] 120 | self.vertical_flop = true; [INFO] [stderr] 121 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/video/sprite_sequencer.rs:100:36 [INFO] [stderr] | [INFO] [stderr] 100 | self.counter = 0xffffff00; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ff00` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/video/vic.rs:211:9 [INFO] [stderr] | [INFO] [stderr] 211 | vic [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/video/vic.rs:182:19 [INFO] [stderr] | [INFO] [stderr] 182 | let vic = Vic { [INFO] [stderr] | ___________________^ [INFO] [stderr] 183 | | // Dependencies [INFO] [stderr] 184 | | spec, [INFO] [stderr] 185 | | color_ram, [INFO] [stderr] ... | [INFO] [stderr] 209 | | vsync_flag, [INFO] [stderr] 210 | | }; [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: this if statement can be collapsed [INFO] [stderr] --> src/video/vic.rs:427:13 [INFO] [stderr] | [INFO] [stderr] 427 | / if sprite.config.enabled && sprite.config.y == (self.y as u8) { [INFO] [stderr] 428 | | if !self.raster_unit.sprite_dma[n] { [INFO] [stderr] 429 | | self.raster_unit.sprite_dma[n] = true; [INFO] [stderr] 430 | | self.raster_unit.mc_base[n] = 0; [INFO] [stderr] ... | [INFO] [stderr] 434 | | } [INFO] [stderr] 435 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 427 | if sprite.config.enabled && sprite.config.y == (self.y as u8) && !self.raster_unit.sprite_dma[n] { [INFO] [stderr] 428 | self.raster_unit.sprite_dma[n] = true; [INFO] [stderr] 429 | self.raster_unit.mc_base[n] = 0; [INFO] [stderr] 430 | if sprite.config.expand_y { [INFO] [stderr] 431 | sprite.expansion_flop = false; [INFO] [stderr] 432 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/io/cia.rs:632:36 [INFO] [stderr] | [INFO] [stderr] 632 | cia.write(Reg::ICR.addr(), 0b10000011u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0b1000_0011u8` [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: long literal lacking separators [INFO] [stderr] --> src/io/cia.rs:633:20 [INFO] [stderr] | [INFO] [stderr] 633 | assert_eq!(0b00000011u8, cia.irq_control.get_mask()); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0b0000_0011u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/io/cia.rs:634:36 [INFO] [stderr] | [INFO] [stderr] 634 | cia.write(Reg::ICR.addr(), 0b00000010u8); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0b0000_0010u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/io/cia.rs:635:20 [INFO] [stderr] | [INFO] [stderr] 635 | assert_eq!(0b00000001u8, cia.irq_control.get_mask()); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider: `0b0000_0001u8` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/system/c64.rs:432:9 [INFO] [stderr] | [INFO] [stderr] 432 | / if self.autostart.is_some() { [INFO] [stderr] 433 | | if self.cpu.get_pc() == BaseAddr::BootComplete.addr() { [INFO] [stderr] 434 | | if let Some(mut autostart) = self.autostart.take() { [INFO] [stderr] 435 | | autostart.execute(self); [INFO] [stderr] 436 | | } [INFO] [stderr] 437 | | } [INFO] [stderr] 438 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 432 | if self.autostart.is_some() && self.cpu.get_pc() == BaseAddr::BootComplete.addr() { [INFO] [stderr] 433 | if let Some(mut autostart) = self.autostart.take() { [INFO] [stderr] 434 | autostart.execute(self); [INFO] [stderr] 435 | } [INFO] [stderr] 436 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/system/condition.rs:237:5 [INFO] [stderr] | [INFO] [stderr] 237 | result [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/system/condition.rs:233:18 [INFO] [stderr] | [INFO] [stderr] 233 | let result = match c { [INFO] [stderr] | __________________^ [INFO] [stderr] 234 | | '<' | '=' | '>' | '!' => true, [INFO] [stderr] 235 | | _ => false, [INFO] [stderr] 236 | | }; [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/system/palette.rs:12:13 [INFO] [stderr] | [INFO] [stderr] 12 | 0x000000, // Black [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0000_0000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:13:13 [INFO] [stderr] | [INFO] [stderr] 13 | 0xffffff, // White [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00ff_ffff` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | 0x68372b, // Red [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0068_372b` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:15:13 [INFO] [stderr] | [INFO] [stderr] 15 | 0x70a4b2, // Cyan [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0070_a4b2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:16:13 [INFO] [stderr] | [INFO] [stderr] 16 | 0x6f3d86, // Purple [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006f_3d86` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | 0x588d43, // Green [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0058_8d43` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | 0x352879, // Blue [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0035_2879` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | 0xb8c76f, // Yellow [INFO] [stderr] | ^^^^^^^^ help: consider: `0x00b8_c76f` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:20:13 [INFO] [stderr] | [INFO] [stderr] 20 | 0x6f4f25, // Orange [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006f_4f25` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | 0x433900, // Brown [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0043_3900` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:22:13 [INFO] [stderr] | [INFO] [stderr] 22 | 0x9a6759, // LightRed [INFO] [stderr] | ^^^^^^^^ help: consider: `0x009a_6759` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | 0x444444, // DarkGray [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0044_4444` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | 0x6c6c6c, // MediumGray [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006c_6c6c` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | 0x9ad284, // LightGreen [INFO] [stderr] | ^^^^^^^^ help: consider: `0x009a_d284` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | 0x6c5eb5, // LightBlue [INFO] [stderr] | ^^^^^^^^ help: consider: `0x006c_5eb5` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/system/palette.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | 0x959595, // LightGray [INFO] [stderr] | ^^^^^^^^ help: consider: `0x0095_9595` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/video/border_unit.rs:90:16 [INFO] [stderr] | [INFO] [stderr] 90 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 91 | | if x == 0x83 { [INFO] [stderr] 92 | | self.update_vertical_flop(y, den); [INFO] [stderr] 93 | | if !self.vertical_flop { [INFO] [stderr] ... | [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 90 | } else if x == 0x83 { [INFO] [stderr] 91 | self.update_vertical_flop(y, den); [INFO] [stderr] 92 | if !self.vertical_flop { [INFO] [stderr] 93 | self.main_flop = false; [INFO] [stderr] 94 | } [INFO] [stderr] 95 | } else if x == 0x1b3 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/video/border_unit.rs:117:16 [INFO] [stderr] | [INFO] [stderr] 117 | } else { [INFO] [stderr] | ________________^ [INFO] [stderr] 118 | | if y == 55 && den { [INFO] [stderr] 119 | | self.vertical_flop = false; [INFO] [stderr] 120 | | } else if y == 247 { [INFO] [stderr] 121 | | self.vertical_flop = true; [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 117 | } else if y == 55 && den { [INFO] [stderr] 118 | self.vertical_flop = false; [INFO] [stderr] 119 | } else if y == 247 { [INFO] [stderr] 120 | self.vertical_flop = true; [INFO] [stderr] 121 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/video/sprite_sequencer.rs:100:36 [INFO] [stderr] | [INFO] [stderr] 100 | self.counter = 0xffffff00; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ff00` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/video/vic.rs:211:9 [INFO] [stderr] | [INFO] [stderr] 211 | vic [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/video/vic.rs:182:19 [INFO] [stderr] | [INFO] [stderr] 182 | let vic = Vic { [INFO] [stderr] | ___________________^ [INFO] [stderr] 183 | | // Dependencies [INFO] [stderr] 184 | | spec, [INFO] [stderr] 185 | | color_ram, [INFO] [stderr] ... | [INFO] [stderr] 209 | | vsync_flag, [INFO] [stderr] 210 | | }; [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: this if statement can be collapsed [INFO] [stderr] --> src/video/vic.rs:427:13 [INFO] [stderr] | [INFO] [stderr] 427 | / if sprite.config.enabled && sprite.config.y == (self.y as u8) { [INFO] [stderr] 428 | | if !self.raster_unit.sprite_dma[n] { [INFO] [stderr] 429 | | self.raster_unit.sprite_dma[n] = true; [INFO] [stderr] 430 | | self.raster_unit.mc_base[n] = 0; [INFO] [stderr] ... | [INFO] [stderr] 434 | | } [INFO] [stderr] 435 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 427 | if sprite.config.enabled && sprite.config.y == (self.y as u8) && !self.raster_unit.sprite_dma[n] { [INFO] [stderr] 428 | self.raster_unit.sprite_dma[n] = true; [INFO] [stderr] 429 | self.raster_unit.mc_base[n] = 0; [INFO] [stderr] 430 | if sprite.config.expand_y { [INFO] [stderr] 431 | sprite.expansion_flop = false; [INFO] [stderr] 432 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/core/chip_factory.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | / fn new_cia_1( [INFO] [stderr] 69 | | &self, [INFO] [stderr] 70 | | joystick_1: Rc>, [INFO] [stderr] 71 | | joystick_2: Rc>, [INFO] [stderr] ... | [INFO] [stderr] 76 | | irq_line: Rc>, [INFO] [stderr] 77 | | ) -> Rc>; [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: this function has too many arguments (10/7) [INFO] [stderr] --> src/core/chip_factory.rs:136:5 [INFO] [stderr] | [INFO] [stderr] 136 | / fn new_vic( [INFO] [stderr] 137 | | &self, [INFO] [stderr] 138 | | chip_model: VicModel, [INFO] [stderr] 139 | | color_ram: Rc>, [INFO] [stderr] ... | [INFO] [stderr] 146 | | irq_line: Rc>, [INFO] [stderr] 147 | | ) -> Rc>; [INFO] [stderr] | |_______________________________^ [INFO] [stderr] | [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: this function has too many arguments (11/7) [INFO] [stderr] --> src/core/chip_factory.rs:164:5 [INFO] [stderr] | [INFO] [stderr] 164 | / fn new_memory( [INFO] [stderr] 165 | | &self, [INFO] [stderr] 166 | | cia_1: Rc>, [INFO] [stderr] 167 | | cia_2: Rc>, [INFO] [stderr] ... | [INFO] [stderr] 175 | | vic: Rc>, [INFO] [stderr] 176 | | ) -> Rc>; [INFO] [stderr] | |______________________________^ [INFO] [stderr] | [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: you should consider deriving a `Default` implementation for `core::clock::Clock` [INFO] [stderr] --> src/core/clock.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn new() -> Self { [INFO] [stderr] 13 | | Self { [INFO] [stderr] 14 | | counter: Cell::new(0), [INFO] [stderr] 15 | | } [INFO] [stderr] 16 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `core::irq_control::IrqControl` [INFO] [stderr] --> src/core/irq_control.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | / pub fn new() -> Self { [INFO] [stderr] 14 | | Self { data: 0, mask: 0 } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/irq_control.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | self.data = self.data & (!events); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.data &= (!events)` [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/core/ram.rs:23:34 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn load(&mut self, data: &Vec, offset: u16) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `data`. [INFO] [stderr] --> src/core/rom.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for i in 0..data.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 19 | for in &mut data { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/cpu/cpu6510.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | Carry = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/cpu/cpu6510.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | Break = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:207:26 [INFO] [stderr] | [INFO] [stderr] 207 | let ac = self.regs.a as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:208:29 [INFO] [stderr] | [INFO] [stderr] 208 | let value = op.get(self, tick_fn) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:233:26 [INFO] [stderr] | [INFO] [stderr] 233 | let ac = self.regs.a as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:234:29 [INFO] [stderr] | [INFO] [stderr] 234 | let value = op.get(self, tick_fn) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:261:30 [INFO] [stderr] | [INFO] [stderr] 261 | let result = (self.regs.a as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:261:64 [INFO] [stderr] | [INFO] [stderr] 261 | let result = (self.regs.a as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:266:30 [INFO] [stderr] | [INFO] [stderr] 266 | let result = (self.regs.x as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:266:64 [INFO] [stderr] | [INFO] [stderr] 266 | let result = (self.regs.x as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:271:30 [INFO] [stderr] | [INFO] [stderr] 271 | let result = (self.regs.y as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:271:64 [INFO] [stderr] | [INFO] [stderr] 271 | let result = (self.regs.y as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:346:32 [INFO] [stderr] | [INFO] [stderr] 346 | let mut temp = (value as u16) << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:357:29 [INFO] [stderr] | [INFO] [stderr] 357 | let value = op.get(self, tick_fn) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:422:31 [INFO] [stderr] | [INFO] [stderr] 422 | let address = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:422:61 [INFO] [stderr] | [INFO] [stderr] 422 | let address = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:472:32 [INFO] [stderr] | [INFO] [stderr] 472 | self.regs.pc = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:472:62 [INFO] [stderr] | [INFO] [stderr] 472 | self.regs.pc = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:479:21 [INFO] [stderr] | [INFO] [stderr] 479 | ((self.regs.a & self.regs.x) as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a & self.regs.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:479:71 [INFO] [stderr] | [INFO] [stderr] 479 | ((self.regs.a & self.regs.x) as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:539:29 [INFO] [stderr] | [INFO] [stderr] 539 | let addr = 0x0100 + self.regs.sp as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.sp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:544:29 [INFO] [stderr] | [INFO] [stderr] 544 | let addr = 0x0100 + self.regs.sp as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.sp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:581:10 [INFO] [stderr] | [INFO] [stderr] 581 | ((high as u16) << 8) | low as u16 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(high)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:581:32 [INFO] [stderr] | [INFO] [stderr] 581 | ((high as u16) << 8) | low as u16 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(low)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cpu/instruction.rs:413:9 [INFO] [stderr] | [INFO] [stderr] 413 | / match self { [INFO] [stderr] 414 | | // Data Movement [INFO] [stderr] 415 | | &Instruction::LDA(ref operand) => write!(f, "lda {}", operand), [INFO] [stderr] 416 | | &Instruction::LDX(ref operand) => write!(f, "ldx {}", operand), [INFO] [stderr] ... | [INFO] [stderr] 478 | | &Instruction::LAX(ref operand) => write!(f, "lax {}", operand), [INFO] [stderr] 479 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 413 | match *self { [INFO] [stderr] 414 | // Data Movement [INFO] [stderr] 415 | Instruction::LDA(ref operand) => write!(f, "lda {}", operand), [INFO] [stderr] 416 | Instruction::LDX(ref operand) => write!(f, "ldx {}", operand), [INFO] [stderr] 417 | Instruction::LDY(ref operand) => write!(f, "ldy {}", operand), [INFO] [stderr] 418 | Instruction::PHA => write!(f, "pha"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:37:43 [INFO] [stderr] | [INFO] [stderr] 37 | Operand::ZeroPage(address) => address as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(address)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | address.wrapping_add(cpu.get_x()) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(address.wrapping_add(cpu.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/cpu/operand.rs:47:17 [INFO] [stderr] | [INFO] [stderr] 47 | address.wrapping_add(cpu.get_y()) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(address.wrapping_add(cpu.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/cpu/operand.rs:54:38 [INFO] [stderr] | [INFO] [stderr] 54 | address.wrapping_add(cpu.get_x() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/cpu/operand.rs:60:38 [INFO] [stderr] | [INFO] [stderr] 60 | address.wrapping_add(cpu.get_y() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/cpu/operand.rs:63:36 [INFO] [stderr] | [INFO] [stderr] 63 | let calc_address = address.wrapping_add(cpu.get_x()) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(address.wrapping_add(cpu.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/cpu/operand.rs:71:39 [INFO] [stderr] | [INFO] [stderr] 71 | cpu.read_internal_u16(address as u16, tick_fn) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(address)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:72:35 [INFO] [stderr] | [INFO] [stderr] 72 | .wrapping_add(cpu.get_y() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:77:47 [INFO] [stderr] | [INFO] [stderr] 77 | cpu.get_pc().wrapping_sub((offset as i16).abs() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/device/datassette.rs:37:18 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn value(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/device/expansion_port.rs:22:18 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn value(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/device/joystick.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn bit(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/device/joystick.rs:46:18 [INFO] [stderr] | [INFO] [stderr] 46 | pub fn index(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/device/keyboard.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | / match pressed { [INFO] [stderr] 145 | | true => self.on_key_down(key_event), [INFO] [stderr] 146 | | false => self.on_key_up(key_event), [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if pressed { self.on_key_down(key_event) } else { self.on_key_up(key_event) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/io/cia.rs:22:18 [INFO] [stderr] | [INFO] [stderr] 22 | Interrupt0 = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/cia.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn irq_source(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/cia.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn addr(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/io/cia.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | / pub fn new( [INFO] [stderr] 111 | | mode: Mode, [INFO] [stderr] 112 | | joystick_1: Option>>, [INFO] [stderr] 113 | | joystick_2: Option>>, [INFO] [stderr] ... | [INFO] [stderr] 138 | | } [INFO] [stderr] 139 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/io/cia.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / let mut int_event = false; [INFO] [stderr] 220 | | if timer_a_output { [INFO] [stderr] 221 | | self.irq_control.set_event(0); [INFO] [stderr] 222 | | int_event = true; [INFO] [stderr] 223 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let int_event = if timer_a_output { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/io/timer.rs:16:14 [INFO] [stderr] | [INFO] [stderr] 16 | Count0 = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/io/timer.rs:177:23 [INFO] [stderr] | [INFO] [stderr] 177 | let result = ((value as u16) << 8) | (self.latch & 0x00ff); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/io/timer.rs:185:46 [INFO] [stderr] | [INFO] [stderr] 185 | let result = (self.latch & 0xff00) | (value as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/mem/memory.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn addr(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: the loop variable `i` is used to index `banks` [INFO] [stderr] --> src/mem/memory_map.rs:27:18 [INFO] [stderr] | [INFO] [stderr] 27 | for i in 0..0x10 { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 27 | for (i, ) in banks.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mem::memory_map::MemoryMap` [INFO] [stderr] --> src/mem/memory_map.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | / pub fn new() -> Self { [INFO] [stderr] 53 | | let m31 = [ [INFO] [stderr] 54 | | Bank::Ram, [INFO] [stderr] 55 | | Bank::Ram, [INFO] [stderr] ... | [INFO] [stderr] 240 | | } [INFO] [stderr] 241 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | impl Default for mem::memory_map::MemoryMap { [INFO] [stderr] 52 | fn default() -> Self { [INFO] [stderr] 53 | Self::new() [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `buffer`. [INFO] [stderr] --> src/sound/sid.rs:100:22 [INFO] [stderr] | [INFO] [stderr] 100 | for i in 0..samples { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 100 | for in buffer.iter().take(samples) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/sound/sid.rs:103:52 [INFO] [stderr] | [INFO] [stderr] 103 | self.cycles = self.cycles.wrapping_add(cycles as u64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(cycles)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `system::breakpoint::BreakpointManager` [INFO] [stderr] --> src/system/breakpoint.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> Self { [INFO] [stderr] 27 | | Self { [INFO] [stderr] 28 | | breakpoints: Vec::new(), [INFO] [stderr] 29 | | bp_index: 1, [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 20 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/breakpoint.rs:33:34 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn check(&mut self, cpu: &Box) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/system/breakpoint.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | self.breakpoints.iter().position(|bp| bp.enabled).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `position(|bp| bp.enabled).is_some()` with `any(|bp| bp.enabled)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/system/breakpoint.rs:122:15 [INFO] [stderr] | [INFO] [stderr] 122 | expr: &String, [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 122 | expr: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `expr.as_str()` to [INFO] [stderr] | [INFO] [stderr] 127 | let condition = Condition::parse(expr, radix)?; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/system/c64.rs:33:17 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn addr(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/system/c64.rs:209:36 [INFO] [stderr] | [INFO] [stderr] 209 | let base_address = ((!value & 0x03) as u16) << 14; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(!value & 0x03)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/c64.rs:268:30 [INFO] [stderr] | [INFO] [stderr] 268 | pub fn get_cpu(&self) -> &Box { [INFO] [stderr] | ^^^^^^^^^ help: try: `&Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/c64.rs:272:38 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn get_cpu_mut(&mut self) -> &mut Box { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&mut Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [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/system/c64.rs:354:34 [INFO] [stderr] | [INFO] [stderr] 354 | pub fn load(&mut self, data: &Vec, offset: u16) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: item `system::circular_buffer::CircularBuffer` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/system/circular_buffer.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / impl CircularBuffer { [INFO] [stderr] 16 | | pub fn new(capacity: usize) -> CircularBuffer { [INFO] [stderr] 17 | | CircularBuffer { [INFO] [stderr] 18 | | buffer: vec![0; capacity], [INFO] [stderr] ... | [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | / match self { [INFO] [stderr] 23 | | &Operator::Equal => write!(f, "=="), [INFO] [stderr] 24 | | &Operator::NotEqual => write!(f, "!="), [INFO] [stderr] 25 | | &Operator::Greater => write!(f, ">"), [INFO] [stderr] ... | [INFO] [stderr] 28 | | &Operator::LessEqual => write!(f, "<="), [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 22 | match *self { [INFO] [stderr] 23 | Operator::Equal => write!(f, "=="), [INFO] [stderr] 24 | Operator::NotEqual => write!(f, "!="), [INFO] [stderr] 25 | Operator::Greater => write!(f, ">"), [INFO] [stderr] 26 | Operator::GreaterEqual => write!(f, ">="), [INFO] [stderr] 27 | Operator::Less => write!(f, "<"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / match self { [INFO] [stderr] 45 | | &Reg::A => write!(f, "A"), [INFO] [stderr] 46 | | &Reg::X => write!(f, "X"), [INFO] [stderr] 47 | | &Reg::Y => write!(f, "Y"), [INFO] [stderr] ... | [INFO] [stderr] 50 | | &Reg::PC => write!(f, "PC"), [INFO] [stderr] 51 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 44 | match *self { [INFO] [stderr] 45 | Reg::A => write!(f, "A"), [INFO] [stderr] 46 | Reg::X => write!(f, "X"), [INFO] [stderr] 47 | Reg::Y => write!(f, "Y"), [INFO] [stderr] 48 | Reg::P => write!(f, "P"), [INFO] [stderr] 49 | Reg::SP => write!(f, "SP"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / match self { [INFO] [stderr] 63 | | &Value::Constant(val) if val <= 0xff => write!(f, "{:02x}", val), [INFO] [stderr] 64 | | &Value::Constant(val) => write!(f, "{:04x}", val), [INFO] [stderr] 65 | | &Value::Register(ref reg) => write!(f, "{}", reg), [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 62 | match *self { [INFO] [stderr] 63 | Value::Constant(val) if val <= 0xff => write!(f, "{:02x}", val), [INFO] [stderr] 64 | Value::Constant(val) => write!(f, "{:04x}", val), [INFO] [stderr] 65 | Value::Register(ref reg) => write!(f, "{}", reg), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/condition.rs:88:29 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn eval(&self, cpu: &Box) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/condition.rs:101:40 [INFO] [stderr] | [INFO] [stderr] 101 | fn eval_reg(&self, reg: &Reg, cpu: &Box) -> u16 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | / match reg { [INFO] [stderr] 103 | | &Reg::A => cpu.get_a() as u16, [INFO] [stderr] 104 | | &Reg::X => cpu.get_x() as u16, [INFO] [stderr] 105 | | &Reg::Y => cpu.get_y() as u16, [INFO] [stderr] ... | [INFO] [stderr] 108 | | &Reg::PC => cpu.get_pc(), [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 102 | match *reg { [INFO] [stderr] 103 | Reg::A => cpu.get_a() as u16, [INFO] [stderr] 104 | Reg::X => cpu.get_x() as u16, [INFO] [stderr] 105 | Reg::Y => cpu.get_y() as u16, [INFO] [stderr] 106 | Reg::P => cpu.get_p() as u16, [INFO] [stderr] 107 | Reg::SP => cpu.get_sp() as u16, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/system/condition.rs:103:24 [INFO] [stderr] | [INFO] [stderr] 103 | &Reg::A => cpu.get_a() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/system/condition.rs:104:24 [INFO] [stderr] | [INFO] [stderr] 104 | &Reg::X => cpu.get_x() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/system/condition.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | &Reg::Y => cpu.get_y() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/system/condition.rs:106:24 [INFO] [stderr] | [INFO] [stderr] 106 | &Reg::P => cpu.get_p() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.get_p())` [INFO] [stderr] | [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/system/condition.rs:107:25 [INFO] [stderr] | [INFO] [stderr] 107 | &Reg::SP => cpu.get_sp() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/condition.rs:112:42 [INFO] [stderr] | [INFO] [stderr] 112 | fn eval_val(&self, val: &Value, cpu: &Box) -> u16 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match val { [INFO] [stderr] 114 | | &Value::Constant(value) => value, [INFO] [stderr] 115 | | &Value::Register(ref reg) => self.eval_reg(reg, cpu), [INFO] [stderr] 116 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 113 | match *val { [INFO] [stderr] 114 | Value::Constant(value) => value, [INFO] [stderr] 115 | Value::Register(ref reg) => self.eval_reg(reg, cpu), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/system/condition.rs:178:47 [INFO] [stderr] | [INFO] [stderr] 178 | Err(_) => self.parse_num(val).map(|v| Value::Constant(v)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Constant` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/system/condition.rs:209:79 [INFO] [stderr] | [INFO] [stderr] 209 | c if is_symbol(c) => Some(Token::Op(consume_while(&mut self.iter, |c| is_symbol(c)))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `is_symbol` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/system/frame_buffer.rs:30:18 [INFO] [stderr] | [INFO] [stderr] 30 | unsafe { mem::transmute::<&[u32], &[u8]>(self.pixels.as_ref()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self.pixels.as_ref() as *const [u32] as *const [u8])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/video/gfx_sequencer.rs:42:18 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn value(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/video/sprite_sequencer.rs:84:44 [INFO] [stderr] | [INFO] [stderr] 84 | self.data.set_bits(24..32, value as u32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/video/sprite_sequencer.rs:87:44 [INFO] [stderr] | [INFO] [stderr] 87 | self.data.set_bits(16..24, value as u32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/video/sprite_sequencer.rs:90:43 [INFO] [stderr] | [INFO] [stderr] 90 | self.data.set_bits(8..16, value as u32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/video/vic.rs:55:18 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn value(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/video/vic.rs:216:40 [INFO] [stderr] | [INFO] [stderr] 216 | let x_scroll_start = x_start + self.x_scroll as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.x_scroll)` [INFO] [stderr] | [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/video/vic.rs:250:40 [INFO] [stderr] | [INFO] [stderr] 250 | let x_scroll_start = x_start + self.x_scroll as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.x_scroll)` [INFO] [stderr] | [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/video/vic.rs:488:28 [INFO] [stderr] | [INFO] [stderr] 488 | | ((self.raster_unit.vm_data_line[self.raster_unit.vmli] as u16) << 3) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.vm_data_line[self.raster_unit.vmli])` [INFO] [stderr] | [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/video/vic.rs:489:27 [INFO] [stderr] | [INFO] [stderr] 489 | | self.raster_unit.rc as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.rc)` [INFO] [stderr] | [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/video/vic.rs:494:28 [INFO] [stderr] | [INFO] [stderr] 494 | | (((self.raster_unit.vm_data_line[self.raster_unit.vmli] & 0x3f) as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.vm_data_line[self.raster_unit.vmli] & 0x3f)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:495:37 [INFO] [stderr] | [INFO] [stderr] 495 | << 3) | self.raster_unit.rc as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.rc)` [INFO] [stderr] | [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/video/vic.rs:501:27 [INFO] [stderr] | [INFO] [stderr] 501 | | self.raster_unit.rc as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.rc)` [INFO] [stderr] | [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/video/vic.rs:527:43 [INFO] [stderr] | [INFO] [stderr] 527 | self.raster_unit.sprite_ptrs[n] = (self.mem.read(address) as u16) << 6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem.read(address))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:541:57 [INFO] [stderr] | [INFO] [stderr] 541 | let address = self.raster_unit.sprite_ptrs[n] | (self.raster_unit.mc[n] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.mc[n])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 29 [INFO] [stderr] --> src/video/vic.rs:549:5 [INFO] [stderr] | [INFO] [stderr] 549 | / fn clock(&mut self) { [INFO] [stderr] 550 | | match self.cycle { [INFO] [stderr] 551 | | 1 => { [INFO] [stderr] 552 | | /* [INFO] [stderr] ... | [INFO] [stderr] 851 | | } [INFO] [stderr] 852 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/video/vic.rs:767:26 [INFO] [stderr] | [INFO] [stderr] 767 | for i in 0..8 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `self.raster_unit.mc[..8].clone_from_slice(&self.raster_unit.mc_base[..8])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:1021:64 [INFO] [stderr] | [INFO] [stderr] 1021 | (self.sprite_units[n].config.x & 0xff00) | (value as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:1054:66 [INFO] [stderr] | [INFO] [stderr] 1054 | let new_value = (self.raster_compare & 0xff00) | (value as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:1088:37 [INFO] [stderr] | [INFO] [stderr] 1088 | self.video_matrix = (((value & 0xf0) >> 4) as u16) << 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((value & 0xf0) >> 4)` [INFO] [stderr] | [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/video/vic.rs:1089:34 [INFO] [stderr] | [INFO] [stderr] 1089 | self.char_base = (((value & 0x0f) >> 1) as u16) << 11; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((value & 0x0f) >> 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: this function has too many arguments (8/7) [INFO] [stderr] --> src/core/chip_factory.rs:68:5 [INFO] [stderr] | [INFO] [stderr] 68 | / fn new_cia_1( [INFO] [stderr] 69 | | &self, [INFO] [stderr] 70 | | joystick_1: Rc>, [INFO] [stderr] 71 | | joystick_2: Rc>, [INFO] [stderr] ... | [INFO] [stderr] 76 | | irq_line: Rc>, [INFO] [stderr] 77 | | ) -> Rc>; [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: this function has too many arguments (10/7) [INFO] [stderr] --> src/core/chip_factory.rs:136:5 [INFO] [stderr] | [INFO] [stderr] 136 | / fn new_vic( [INFO] [stderr] 137 | | &self, [INFO] [stderr] 138 | | chip_model: VicModel, [INFO] [stderr] 139 | | color_ram: Rc>, [INFO] [stderr] ... | [INFO] [stderr] 146 | | irq_line: Rc>, [INFO] [stderr] 147 | | ) -> Rc>; [INFO] [stderr] | |_______________________________^ [INFO] [stderr] | [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: this function has too many arguments (11/7) [INFO] [stderr] --> src/core/chip_factory.rs:164:5 [INFO] [stderr] | [INFO] [stderr] 164 | / fn new_memory( [INFO] [stderr] 165 | | &self, [INFO] [stderr] 166 | | cia_1: Rc>, [INFO] [stderr] 167 | | cia_2: Rc>, [INFO] [stderr] ... | [INFO] [stderr] 175 | | vic: Rc>, [INFO] [stderr] 176 | | ) -> Rc>; [INFO] [stderr] | |______________________________^ [INFO] [stderr] | [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: you should consider deriving a `Default` implementation for `core::clock::Clock` [INFO] [stderr] --> src/core/clock.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / pub fn new() -> Self { [INFO] [stderr] 13 | | Self { [INFO] [stderr] 14 | | counter: Cell::new(0), [INFO] [stderr] 15 | | } [INFO] [stderr] 16 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `core::irq_control::IrqControl` [INFO] [stderr] --> src/core/irq_control.rs:13:5 [INFO] [stderr] | [INFO] [stderr] 13 | / pub fn new() -> Self { [INFO] [stderr] 14 | | Self { data: 0, mask: 0 } [INFO] [stderr] 15 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 7 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/irq_control.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | self.data = self.data & (!events); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.data &= (!events)` [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/core/ram.rs:23:34 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn load(&mut self, data: &Vec, offset: u16) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `data`. [INFO] [stderr] --> src/core/rom.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | for i in 0..data.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 19 | for in &mut data { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/cpu/cpu6510.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | Carry = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/cpu/cpu6510.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | Break = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:207:26 [INFO] [stderr] | [INFO] [stderr] 207 | let ac = self.regs.a as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:208:29 [INFO] [stderr] | [INFO] [stderr] 208 | let value = op.get(self, tick_fn) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:233:26 [INFO] [stderr] | [INFO] [stderr] 233 | let ac = self.regs.a as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:234:29 [INFO] [stderr] | [INFO] [stderr] 234 | let value = op.get(self, tick_fn) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:261:30 [INFO] [stderr] | [INFO] [stderr] 261 | let result = (self.regs.a as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:261:64 [INFO] [stderr] | [INFO] [stderr] 261 | let result = (self.regs.a as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:266:30 [INFO] [stderr] | [INFO] [stderr] 266 | let result = (self.regs.x as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:266:64 [INFO] [stderr] | [INFO] [stderr] 266 | let result = (self.regs.x as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:271:30 [INFO] [stderr] | [INFO] [stderr] 271 | let result = (self.regs.y as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.y)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:271:64 [INFO] [stderr] | [INFO] [stderr] 271 | let result = (self.regs.y as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:346:32 [INFO] [stderr] | [INFO] [stderr] 346 | let mut temp = (value as u16) << 1; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:357:29 [INFO] [stderr] | [INFO] [stderr] 357 | let value = op.get(self, tick_fn) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:422:31 [INFO] [stderr] | [INFO] [stderr] 422 | let address = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:422:61 [INFO] [stderr] | [INFO] [stderr] 422 | let address = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:472:32 [INFO] [stderr] | [INFO] [stderr] 472 | self.regs.pc = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:472:62 [INFO] [stderr] | [INFO] [stderr] 472 | self.regs.pc = (self.pop(tick_fn) as u16) | ((self.pop(tick_fn) as u16) << 8); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.pop(tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:479:21 [INFO] [stderr] | [INFO] [stderr] 479 | ((self.regs.a & self.regs.x) as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.a & self.regs.x)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:479:71 [INFO] [stderr] | [INFO] [stderr] 479 | ((self.regs.a & self.regs.x) as u16).wrapping_sub(op.get(self, tick_fn) as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(op.get(self, tick_fn))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:539:29 [INFO] [stderr] | [INFO] [stderr] 539 | let addr = 0x0100 + self.regs.sp as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.sp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:544:29 [INFO] [stderr] | [INFO] [stderr] 544 | let addr = 0x0100 + self.regs.sp as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.regs.sp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:581:10 [INFO] [stderr] | [INFO] [stderr] 581 | ((high as u16) << 8) | low as u16 [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u16::from(high)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/cpu6510.rs:581:32 [INFO] [stderr] | [INFO] [stderr] 581 | ((high as u16) << 8) | low as u16 [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(low)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/cpu/instruction.rs:413:9 [INFO] [stderr] | [INFO] [stderr] 413 | / match self { [INFO] [stderr] 414 | | // Data Movement [INFO] [stderr] 415 | | &Instruction::LDA(ref operand) => write!(f, "lda {}", operand), [INFO] [stderr] 416 | | &Instruction::LDX(ref operand) => write!(f, "ldx {}", operand), [INFO] [stderr] ... | [INFO] [stderr] 478 | | &Instruction::LAX(ref operand) => write!(f, "lax {}", operand), [INFO] [stderr] 479 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 413 | match *self { [INFO] [stderr] 414 | // Data Movement [INFO] [stderr] 415 | Instruction::LDA(ref operand) => write!(f, "lda {}", operand), [INFO] [stderr] 416 | Instruction::LDX(ref operand) => write!(f, "ldx {}", operand), [INFO] [stderr] 417 | Instruction::LDY(ref operand) => write!(f, "ldy {}", operand), [INFO] [stderr] 418 | Instruction::PHA => write!(f, "pha"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:37:43 [INFO] [stderr] | [INFO] [stderr] 37 | Operand::ZeroPage(address) => address as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(address)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:43:17 [INFO] [stderr] | [INFO] [stderr] 43 | address.wrapping_add(cpu.get_x()) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(address.wrapping_add(cpu.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/cpu/operand.rs:47:17 [INFO] [stderr] | [INFO] [stderr] 47 | address.wrapping_add(cpu.get_y()) as u16 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(address.wrapping_add(cpu.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/cpu/operand.rs:54:38 [INFO] [stderr] | [INFO] [stderr] 54 | address.wrapping_add(cpu.get_x() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/cpu/operand.rs:60:38 [INFO] [stderr] | [INFO] [stderr] 60 | address.wrapping_add(cpu.get_y() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/cpu/operand.rs:63:36 [INFO] [stderr] | [INFO] [stderr] 63 | let calc_address = address.wrapping_add(cpu.get_x()) as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(address.wrapping_add(cpu.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/cpu/operand.rs:71:39 [INFO] [stderr] | [INFO] [stderr] 71 | cpu.read_internal_u16(address as u16, tick_fn) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(address)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:72:35 [INFO] [stderr] | [INFO] [stderr] 72 | .wrapping_add(cpu.get_y() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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 i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/cpu/operand.rs:77:47 [INFO] [stderr] | [INFO] [stderr] 77 | cpu.get_pc().wrapping_sub((offset as i16).abs() as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `i16::from(offset)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/device/datassette.rs:37:18 [INFO] [stderr] | [INFO] [stderr] 37 | pub fn value(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/device/expansion_port.rs:22:18 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn value(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/device/joystick.rs:22:16 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn bit(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/device/joystick.rs:46:18 [INFO] [stderr] | [INFO] [stderr] 46 | pub fn index(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/device/keyboard.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | / match pressed { [INFO] [stderr] 145 | | true => self.on_key_down(key_event), [INFO] [stderr] 146 | | false => self.on_key_up(key_event), [INFO] [stderr] 147 | | } [INFO] [stderr] | |_____________^ help: consider using an if/else expression: `if pressed { self.on_key_down(key_event) } else { self.on_key_up(key_event) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/io/cia.rs:22:18 [INFO] [stderr] | [INFO] [stderr] 22 | Interrupt0 = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/cia.rs:33:23 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn irq_source(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/io/cia.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | pub fn addr(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/io/cia.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | / pub fn new( [INFO] [stderr] 111 | | mode: Mode, [INFO] [stderr] 112 | | joystick_1: Option>>, [INFO] [stderr] 113 | | joystick_2: Option>>, [INFO] [stderr] ... | [INFO] [stderr] 138 | | } [INFO] [stderr] 139 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/io/cia.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / let mut int_event = false; [INFO] [stderr] 220 | | if timer_a_output { [INFO] [stderr] 221 | | self.irq_control.set_event(0); [INFO] [stderr] 222 | | int_event = true; [INFO] [stderr] 223 | | } [INFO] [stderr] | |_________^ help: it is more idiomatic to write: `let int_event = if timer_a_output { ..; true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 49 [INFO] [stderr] --> src/io/cia.rs:674:5 [INFO] [stderr] | [INFO] [stderr] 674 | / fn program_cia1tab() { [INFO] [stderr] 675 | | let mut cia = setup_cia(); [INFO] [stderr] 676 | | cia.write(Reg::DDRB.addr(), 0x7f); [INFO] [stderr] 677 | | cia.write(Reg::ICR.addr(), 0x82); [INFO] [stderr] ... | [INFO] [stderr] 749 | | assert_eq!(cia.irq_control.get_raw_data(), 0x03); // 0x83 [INFO] [stderr] 750 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `1` [INFO] [stderr] --> src/io/timer.rs:16:14 [INFO] [stderr] | [INFO] [stderr] 16 | Count0 = 1 << 0, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/io/timer.rs:177:23 [INFO] [stderr] | [INFO] [stderr] 177 | let result = ((value as u16) << 8) | (self.latch & 0x00ff); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/io/timer.rs:185:46 [INFO] [stderr] | [INFO] [stderr] 185 | let result = (self.latch & 0xff00) | (value as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/mem/memory.rs:42:17 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn addr(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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: the loop variable `i` is used to index `banks` [INFO] [stderr] --> src/mem/memory_map.rs:27:18 [INFO] [stderr] | [INFO] [stderr] 27 | for i in 0..0x10 { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 27 | for (i, ) in banks.iter_mut().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `mem::memory_map::MemoryMap` [INFO] [stderr] --> src/mem/memory_map.rs:52:5 [INFO] [stderr] | [INFO] [stderr] 52 | / pub fn new() -> Self { [INFO] [stderr] 53 | | let m31 = [ [INFO] [stderr] 54 | | Bank::Ram, [INFO] [stderr] 55 | | Bank::Ram, [INFO] [stderr] ... | [INFO] [stderr] 240 | | } [INFO] [stderr] 241 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 51 | impl Default for mem::memory_map::MemoryMap { [INFO] [stderr] 52 | fn default() -> Self { [INFO] [stderr] 53 | Self::new() [INFO] [stderr] 54 | } [INFO] [stderr] 55 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `buffer`. [INFO] [stderr] --> src/sound/sid.rs:100:22 [INFO] [stderr] | [INFO] [stderr] 100 | for i in 0..samples { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 100 | for in buffer.iter().take(samples) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/sound/sid.rs:103:52 [INFO] [stderr] | [INFO] [stderr] 103 | self.cycles = self.cycles.wrapping_add(cycles as u64); [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::from(cycles)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `system::breakpoint::BreakpointManager` [INFO] [stderr] --> src/system/breakpoint.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> Self { [INFO] [stderr] 27 | | Self { [INFO] [stderr] 28 | | breakpoints: Vec::new(), [INFO] [stderr] 29 | | bp_index: 1, [INFO] [stderr] 30 | | } [INFO] [stderr] 31 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 20 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/breakpoint.rs:33:34 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn check(&mut self, cpu: &Box) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::borrowed_box)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/system/breakpoint.rs:77:9 [INFO] [stderr] | [INFO] [stderr] 77 | self.breakpoints.iter().position(|bp| bp.enabled).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `position(|bp| bp.enabled).is_some()` with `any(|bp| bp.enabled)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/system/breakpoint.rs:122:15 [INFO] [stderr] | [INFO] [stderr] 122 | expr: &String, [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] help: change this to [INFO] [stderr] | [INFO] [stderr] 122 | expr: &str, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `expr.as_str()` to [INFO] [stderr] | [INFO] [stderr] 127 | let condition = Condition::parse(expr, radix)?; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/system/c64.rs:33:17 [INFO] [stderr] | [INFO] [stderr] 33 | pub fn addr(&self) -> u16 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/system/c64.rs:209:36 [INFO] [stderr] | [INFO] [stderr] 209 | let base_address = ((!value & 0x03) as u16) << 14; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(!value & 0x03)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/c64.rs:268:30 [INFO] [stderr] | [INFO] [stderr] 268 | pub fn get_cpu(&self) -> &Box { [INFO] [stderr] | ^^^^^^^^^ help: try: `&Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/c64.rs:272:38 [INFO] [stderr] | [INFO] [stderr] 272 | pub fn get_cpu_mut(&mut self) -> &mut Box { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&mut Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [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/system/c64.rs:354:34 [INFO] [stderr] | [INFO] [stderr] 354 | pub fn load(&mut self, data: &Vec, offset: u16) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: item `system::circular_buffer::CircularBuffer` has a public `len` method but no corresponding `is_empty` method [INFO] [stderr] --> src/system/circular_buffer.rs:15:1 [INFO] [stderr] | [INFO] [stderr] 15 | / impl CircularBuffer { [INFO] [stderr] 16 | | pub fn new(capacity: usize) -> CircularBuffer { [INFO] [stderr] 17 | | CircularBuffer { [INFO] [stderr] 18 | | buffer: vec![0; capacity], [INFO] [stderr] ... | [INFO] [stderr] 65 | | } [INFO] [stderr] 66 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_without_is_empty)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_without_is_empty [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:22:9 [INFO] [stderr] | [INFO] [stderr] 22 | / match self { [INFO] [stderr] 23 | | &Operator::Equal => write!(f, "=="), [INFO] [stderr] 24 | | &Operator::NotEqual => write!(f, "!="), [INFO] [stderr] 25 | | &Operator::Greater => write!(f, ">"), [INFO] [stderr] ... | [INFO] [stderr] 28 | | &Operator::LessEqual => write!(f, "<="), [INFO] [stderr] 29 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 22 | match *self { [INFO] [stderr] 23 | Operator::Equal => write!(f, "=="), [INFO] [stderr] 24 | Operator::NotEqual => write!(f, "!="), [INFO] [stderr] 25 | Operator::Greater => write!(f, ">"), [INFO] [stderr] 26 | Operator::GreaterEqual => write!(f, ">="), [INFO] [stderr] 27 | Operator::Less => write!(f, "<"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | / match self { [INFO] [stderr] 45 | | &Reg::A => write!(f, "A"), [INFO] [stderr] 46 | | &Reg::X => write!(f, "X"), [INFO] [stderr] 47 | | &Reg::Y => write!(f, "Y"), [INFO] [stderr] ... | [INFO] [stderr] 50 | | &Reg::PC => write!(f, "PC"), [INFO] [stderr] 51 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 44 | match *self { [INFO] [stderr] 45 | Reg::A => write!(f, "A"), [INFO] [stderr] 46 | Reg::X => write!(f, "X"), [INFO] [stderr] 47 | Reg::Y => write!(f, "Y"), [INFO] [stderr] 48 | Reg::P => write!(f, "P"), [INFO] [stderr] 49 | Reg::SP => write!(f, "SP"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:62:9 [INFO] [stderr] | [INFO] [stderr] 62 | / match self { [INFO] [stderr] 63 | | &Value::Constant(val) if val <= 0xff => write!(f, "{:02x}", val), [INFO] [stderr] 64 | | &Value::Constant(val) => write!(f, "{:04x}", val), [INFO] [stderr] 65 | | &Value::Register(ref reg) => write!(f, "{}", reg), [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 62 | match *self { [INFO] [stderr] 63 | Value::Constant(val) if val <= 0xff => write!(f, "{:02x}", val), [INFO] [stderr] 64 | Value::Constant(val) => write!(f, "{:04x}", val), [INFO] [stderr] 65 | Value::Register(ref reg) => write!(f, "{}", reg), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/condition.rs:88:29 [INFO] [stderr] | [INFO] [stderr] 88 | pub fn eval(&self, cpu: &Box) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/condition.rs:101:40 [INFO] [stderr] | [INFO] [stderr] 101 | fn eval_reg(&self, reg: &Reg, cpu: &Box) -> u16 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:102:9 [INFO] [stderr] | [INFO] [stderr] 102 | / match reg { [INFO] [stderr] 103 | | &Reg::A => cpu.get_a() as u16, [INFO] [stderr] 104 | | &Reg::X => cpu.get_x() as u16, [INFO] [stderr] 105 | | &Reg::Y => cpu.get_y() as u16, [INFO] [stderr] ... | [INFO] [stderr] 108 | | &Reg::PC => cpu.get_pc(), [INFO] [stderr] 109 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 102 | match *reg { [INFO] [stderr] 103 | Reg::A => cpu.get_a() as u16, [INFO] [stderr] 104 | Reg::X => cpu.get_x() as u16, [INFO] [stderr] 105 | Reg::Y => cpu.get_y() as u16, [INFO] [stderr] 106 | Reg::P => cpu.get_p() as u16, [INFO] [stderr] 107 | Reg::SP => cpu.get_sp() as u16, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/system/condition.rs:103:24 [INFO] [stderr] | [INFO] [stderr] 103 | &Reg::A => cpu.get_a() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/system/condition.rs:104:24 [INFO] [stderr] | [INFO] [stderr] 104 | &Reg::X => cpu.get_x() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/system/condition.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | &Reg::Y => cpu.get_y() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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/system/condition.rs:106:24 [INFO] [stderr] | [INFO] [stderr] 106 | &Reg::P => cpu.get_p() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.get_p())` [INFO] [stderr] | [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/system/condition.rs:107:25 [INFO] [stderr] | [INFO] [stderr] 107 | &Reg::SP => cpu.get_sp() as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(cpu.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: you seem to be trying to use `&Box`. Consider using just `&T` [INFO] [stderr] --> src/system/condition.rs:112:42 [INFO] [stderr] | [INFO] [stderr] 112 | fn eval_val(&self, val: &Value, cpu: &Box) -> u16 { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `&dyn Cpu` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#borrowed_box [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/system/condition.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match val { [INFO] [stderr] 114 | | &Value::Constant(value) => value, [INFO] [stderr] 115 | | &Value::Register(ref reg) => self.eval_reg(reg, cpu), [INFO] [stderr] 116 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 113 | match *val { [INFO] [stderr] 114 | Value::Constant(value) => value, [INFO] [stderr] 115 | Value::Register(ref reg) => self.eval_reg(reg, cpu), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/system/condition.rs:178:47 [INFO] [stderr] | [INFO] [stderr] 178 | Err(_) => self.parse_num(val).map(|v| Value::Constant(v)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `Value::Constant` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/system/condition.rs:209:79 [INFO] [stderr] | [INFO] [stderr] 209 | c if is_symbol(c) => Some(Token::Op(consume_while(&mut self.iter, |c| is_symbol(c)))), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove closure as shown: `is_symbol` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/system/frame_buffer.rs:30:18 [INFO] [stderr] | [INFO] [stderr] 30 | unsafe { mem::transmute::<&[u32], &[u8]>(self.pixels.as_ref()) } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&*(self.pixels.as_ref() as *const [u32] as *const [u8])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/video/gfx_sequencer.rs:42:18 [INFO] [stderr] | [INFO] [stderr] 42 | pub fn value(&self) -> u8 { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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 u32 may become silently lossy if types change [INFO] [stderr] --> src/video/sprite_sequencer.rs:84:44 [INFO] [stderr] | [INFO] [stderr] 84 | self.data.set_bits(24..32, value as u32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/video/sprite_sequencer.rs:87:44 [INFO] [stderr] | [INFO] [stderr] 87 | self.data.set_bits(16..24, value as u32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/video/sprite_sequencer.rs:90:43 [INFO] [stderr] | [INFO] [stderr] 90 | self.data.set_bits(8..16, value as u32); [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/video/vic.rs:55:18 [INFO] [stderr] | [INFO] [stderr] 55 | pub fn value(&self) -> usize { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [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/video/vic.rs:216:40 [INFO] [stderr] | [INFO] [stderr] 216 | let x_scroll_start = x_start + self.x_scroll as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.x_scroll)` [INFO] [stderr] | [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/video/vic.rs:250:40 [INFO] [stderr] | [INFO] [stderr] 250 | let x_scroll_start = x_start + self.x_scroll as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.x_scroll)` [INFO] [stderr] | [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/video/vic.rs:488:28 [INFO] [stderr] | [INFO] [stderr] 488 | | ((self.raster_unit.vm_data_line[self.raster_unit.vmli] as u16) << 3) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.vm_data_line[self.raster_unit.vmli])` [INFO] [stderr] | [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/video/vic.rs:489:27 [INFO] [stderr] | [INFO] [stderr] 489 | | self.raster_unit.rc as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.rc)` [INFO] [stderr] | [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/video/vic.rs:494:28 [INFO] [stderr] | [INFO] [stderr] 494 | | (((self.raster_unit.vm_data_line[self.raster_unit.vmli] & 0x3f) as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.vm_data_line[self.raster_unit.vmli] & 0x3f)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:495:37 [INFO] [stderr] | [INFO] [stderr] 495 | << 3) | self.raster_unit.rc as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.rc)` [INFO] [stderr] | [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/video/vic.rs:501:27 [INFO] [stderr] | [INFO] [stderr] 501 | | self.raster_unit.rc as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.rc)` [INFO] [stderr] | [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/video/vic.rs:527:43 [INFO] [stderr] | [INFO] [stderr] 527 | self.raster_unit.sprite_ptrs[n] = (self.mem.read(address) as u16) << 6; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.mem.read(address))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:541:57 [INFO] [stderr] | [INFO] [stderr] 541 | let address = self.raster_unit.sprite_ptrs[n] | (self.raster_unit.mc[n] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.raster_unit.mc[n])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 29 [INFO] [stderr] --> src/video/vic.rs:549:5 [INFO] [stderr] | [INFO] [stderr] 549 | / fn clock(&mut self) { [INFO] [stderr] 550 | | match self.cycle { [INFO] [stderr] 551 | | 1 => { [INFO] [stderr] 552 | | /* [INFO] [stderr] ... | [INFO] [stderr] 851 | | } [INFO] [stderr] 852 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/video/vic.rs:767:26 [INFO] [stderr] | [INFO] [stderr] 767 | for i in 0..8 { [INFO] [stderr] | ^^^^ help: try replacing the loop by: `self.raster_unit.mc[..8].clone_from_slice(&self.raster_unit.mc_base[..8])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:1021:64 [INFO] [stderr] | [INFO] [stderr] 1021 | (self.sprite_units[n].config.x & 0xff00) | (value as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:1054:66 [INFO] [stderr] | [INFO] [stderr] 1054 | let new_value = (self.raster_compare & 0xff00) | (value as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/video/vic.rs:1088:37 [INFO] [stderr] | [INFO] [stderr] 1088 | self.video_matrix = (((value & 0xf0) >> 4) as u16) << 10; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((value & 0xf0) >> 4)` [INFO] [stderr] | [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/video/vic.rs:1089:34 [INFO] [stderr] | [INFO] [stderr] 1089 | self.char_base = (((value & 0x0f) >> 1) as u16) << 11; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from((value & 0x0f) >> 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: the loop variable `opcode` is used to index `OPCODE_TIMING` [INFO] [stderr] --> tests/cpu_timing.rs:308:19 [INFO] [stderr] | [INFO] [stderr] 308 | for opcode in 0..256 { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 308 | for (opcode, ) in OPCODE_TIMING.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_prefixed_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 1, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 0o1, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:9 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 2, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 0o2, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 2, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 0o2, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:17 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 1, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 0o1, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:21 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 2, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 0o2, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 2, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 0o2, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:29 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 1, 02, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 0o1, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:33 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 2, 02, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 0o2, 02, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:37 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 2, 01, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 0o2, 01, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:41 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 1, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 0o1, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:45 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 2, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 0o2, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:29:49 [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 2 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 29 | 01, 02, 02, 01, 02, 02, 01, 02, 02, 01, 02, 0o2 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:5 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 2, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 0o2, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:9 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 2, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 0o2, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 2, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 0o2, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:17 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 1, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 0o1, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:21 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 1, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 0o1, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:25 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 1, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 0o1, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:37 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 2, 02, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 0o2, 02, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:41 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 2, 02, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 0o2, 02, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:45 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 2, 02 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 0o2, 02 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: this is a decimal constant [INFO] [stderr] --> tests/c64_tests.rs:33:49 [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 02 [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_prefixed_literal [INFO] [stderr] help: if you mean to use a decimal constant, remove the `0` to remove confusion [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 2 [INFO] [stderr] | ^ [INFO] [stderr] help: if you mean to use an octal constant, use `0o` [INFO] [stderr] | [INFO] [stderr] 33 | 02, 02, 02, 01, 01, 01, 00, 00, 02, 02, 02, 0o2 [INFO] [stderr] | ^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> tests/sid_player_standalone.rs:121:18 [INFO] [stderr] | [INFO] [stderr] 121 | delta += model.cycles_per_frame as i32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(model.cycles_per_frame)` [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] Finished dev [unoptimized + debuginfo] target(s) in 7.58s [INFO] running `"docker" "inspect" "0a59948ad0d9ba76774f2743cb8d926e7ca8cfab6f3ccfc5787d8dfbe8b484bd"` [INFO] running `"docker" "rm" "-f" "0a59948ad0d9ba76774f2743cb8d926e7ca8cfab6f3ccfc5787d8dfbe8b484bd"` [INFO] [stdout] 0a59948ad0d9ba76774f2743cb8d926e7ca8cfab6f3ccfc5787d8dfbe8b484bd