[INFO] updating cached repository ColinEberhardt/wasm-rust-chip8 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ColinEberhardt/wasm-rust-chip8 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ColinEberhardt/wasm-rust-chip8" "work/ex/clippy-test-run/sources/stable/gh/ColinEberhardt/wasm-rust-chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ColinEberhardt/wasm-rust-chip8'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ColinEberhardt/wasm-rust-chip8" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ColinEberhardt/wasm-rust-chip8"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ColinEberhardt/wasm-rust-chip8'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 4810ab6e36c0d89f81d80bbf5c12ee20de088243 [INFO] sha for GitHub repo ColinEberhardt/wasm-rust-chip8: 4810ab6e36c0d89f81d80bbf5c12ee20de088243 [INFO] validating manifest of ColinEberhardt/wasm-rust-chip8 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 ColinEberhardt/wasm-rust-chip8 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 ColinEberhardt/wasm-rust-chip8 [INFO] finished frobbing ColinEberhardt/wasm-rust-chip8 [INFO] frobbed toml for ColinEberhardt/wasm-rust-chip8 written to work/ex/clippy-test-run/sources/stable/gh/ColinEberhardt/wasm-rust-chip8/Cargo.toml [INFO] started frobbing ColinEberhardt/wasm-rust-chip8 [INFO] finished frobbing ColinEberhardt/wasm-rust-chip8 [INFO] frobbed toml for ColinEberhardt/wasm-rust-chip8 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ColinEberhardt/wasm-rust-chip8/Cargo.toml [INFO] crate ColinEberhardt/wasm-rust-chip8 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 ColinEberhardt/wasm-rust-chip8 against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ColinEberhardt/wasm-rust-chip8:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 0ed44076556df8a09cb7bddf5c4d0bcf2a867da8927fd032454e27031c24e9a7 [INFO] running `"docker" "start" "-a" "0ed44076556df8a09cb7bddf5c4d0bcf2a867da8927fd032454e27031c24e9a7"` [INFO] [stderr] Checking hello-rust v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/rand.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | q: q, [INFO] [stderr] | ^^^^ help: replace it with: `q` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/rand.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | q: q, [INFO] [stderr] | ^^^^ help: replace it with: `q` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/display.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | return collision; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `collision` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/rand.rs:3:18 [INFO] [stderr] | [INFO] [stderr] 3 | const PHI: u32 = 0x9e3779b9; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x9e37_79b9` [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/rand.rs:26:16 [INFO] [stderr] | [INFO] [stderr] 26 | c: 362436, [INFO] [stderr] | ^^^^^^ help: consider: `362_436` [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/rand.rs:33:24 [INFO] [stderr] | [INFO] [stderr] 33 | const R: u32 = 0xfffffffe; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_fffe` [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/cpu.rs:319:20 [INFO] [stderr] | [INFO] [stderr] 319 | cpu.v[2] = 0b01101100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0110_1100` [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/cpu.rs:320:20 [INFO] [stderr] | [INFO] [stderr] 320 | cpu.v[3] = 0b11001110; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_1110` [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/cpu.rs:323:30 [INFO] [stderr] | [INFO] [stderr] 323 | assert_eq!(cpu.v[2], 0b11101110, "Vx was loaded with vx OR vy"); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1110_1110` [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/cpu.rs:329:20 [INFO] [stderr] | [INFO] [stderr] 329 | cpu.v[2] = 0b01101100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0110_1100` [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/cpu.rs:330:20 [INFO] [stderr] | [INFO] [stderr] 330 | cpu.v[3] = 0b11001110; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_1110` [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/cpu.rs:333:30 [INFO] [stderr] | [INFO] [stderr] 333 | assert_eq!(cpu.v[2], 0b01001100, "Vx was loaded with vx AND vy"); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0100_1100` [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/cpu.rs:339:20 [INFO] [stderr] | [INFO] [stderr] 339 | cpu.v[2] = 0b01101100; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0110_1100` [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/cpu.rs:340:20 [INFO] [stderr] | [INFO] [stderr] 340 | cpu.v[3] = 0b11001110; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_1110` [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/cpu.rs:343:30 [INFO] [stderr] | [INFO] [stderr] 343 | assert_eq!(cpu.v[2], 0b10100010, "Vx was loaded with vx XOR vy"); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1010_0010` [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: unneeded return statement [INFO] [stderr] --> src/display.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | return collision; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `collision` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/display.rs:100:28 [INFO] [stderr] | [INFO] [stderr] 100 | let sprite: [u8; 2] = [0b00110011, 0b11001010]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_0011` [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/display.rs:100:40 [INFO] [stderr] | [INFO] [stderr] 100 | let sprite: [u8; 2] = [0b00110011, 0b11001010]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b1100_1010` [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/display.rs:127:32 [INFO] [stderr] | [INFO] [stderr] 127 | let mut sprite: [u8; 1] = [0b00110000]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0011_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/display.rs:131:15 [INFO] [stderr] | [INFO] [stderr] 131 | sprite = [0b00000011]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0011` [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/display.rs:135:15 [INFO] [stderr] | [INFO] [stderr] 135 | sprite = [0b00000001]; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0b0000_0001` [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/rand.rs:3:18 [INFO] [stderr] | [INFO] [stderr] 3 | const PHI: u32 = 0x9e3779b9; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x9e37_79b9` [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/rand.rs:26:16 [INFO] [stderr] | [INFO] [stderr] 26 | c: 362436, [INFO] [stderr] | ^^^^^^ help: consider: `362_436` [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/rand.rs:33:24 [INFO] [stderr] | [INFO] [stderr] 33 | const R: u32 = 0xfffffffe; [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_fffe` [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: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | (memory[index as usize] as u16) << 8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(memory[index as usize])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:30:11 [INFO] [stderr] | [INFO] [stderr] 30 | | (memory[(index + 1) as usize] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(memory[(index + 1) as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cpu::Cpu` [INFO] [stderr] --> src/cpu.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Cpu { [INFO] [stderr] 35 | | Cpu { [INFO] [stderr] 36 | | i: 0, [INFO] [stderr] 37 | | pc: 0, [INFO] [stderr] ... | [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [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] 33 | impl Default for cpu::Cpu { [INFO] [stderr] 34 | fn default() -> Self { [INFO] [stderr] 35 | Self::new() [INFO] [stderr] 36 | } [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `FONT_SET` [INFO] [stderr] --> src/cpu.rs:59:18 [INFO] [stderr] | [INFO] [stderr] 59 | for i in 0..80 { [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] 59 | for (i, ) in FONT_SET.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:59:18 [INFO] [stderr] | [INFO] [stderr] 59 | for i in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&FONT_SET[..80])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:102:17 [INFO] [stderr] | [INFO] [stderr] 102 | self.sp = self.sp - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp -= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:110:17 [INFO] [stderr] | [INFO] [stderr] 110 | self.sp = self.sp + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:126:33 [INFO] [stderr] | [INFO] [stderr] 126 | (0x8, _, _, 0x1) => self.v[x] = self.v[x] | self.v[y], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] |= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:128:33 [INFO] [stderr] | [INFO] [stderr] 128 | (0x8, _, _, 0x2) => self.v[x] = self.v[x] & self.v[y], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] &= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:130:33 [INFO] [stderr] | [INFO] [stderr] 130 | (0x8, _, _, 0x3) => self.v[x] = self.v[x] ^ self.v[y], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] ^= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:133:27 [INFO] [stderr] | [INFO] [stderr] 133 | let res = self.v[x] as u16 + self.v[y] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:133:46 [INFO] [stderr] | [INFO] [stderr] 133 | let res = self.v[x] as u16 + self.v[y] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[y])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:164:47 [INFO] [stderr] | [INFO] [stderr] 164 | (0xB, _, _, _) => self.pc = nnn + self.v[0] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[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/cpu.rs:170:63 [INFO] [stderr] | [INFO] [stderr] 170 | &self.memory[self.i as usize .. (self.i + n as u16) as usize]); [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: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:183:24 [INFO] [stderr] | [INFO] [stderr] 183 | if *key == true { [INFO] [stderr] | ^^^^^^^^^^^^ help: try simplifying it as shown: `*key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:192:35 [INFO] [stderr] | [INFO] [stderr] 192 | (0xF, _, 0x1, 0xE) => self.i = self.i + self.v[x] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.i += self.v[x] as u16` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:192:53 [INFO] [stderr] | [INFO] [stderr] 192 | (0xF, _, 0x1, 0xE) => self.i = self.i + self.v[x] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:194:44 [INFO] [stderr] | [INFO] [stderr] 194 | (0xF, _, 0x2, 0x9) => self.i = vx as u16 * 5, [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::from(vx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/cpu.rs:203:50 [INFO] [stderr] | [INFO] [stderr] 203 | .copy_from_slice(&self.v[0..(x as usize + 1)]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=x as usize` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/cpu.rs:205:43 [INFO] [stderr] | [INFO] [stderr] 205 | (0xF, _, 0x6, 0x5) => self.v[0..(x as usize + 1)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=x as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `display::Display` [INFO] [stderr] --> src/display.rs:9:3 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn new() -> Display { [INFO] [stderr] 10 | | Display { [INFO] [stderr] 11 | | memory: [0; 2048] [INFO] [stderr] 12 | | } [INFO] [stderr] 13 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 8 | impl Default for display::Display { [INFO] [stderr] 9 | fn default() -> Self { [INFO] [stderr] 10 | Self::new() [INFO] [stderr] 11 | } [INFO] [stderr] 12 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `sprite` [INFO] [stderr] --> src/display.rs:34:14 [INFO] [stderr] | [INFO] [stderr] 34 | for j in 0..rows { [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] 34 | for (j, ) in sprite.iter().enumerate().take(rows) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/rand.rs:20:33 [INFO] [stderr] | [INFO] [stderr] 20 | let window = &mut q[i - 3..i + 1]; [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `i - 3..=i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/rand.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | let t = A * self.q[self.i] as u64 + self.c as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.q[self.i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/rand.rs:36:45 [INFO] [stderr] | [INFO] [stderr] 36 | let t = A * self.q[self.i] as u64 + self.c as u64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/rand.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | let mut x = (t + self.c as u64) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::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: you should consider deriving a `Default` implementation for `keypad::Keypad` [INFO] [stderr] --> src/keypad.rs:6:3 [INFO] [stderr] | [INFO] [stderr] 6 | / pub fn new() -> Keypad { [INFO] [stderr] 7 | | Keypad { [INFO] [stderr] 8 | | keys: [false; 16] [INFO] [stderr] 9 | | } [INFO] [stderr] 10 | | } [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] 1 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:29:5 [INFO] [stderr] | [INFO] [stderr] 29 | (memory[index as usize] as u16) << 8 [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(memory[index as usize])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:30:11 [INFO] [stderr] | [INFO] [stderr] 30 | | (memory[(index + 1) as usize] as u16) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u16::from(memory[(index + 1) as usize])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `cpu::Cpu` [INFO] [stderr] --> src/cpu.rs:34:5 [INFO] [stderr] | [INFO] [stderr] 34 | / pub fn new() -> Cpu { [INFO] [stderr] 35 | | Cpu { [INFO] [stderr] 36 | | i: 0, [INFO] [stderr] 37 | | pc: 0, [INFO] [stderr] ... | [INFO] [stderr] 46 | | } [INFO] [stderr] 47 | | } [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] 33 | impl Default for cpu::Cpu { [INFO] [stderr] 34 | fn default() -> Self { [INFO] [stderr] 35 | Self::new() [INFO] [stderr] 36 | } [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `FONT_SET` [INFO] [stderr] --> src/cpu.rs:59:18 [INFO] [stderr] | [INFO] [stderr] 59 | for i in 0..80 { [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] 59 | for (i, ) in FONT_SET.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: it looks like you're manually copying between slices [INFO] [stderr] --> src/cpu.rs:59:18 [INFO] [stderr] | [INFO] [stderr] 59 | for i in 0..80 { [INFO] [stderr] | ^^^^^ help: try replacing the loop by: `self.memory[..80].clone_from_slice(&FONT_SET[..80])` [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: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:102:17 [INFO] [stderr] | [INFO] [stderr] 102 | self.sp = self.sp - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp -= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:110:17 [INFO] [stderr] | [INFO] [stderr] 110 | self.sp = self.sp + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.sp += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:126:33 [INFO] [stderr] | [INFO] [stderr] 126 | (0x8, _, _, 0x1) => self.v[x] = self.v[x] | self.v[y], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] |= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:128:33 [INFO] [stderr] | [INFO] [stderr] 128 | (0x8, _, _, 0x2) => self.v[x] = self.v[x] & self.v[y], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] &= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:130:33 [INFO] [stderr] | [INFO] [stderr] 130 | (0x8, _, _, 0x3) => self.v[x] = self.v[x] ^ self.v[y], [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.v[x] ^= self.v[y]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:133:27 [INFO] [stderr] | [INFO] [stderr] 133 | let res = self.v[x] as u16 + self.v[y] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:133:46 [INFO] [stderr] | [INFO] [stderr] 133 | let res = self.v[x] as u16 + self.v[y] as u16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[y])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:164:47 [INFO] [stderr] | [INFO] [stderr] 164 | (0xB, _, _, _) => self.pc = nnn + self.v[0] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[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/cpu.rs:170:63 [INFO] [stderr] | [INFO] [stderr] 170 | &self.memory[self.i as usize .. (self.i + n as u16) as usize]); [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: equality checks against true are unnecessary [INFO] [stderr] --> src/cpu.rs:183:24 [INFO] [stderr] | [INFO] [stderr] 183 | if *key == true { [INFO] [stderr] | ^^^^^^^^^^^^ help: try simplifying it as shown: `*key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/cpu.rs:192:35 [INFO] [stderr] | [INFO] [stderr] 192 | (0xF, _, 0x1, 0xE) => self.i = self.i + self.v[x] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.i += self.v[x] as u16` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:192:53 [INFO] [stderr] | [INFO] [stderr] 192 | (0xF, _, 0x1, 0xE) => self.i = self.i + self.v[x] as u16, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `u16::from(self.v[x])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u16 may become silently lossy if types change [INFO] [stderr] --> src/cpu.rs:194:44 [INFO] [stderr] | [INFO] [stderr] 194 | (0xF, _, 0x2, 0x9) => self.i = vx as u16 * 5, [INFO] [stderr] | ^^^^^^^^^ help: try: `u16::from(vx)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/cpu.rs:203:50 [INFO] [stderr] | [INFO] [stderr] 203 | .copy_from_slice(&self.v[0..(x as usize + 1)]), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=x as usize` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/cpu.rs:205:43 [INFO] [stderr] | [INFO] [stderr] 205 | (0xF, _, 0x6, 0x5) => self.v[0..(x as usize + 1)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: use: `0..=x as usize` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `display::Display` [INFO] [stderr] --> src/display.rs:9:3 [INFO] [stderr] | [INFO] [stderr] 9 | / pub fn new() -> Display { [INFO] [stderr] 10 | | Display { [INFO] [stderr] 11 | | memory: [0; 2048] [INFO] [stderr] 12 | | } [INFO] [stderr] 13 | | } [INFO] [stderr] | |___^ [INFO] [stderr] | [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] 8 | impl Default for display::Display { [INFO] [stderr] 9 | fn default() -> Self { [INFO] [stderr] 10 | Self::new() [INFO] [stderr] 11 | } [INFO] [stderr] 12 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is used to index `sprite` [INFO] [stderr] --> src/display.rs:34:14 [INFO] [stderr] | [INFO] [stderr] 34 | for j in 0..rows { [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] 34 | for (j, ) in sprite.iter().enumerate().take(rows) { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/rand.rs:20:33 [INFO] [stderr] | [INFO] [stderr] 20 | let window = &mut q[i - 3..i + 1]; [INFO] [stderr] | ^^^^^^^^^^^^ help: use: `i - 3..=i` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/rand.rs:36:21 [INFO] [stderr] | [INFO] [stderr] 36 | let t = A * self.q[self.i] as u64 + self.c as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(self.q[self.i])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/rand.rs:36:45 [INFO] [stderr] | [INFO] [stderr] 36 | let t = A * self.q[self.i] as u64 + self.c as u64; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/rand.rs:39:26 [INFO] [stderr] | [INFO] [stderr] 39 | let mut x = (t + self.c as u64) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^ help: try: `u64::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: you should consider deriving a `Default` implementation for `keypad::Keypad` [INFO] [stderr] --> src/keypad.rs:6:3 [INFO] [stderr] | [INFO] [stderr] 6 | / pub fn new() -> Keypad { [INFO] [stderr] 7 | | Keypad { [INFO] [stderr] 8 | | keys: [false; 16] [INFO] [stderr] 9 | | } [INFO] [stderr] 10 | | } [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] 1 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.37s [INFO] running `"docker" "inspect" "0ed44076556df8a09cb7bddf5c4d0bcf2a867da8927fd032454e27031c24e9a7"` [INFO] running `"docker" "rm" "-f" "0ed44076556df8a09cb7bddf5c4d0bcf2a867da8927fd032454e27031c24e9a7"` [INFO] [stdout] 0ed44076556df8a09cb7bddf5c4d0bcf2a867da8927fd032454e27031c24e9a7