[INFO] updating cached repository happenslol/datboi [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/happenslol/datboi [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/happenslol/datboi" "work/ex/clippy-test-run/sources/stable/gh/happenslol/datboi"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/happenslol/datboi'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/happenslol/datboi" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/happenslol/datboi"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/happenslol/datboi'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ac684a2880c50c3d3516f7220305c46ad1115db0 [INFO] sha for GitHub repo happenslol/datboi: ac684a2880c50c3d3516f7220305c46ad1115db0 [INFO] validating manifest of happenslol/datboi 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 happenslol/datboi 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 happenslol/datboi [INFO] finished frobbing happenslol/datboi [INFO] frobbed toml for happenslol/datboi written to work/ex/clippy-test-run/sources/stable/gh/happenslol/datboi/Cargo.toml [INFO] started frobbing happenslol/datboi [INFO] finished frobbing happenslol/datboi [INFO] frobbed toml for happenslol/datboi written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/happenslol/datboi/Cargo.toml [INFO] crate happenslol/datboi has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting happenslol/datboi against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/happenslol/datboi:/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] e1d1adfbd847f8b1be57bd72d64bb0a0eb10d942ff6d7798ce8fe594df2e51b1 [INFO] running `"docker" "start" "-a" "e1d1adfbd847f8b1be57bd72d64bb0a0eb10d942ff6d7798ce8fe594df2e51b1"` [INFO] [stderr] Checking parking_lot v0.5.5 [INFO] [stderr] Compiling glutin v0.16.0 [INFO] [stderr] Checking smithay-client-toolkit v0.2.1 [INFO] [stderr] Checking winit v0.15.0 [INFO] [stderr] Checking datboi v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:119:17 [INFO] [stderr] | [INFO] [stderr] 119 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:119:17 [INFO] [stderr] | [INFO] [stderr] 119 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/registers.rs:57:28 [INFO] [stderr] | [INFO] [stderr] 57 | WordRegister::AF => ((self.a as u16) << 8) | (self.f as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.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/core/registers.rs:57:52 [INFO] [stderr] | [INFO] [stderr] 57 | WordRegister::AF => ((self.a as u16) << 8) | (self.f as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.f)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:58:28 [INFO] [stderr] | [INFO] [stderr] 58 | WordRegister::BC => ((self.b as u16) << 8) | (self.c as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.b)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:58:52 [INFO] [stderr] | [INFO] [stderr] 58 | WordRegister::BC => ((self.b as u16) << 8) | (self.c as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/registers.rs:59:28 [INFO] [stderr] | [INFO] [stderr] 59 | WordRegister::DE => ((self.d as u16) << 8) | (self.e as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.d)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:59:52 [INFO] [stderr] | [INFO] [stderr] 59 | WordRegister::DE => ((self.d as u16) << 8) | (self.e as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.e)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | WordRegister::HL => ((self.h as u16) << 8) | (self.l as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.h)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:60:52 [INFO] [stderr] | [INFO] [stderr] 60 | WordRegister::HL => ((self.h as u16) << 8) | (self.l as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.l)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:96:37 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn set_zero_flag(&mut self) { self.f = self.f | 0x80; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x80` [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: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:97:39 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn unset_zero_flag(&mut self) { self.f = self.f & 0x70; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0x70` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:98:38 [INFO] [stderr] | [INFO] [stderr] 98 | pub fn set_carry_flag(&mut self) { self.f = self.f | 0x10; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x10` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:99:43 [INFO] [stderr] | [INFO] [stderr] 99 | pub fn set_half_carry_flag(&mut self) { self.f = self.f | 0x20; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x20` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:100:45 [INFO] [stderr] | [INFO] [stderr] 100 | pub fn unset_half_carry_flag(&mut self) { self.f = self.f & 0xD0; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0xD0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:101:40 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn unset_carry_flag(&mut self) { self.f = self.f & 0xE0; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0xE0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:102:36 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn set_sub_flag(&mut self) { self.f = self.f | 0x40; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x40` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:103:38 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn unset_sub_flag(&mut self) { self.f = self.f & 0xB0; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0xB0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:105:45 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn complement_carry_flag(&mut self) { self.f = self.f ^ 0x10; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f ^= 0x10` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/core/cpu.rs:85:7 [INFO] [stderr] | [INFO] [stderr] 85 | 0x78 => self.ld_r1_r2(ByteRegister::A, ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/core/cpu.rs:150:7 [INFO] [stderr] | [INFO] [stderr] 150| 0x78 => self.ld_a_r1(ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/core/cpu.rs:393:11 [INFO] [stderr] | [INFO] [stderr] 393 | 0x08 => self.rlc_n(ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/core/cpu.rs:411:11 [INFO] [stderr] | [INFO] [stderr] 411 | 0x08 => self.rrc_n(ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:752:28 [INFO] [stderr] | [INFO] [stderr] 752 | let pointer = 0xFF00 + (self.registers[ByteRegister::C] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.registers[ByteRegister::C])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:760:28 [INFO] [stderr] | [INFO] [stderr] 760 | let pointer = 0xFF00 + (self.registers[ByteRegister::C] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.registers[ByteRegister::C])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:803:28 [INFO] [stderr] | [INFO] [stderr] 803 | let pointer = 0xFF00 + (self.next_byte() as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:811:28 [INFO] [stderr] | [INFO] [stderr] 811 | let pointer = 0xFF00 + (self.next_byte() as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:845:21 [INFO] [stderr] | [INFO] [stderr] 845 | let next_byte = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1219:18 [INFO] [stderr] | [INFO] [stderr] 1219 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1219:40 [INFO] [stderr] | [INFO] [stderr] 1219 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1234:21 [INFO] [stderr] | [INFO] [stderr] 1234 | let next_byte = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [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/core/cpu.rs:1711:40 [INFO] [stderr] | [INFO] [stderr] 1711 | let address = current.wrapping_add(offset as i16); [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: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1727:40 [INFO] [stderr] | [INFO] [stderr] 1727 | let address = current.wrapping_add(offset as i16); [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: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1743:40 [INFO] [stderr] | [INFO] [stderr] 1743 | let address = current.wrapping_add(offset as i16); [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: the operation is ineffective. Consider reducing it to `(n as u16)` [INFO] [stderr] --> src/core/cpu.rs:1809:49 [INFO] [stderr] | [INFO] [stderr] 1809 | self.registers.write_word(WordRegister::PC, 0x0000 + (n as u16)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1809:58 [INFO] [stderr] | [INFO] [stderr] 1809 | self.registers.write_word(WordRegister::PC, 0x0000 + (n as u16)); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1896:6 [INFO] [stderr] | [INFO] [stderr] 1896 | ((upper as u16) << 8) | (lower as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(upper)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:1896:29 [INFO] [stderr] | [INFO] [stderr] 1896 | ((upper as u16) << 8) | (lower as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(lower)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:1900:18 [INFO] [stderr] | [INFO] [stderr] 1900 | let result = (operands.0 as u16) + (operands.1 as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1900:40 [INFO] [stderr] | [INFO] [stderr] 1900 | let result = (operands.0 as u16) + (operands.1 as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1912:18 [INFO] [stderr] | [INFO] [stderr] 1912 | let result = (operands.0 as i16) - (operands.1 as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1912:40 [INFO] [stderr] | [INFO] [stderr] 1912 | let result = (operands.0 as i16) - (operands.1 as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1934:17 [INFO] [stderr] | [INFO] [stderr] 1934 | let first = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:1935:18 [INFO] [stderr] | [INFO] [stderr] 1935 | let second = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1983:5 [INFO] [stderr] | [INFO] [stderr] 1983 | (((operands.0 as i16) & 0xF) - ((operands.1 as i16) & 0xF)) < 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1983:35 [INFO] [stderr] | [INFO] [stderr] 1983 | (((operands.0 as i16) & 0xF) - ((operands.1 as i16) & 0xF)) < 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1987:16 [INFO] [stderr] | [INFO] [stderr] 1987 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1987:38 [INFO] [stderr] | [INFO] [stderr] 1987 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/mmu/mod.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / match address { [INFO] [stderr] 220 | | 0xFF40 => self.gpu.borrow_mut().set_lcd_control(value), [INFO] [stderr] 221 | | [INFO] [stderr] 222 | | _ => {}, [INFO] [stderr] 223 | | }; [INFO] [stderr] | |_________^ help: try this: `if let 0xFF40 = address { self.gpu.borrow_mut().set_lcd_control(value) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/mmu/mod.rs:291:4 [INFO] [stderr] | [INFO] [stderr] 291 | ((lower as u16) << 8) | (upper as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(lower)` [INFO] [stderr] | [INFO] [stderr] = help: 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/mmu/mod.rs:291:27 [INFO] [stderr] | [INFO] [stderr] 291 | ((lower as u16) << 8) | (upper as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(upper)` [INFO] [stderr] | [INFO] [stderr] = help: 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/gpu/mod.rs:107:19 [INFO] [stderr] | [INFO] [stderr] 107 | let offset = (self.line as u16 * 32) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.line)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/gl_context.rs:133:7 [INFO] [stderr] | [INFO] [stderr] 133 | / match event { [INFO] [stderr] 134 | | glutin::Event::WindowEvent { event, .. } => match event { [INFO] [stderr] 135 | | glutin::WindowEvent::KeyboardInput { input, .. } => { [INFO] [stderr] 136 | | events.push(Event::KeyEvent(input.scancode)); [INFO] [stderr] ... | [INFO] [stderr] 143 | | _ => {} [INFO] [stderr] 144 | | }; [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 133 | if let glutin::Event::WindowEvent { event, .. } = event { match event { [INFO] [stderr] 134 | glutin::WindowEvent::KeyboardInput { input, .. } => { [INFO] [stderr] 135 | events.push(Event::KeyEvent(input.scancode)); [INFO] [stderr] 136 | }, [INFO] [stderr] 137 | [INFO] [stderr] 138 | glutin::WindowEvent::CloseRequested => events.push(Event::CloseRequest), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:179:22 [INFO] [stderr] | [INFO] [stderr] 179 | let mut status = gl::FALSE as gl::types::GLint; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::FALSE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | if status != (gl::TRUE as gl::types::GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/gl_context.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / str::from_utf8(&buf) [INFO] [stderr] 200 | | .ok() [INFO] [stderr] 201 | | .expect("ShaderInfoLog not valid utf8") [INFO] [stderr] | |_________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:210:22 [INFO] [stderr] | [INFO] [stderr] 210 | let mut status = gl::FALSE as gl::types::GLint; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::FALSE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:214:18 [INFO] [stderr] | [INFO] [stderr] 214 | if status != (gl::TRUE as gl::types::GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/gl_context.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | / str::from_utf8(&buf) [INFO] [stderr] 229 | | .ok() [INFO] [stderr] 230 | | .expect("ProgramInfoLog not valid utf8") [INFO] [stderr] | |__________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:89:11 [INFO] [stderr] | [INFO] [stderr] 89 | io::stdin().read_line(&mut input).ok().expect("couldn't read in"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/main.rs:127:24 [INFO] [stderr] | [INFO] [stderr] 127 | .map(|it| String::from(it)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:131:20 [INFO] [stderr] | [INFO] [stderr] 131 | .expect(&format!("invalid hex value: {}", parts[1])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("invalid hex value: {}", parts[1]))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/registers.rs:57:28 [INFO] [stderr] | [INFO] [stderr] 57 | WordRegister::AF => ((self.a as u16) << 8) | (self.f as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.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/core/registers.rs:57:52 [INFO] [stderr] | [INFO] [stderr] 57 | WordRegister::AF => ((self.a as u16) << 8) | (self.f as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.f)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:58:28 [INFO] [stderr] | [INFO] [stderr] 58 | WordRegister::BC => ((self.b as u16) << 8) | (self.c as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.b)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:58:52 [INFO] [stderr] | [INFO] [stderr] 58 | WordRegister::BC => ((self.b as u16) << 8) | (self.c as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.c)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/registers.rs:59:28 [INFO] [stderr] | [INFO] [stderr] 59 | WordRegister::DE => ((self.d as u16) << 8) | (self.e as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.d)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:59:52 [INFO] [stderr] | [INFO] [stderr] 59 | WordRegister::DE => ((self.d as u16) << 8) | (self.e as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.e)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:60:28 [INFO] [stderr] | [INFO] [stderr] 60 | WordRegister::HL => ((self.h as u16) << 8) | (self.l as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.h)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/registers.rs:60:52 [INFO] [stderr] | [INFO] [stderr] 60 | WordRegister::HL => ((self.h as u16) << 8) | (self.l as u16), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `u16::from(self.l)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:96:37 [INFO] [stderr] | [INFO] [stderr] 96 | pub fn set_zero_flag(&mut self) { self.f = self.f | 0x80; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x80` [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: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:97:39 [INFO] [stderr] | [INFO] [stderr] 97 | pub fn unset_zero_flag(&mut self) { self.f = self.f & 0x70; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0x70` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:98:38 [INFO] [stderr] | [INFO] [stderr] 98 | pub fn set_carry_flag(&mut self) { self.f = self.f | 0x10; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x10` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:99:43 [INFO] [stderr] | [INFO] [stderr] 99 | pub fn set_half_carry_flag(&mut self) { self.f = self.f | 0x20; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x20` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:100:45 [INFO] [stderr] | [INFO] [stderr] 100 | pub fn unset_half_carry_flag(&mut self) { self.f = self.f & 0xD0; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0xD0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:101:40 [INFO] [stderr] | [INFO] [stderr] 101 | pub fn unset_carry_flag(&mut self) { self.f = self.f & 0xE0; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0xE0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:102:36 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn set_sub_flag(&mut self) { self.f = self.f | 0x40; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f |= 0x40` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:103:38 [INFO] [stderr] | [INFO] [stderr] 103 | pub fn unset_sub_flag(&mut self) { self.f = self.f & 0xB0; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f &= 0xB0` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/core/registers.rs:105:45 [INFO] [stderr] | [INFO] [stderr] 105 | pub fn complement_carry_flag(&mut self) { self.f = self.f ^ 0x10; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.f ^= 0x10` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/core/cpu.rs:85:7 [INFO] [stderr] | [INFO] [stderr] 85 | 0x78 => self.ld_r1_r2(ByteRegister::A, ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_overlapping_arm)] on by default [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/core/cpu.rs:150:7 [INFO] [stderr] | [INFO] [stderr] 150| 0x78 => self.ld_a_r1(ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: some ranges overlap [INFO] [stderr] --> src/core/cpu.rs:393:11 [INFO] [stderr] | [INFO] [stderr] 393 | 0x08 => self.rlc_n(ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: overlaps with this [INFO] [stderr] --> src/core/cpu.rs:411:11 [INFO] [stderr] | [INFO] [stderr] 411 | 0x08 => self.rrc_n(ByteRegister::B), [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_overlapping_arm [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:752:28 [INFO] [stderr] | [INFO] [stderr] 752 | let pointer = 0xFF00 + (self.registers[ByteRegister::C] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.registers[ByteRegister::C])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:760:28 [INFO] [stderr] | [INFO] [stderr] 760 | let pointer = 0xFF00 + (self.registers[ByteRegister::C] as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.registers[ByteRegister::C])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:803:28 [INFO] [stderr] | [INFO] [stderr] 803 | let pointer = 0xFF00 + (self.next_byte() as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:811:28 [INFO] [stderr] | [INFO] [stderr] 811 | let pointer = 0xFF00 + (self.next_byte() as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:845:21 [INFO] [stderr] | [INFO] [stderr] 845 | let next_byte = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1219:18 [INFO] [stderr] | [INFO] [stderr] 1219 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1219:40 [INFO] [stderr] | [INFO] [stderr] 1219 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1234:21 [INFO] [stderr] | [INFO] [stderr] 1234 | let next_byte = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [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/core/cpu.rs:1711:40 [INFO] [stderr] | [INFO] [stderr] 1711 | let address = current.wrapping_add(offset as i16); [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: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1727:40 [INFO] [stderr] | [INFO] [stderr] 1727 | let address = current.wrapping_add(offset as i16); [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: casting i8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1743:40 [INFO] [stderr] | [INFO] [stderr] 1743 | let address = current.wrapping_add(offset as i16); [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: the operation is ineffective. Consider reducing it to `(n as u16)` [INFO] [stderr] --> src/core/cpu.rs:1809:49 [INFO] [stderr] | [INFO] [stderr] 1809 | self.registers.write_word(WordRegister::PC, 0x0000 + (n as u16)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1809:58 [INFO] [stderr] | [INFO] [stderr] 1809 | self.registers.write_word(WordRegister::PC, 0x0000 + (n as u16)); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u16::from(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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1896:6 [INFO] [stderr] | [INFO] [stderr] 1896 | ((upper as u16) << 8) | (lower as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(upper)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:1896:29 [INFO] [stderr] | [INFO] [stderr] 1896 | ((upper as u16) << 8) | (lower as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(lower)` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:1900:18 [INFO] [stderr] | [INFO] [stderr] 1900 | let result = (operands.0 as u16) + (operands.1 as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1900:40 [INFO] [stderr] | [INFO] [stderr] 1900 | let result = (operands.0 as u16) + (operands.1 as u16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1912:18 [INFO] [stderr] | [INFO] [stderr] 1912 | let result = (operands.0 as i16) - (operands.1 as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1912:40 [INFO] [stderr] | [INFO] [stderr] 1912 | let result = (operands.0 as i16) - (operands.1 as i16); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1934:17 [INFO] [stderr] | [INFO] [stderr] 1934 | let first = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: 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/core/cpu.rs:1935:18 [INFO] [stderr] | [INFO] [stderr] 1935 | let second = self.next_byte() as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(self.next_byte())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1983:5 [INFO] [stderr] | [INFO] [stderr] 1983 | (((operands.0 as i16) & 0xF) - ((operands.1 as i16) & 0xF)) < 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i16 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1983:35 [INFO] [stderr] | [INFO] [stderr] 1983 | (((operands.0 as i16) & 0xF) - ((operands.1 as i16) & 0xF)) < 0 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `i16::from(operands.1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1987:16 [INFO] [stderr] | [INFO] [stderr] 1987 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to u32 may become silently lossy if types change [INFO] [stderr] --> src/core/cpu.rs:1987:38 [INFO] [stderr] | [INFO] [stderr] 1987 | let result = (operands.0 as u32) + (operands.1 as u32); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(operands.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/mmu/mod.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / match address { [INFO] [stderr] 220 | | 0xFF40 => self.gpu.borrow_mut().set_lcd_control(value), [INFO] [stderr] 221 | | [INFO] [stderr] 222 | | _ => {}, [INFO] [stderr] 223 | | }; [INFO] [stderr] | |_________^ help: try this: `if let 0xFF40 = address { self.gpu.borrow_mut().set_lcd_control(value) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/mmu/mod.rs:291:4 [INFO] [stderr] | [INFO] [stderr] 291 | ((lower as u16) << 8) | (upper as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(lower)` [INFO] [stderr] | [INFO] [stderr] = help: 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/mmu/mod.rs:291:27 [INFO] [stderr] | [INFO] [stderr] 291 | ((lower as u16) << 8) | (upper as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `u16::from(upper)` [INFO] [stderr] | [INFO] [stderr] = help: 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/gpu/mod.rs:107:19 [INFO] [stderr] | [INFO] [stderr] 107 | let offset = (self.line as u16 * 32) as usize; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.line)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/gl_context.rs:133:7 [INFO] [stderr] | [INFO] [stderr] 133 | / match event { [INFO] [stderr] 134 | | glutin::Event::WindowEvent { event, .. } => match event { [INFO] [stderr] 135 | | glutin::WindowEvent::KeyboardInput { input, .. } => { [INFO] [stderr] 136 | | events.push(Event::KeyEvent(input.scancode)); [INFO] [stderr] ... | [INFO] [stderr] 143 | | _ => {} [INFO] [stderr] 144 | | }; [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 133 | if let glutin::Event::WindowEvent { event, .. } = event { match event { [INFO] [stderr] 134 | glutin::WindowEvent::KeyboardInput { input, .. } => { [INFO] [stderr] 135 | events.push(Event::KeyEvent(input.scancode)); [INFO] [stderr] 136 | }, [INFO] [stderr] 137 | [INFO] [stderr] 138 | glutin::WindowEvent::CloseRequested => events.push(Event::CloseRequest), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:179:22 [INFO] [stderr] | [INFO] [stderr] 179 | let mut status = gl::FALSE as gl::types::GLint; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::FALSE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:183:18 [INFO] [stderr] | [INFO] [stderr] 183 | if status != (gl::TRUE as gl::types::GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/gl_context.rs:199:9 [INFO] [stderr] | [INFO] [stderr] 199 | / str::from_utf8(&buf) [INFO] [stderr] 200 | | .ok() [INFO] [stderr] 201 | | .expect("ShaderInfoLog not valid utf8") [INFO] [stderr] | |_________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:210:22 [INFO] [stderr] | [INFO] [stderr] 210 | let mut status = gl::FALSE as gl::types::GLint; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::FALSE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/gl_context.rs:214:18 [INFO] [stderr] | [INFO] [stderr] 214 | if status != (gl::TRUE as gl::types::GLint) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i32::from(gl::TRUE)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/gl_context.rs:228:9 [INFO] [stderr] | [INFO] [stderr] 228 | / str::from_utf8(&buf) [INFO] [stderr] 229 | | .ok() [INFO] [stderr] 230 | | .expect("ProgramInfoLog not valid utf8") [INFO] [stderr] | |__________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/main.rs:89:11 [INFO] [stderr] | [INFO] [stderr] 89 | io::stdin().read_line(&mut input).ok().expect("couldn't read in"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/main.rs:127:24 [INFO] [stderr] | [INFO] [stderr] 127 | .map(|it| String::from(it)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [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: use of `expect` followed by a function call [INFO] [stderr] --> src/main.rs:131:20 [INFO] [stderr] | [INFO] [stderr] 131 | .expect(&format!("invalid hex value: {}", parts[1])); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| panic!("invalid hex value: {}", parts[1]))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 16.55s [INFO] running `"docker" "inspect" "e1d1adfbd847f8b1be57bd72d64bb0a0eb10d942ff6d7798ce8fe594df2e51b1"` [INFO] running `"docker" "rm" "-f" "e1d1adfbd847f8b1be57bd72d64bb0a0eb10d942ff6d7798ce8fe594df2e51b1"` [INFO] [stdout] e1d1adfbd847f8b1be57bd72d64bb0a0eb10d942ff6d7798ce8fe594df2e51b1