[INFO] cloning repository https://github.com/BenJacobson/Chip8-Rust [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/BenJacobson/Chip8-Rust" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBenJacobson%2FChip8-Rust", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBenJacobson%2FChip8-Rust'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] faa0ec3fb12a5964d18adc1479253b004166f251 [INFO] linting BenJacobson/Chip8-Rust against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FBenJacobson%2FChip8-Rust" "/workspace/builds/worker-3-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/BenJacobson/Chip8-Rust [INFO] finished tweaking git repo https://github.com/BenJacobson/Chip8-Rust [INFO] tweaked toml for git repo https://github.com/BenJacobson/Chip8-Rust written to /workspace/builds/worker-3-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/BenJacobson/Chip8-Rust on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/BenJacobson/Chip8-Rust already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded macos-accessibility-client v0.0.1 [INFO] [stderr] Downloaded readkey v0.2.2 [INFO] [stderr] Downloaded readmouse v0.2.1 [INFO] [stderr] Downloaded device_query v4.0.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 699527110feb26ba5ff5776c3745b13913bac90a1020487da673e3230f6f8a30 [INFO] running `Command { std: "docker" "start" "-a" "699527110feb26ba5ff5776c3745b13913bac90a1020487da673e3230f6f8a30", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "699527110feb26ba5ff5776c3745b13913bac90a1020487da673e3230f6f8a30", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "699527110feb26ba5ff5776c3745b13913bac90a1020487da673e3230f6f8a30", kill_on_drop: false }` [INFO] [stdout] 699527110feb26ba5ff5776c3745b13913bac90a1020487da673e3230f6f8a30 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 22fd76fb2cb1e312759f219b805b84dd55209abd9278dd81bf0835b0b1bca136 [INFO] running `Command { std: "docker" "start" "-a" "22fd76fb2cb1e312759f219b805b84dd55209abd9278dd81bf0835b0b1bca136", kill_on_drop: false }` [INFO] [stderr] Checking chip8-instructions v0.1.0 (/opt/rustwide/workdir/chip8-instructions) [INFO] [stderr] Compiling wasm-bindgen-shared v0.2.106 [INFO] [stderr] Compiling bumpalo v3.19.1 [INFO] [stderr] Checking once_cell v1.21.3 [INFO] [stderr] Compiling x11 v2.21.0 [INFO] [stderr] Compiling device_query v4.0.1 [INFO] [stderr] Compiling syn v2.0.111 [INFO] [stderr] Compiling wasm-bindgen v0.2.106 [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> chip8-instructions/src/lib.rs:144:58 [INFO] [stdout] | [INFO] [stdout] 144 | Instruction::LoadRegToReg { x, y } => (0x80 | x, (y << 4) | 0x0), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider reducing it to: `((y << 4))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-instructions/src/lib.rs:174:5 [INFO] [stdout] | [INFO] [stdout] 174 | return (byte >> 4, byte & 0xF); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 174 - return (byte >> 4, byte & 0xF); [INFO] [stdout] 174 + (byte >> 4, byte & 0xF) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-instructions/src/lib.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | return ((byte1 & 0xF) as u16) << 8 | (byte2 as u16); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 179 - return ((byte1 & 0xF) as u16) << 8 | (byte2 as u16); [INFO] [stdout] 179 + ((byte1 & 0xF) as u16) << 8 | (byte2 as u16) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking chip8 v0.1.0 (/opt/rustwide/workdir/chip8) [INFO] [stderr] Checking chip8-assembler v0.1.0 (/opt/rustwide/workdir/chip8-assembler) [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> chip8/src/processor.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | use fastrand; [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> chip8/src/display.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | assert_eq!((width * height + 7) / 8, data.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(width * height).div_ceil(8)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/display.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | return self.data[byte] & (1 << bit) != 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 25 - return self.data[byte] & (1 << bit) != 0; [INFO] [stdout] 25 + self.data[byte] & (1 << bit) != 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `NullLogSource` [INFO] [stdout] --> chip8/src/logger/null_log_source.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / pub fn new() -> Self { [INFO] [stdout] 8 | | NullLogSource {} [INFO] [stdout] 9 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 6 + impl Default for NullLogSource { [INFO] [stdout] 7 + fn default() -> Self { [INFO] [stdout] 8 + Self::new() [INFO] [stdout] 9 + } [INFO] [stdout] 10 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/processor.rs:125:9 [INFO] [stdout] | [INFO] [stdout] 125 | return self.exit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 125 - return self.exit; [INFO] [stdout] 125 + self.exit [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> chip8/src/processor.rs:132:34 [INFO] [stdout] | [INFO] [stdout] 132 | pub fn tick_timers(&mut self) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/processor.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | return self.registers.sound_timer > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 142 - return self.registers.sound_timer > 0; [INFO] [stdout] 142 + self.registers.sound_timer > 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> chip8/src/processor.rs:145:43 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn set_keys(&mut self, keys: Keys) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> chip8/src/processor.rs:162:64 [INFO] [stdout] | [INFO] [stdout] 162 | fn execute_instruction(&mut self, instruction: Instruction) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this import is redundant [INFO] [stdout] --> chip8/src/processor.rs:6:1 [INFO] [stdout] | [INFO] [stdout] 6 | use fastrand; [INFO] [stdout] | ^^^^^^^^^^^^^ help: remove it entirely [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_component_path_imports [INFO] [stdout] = note: `#[warn(clippy::single_component_path_imports)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> chip8/src/processor.rs:225:58 [INFO] [stdout] | [INFO] [stdout] 225 | self.registers.general[0xF] = if total > std::u8::MAX as u16 { 1 } else { 0 }; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 225 - self.registers.general[0xF] = if total > std::u8::MAX as u16 { 1 } else { 0 }; [INFO] [stdout] 225 + self.registers.general[0xF] = if total > u8::MAX as u16 { 1 } else { 0 }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/processor.rs:349:5 [INFO] [stdout] | [INFO] [stdout] 349 | return (byte_index, bit_index); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 349 - return (byte_index, bit_index); [INFO] [stdout] 349 + (byte_index, bit_index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/assembler_error.rs:60:16 [INFO] [stdout] | [INFO] [stdout] 60 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - words: &Vec<&str>, [INFO] [stdout] 60 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> chip8-assembler/src/assembler_error.rs:69:13 [INFO] [stdout] | [INFO] [stdout] 69 | / let Some(i) = line[start..].find(word) else { [INFO] [stdout] 70 | | return None; [INFO] [stdout] 71 | | }; [INFO] [stdout] | |______________^ help: replace it with: `let i = line[start..].find(word)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a suffix manually [INFO] [stdout] --> chip8-assembler/src/parse.rs:119:17 [INFO] [stdout] | [INFO] [stdout] 119 | &word[..word.len() - 1] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the suffix was tested here [INFO] [stdout] --> chip8-assembler/src/parse.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | if word.ends_with(',') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_suffix` method [INFO] [stdout] | [INFO] [stdout] 118 ~ if let Some() = word.strip_suffix(',') { [INFO] [stdout] 119 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 129 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 129 - words: &Vec<&str>, [INFO] [stdout] 129 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> chip8-assembler/src/parse.rs:144:5 [INFO] [stdout] | [INFO] [stdout] 144 | / if words.len() == 3 { [INFO] [stdout] 145 | | if words[1].to_uppercase() == "V0" { [INFO] [stdout] 146 | | let addr = get_addr(words[2])?; [INFO] [stdout] 147 | | return Ok(Instruction::JumpOffset { addr }); [INFO] [stdout] 148 | | } [INFO] [stdout] 149 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 144 ~ if words.len() == 3 [INFO] [stdout] 145 ~ && words[1].to_uppercase() == "V0" { [INFO] [stdout] 146 | let addr = get_addr(words[2])?; [INFO] [stdout] 147 | return Ok(Instruction::JumpOffset { addr }); [INFO] [stdout] 148 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:159:12 [INFO] [stdout] | [INFO] [stdout] 159 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 159 - words: &Vec<&str>, [INFO] [stdout] 159 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:174:30 [INFO] [stdout] | [INFO] [stdout] 174 | fn get_se(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 174 - fn get_se(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 174 + fn get_se(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:191:31 [INFO] [stdout] | [INFO] [stdout] 191 | fn get_sne(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 191 - fn get_sne(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 191 + fn get_sne(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:210:12 [INFO] [stdout] | [INFO] [stdout] 210 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 210 - words: &Vec<&str>, [INFO] [stdout] 210 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:285:31 [INFO] [stdout] | [INFO] [stdout] 285 | fn get_add(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 285 - fn get_add(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 285 + fn get_add(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:308:30 [INFO] [stdout] | [INFO] [stdout] 308 | fn get_or(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 308 - fn get_or(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 308 + fn get_or(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:320:31 [INFO] [stdout] | [INFO] [stdout] 320 | fn get_and(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 320 - fn get_and(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 320 + fn get_and(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:332:31 [INFO] [stdout] | [INFO] [stdout] 332 | fn get_xor(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 332 - fn get_xor(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 332 + fn get_xor(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:344:31 [INFO] [stdout] | [INFO] [stdout] 344 | fn get_sub(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 344 - fn get_sub(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 344 + fn get_sub(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:356:31 [INFO] [stdout] | [INFO] [stdout] 356 | fn get_shr(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 356 - fn get_shr(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 356 + fn get_shr(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:367:32 [INFO] [stdout] | [INFO] [stdout] 367 | fn get_subn(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 367 - fn get_subn(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 367 + fn get_subn(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:379:31 [INFO] [stdout] | [INFO] [stdout] 379 | fn get_shl(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 379 - fn get_shl(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 379 + fn get_shl(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:390:31 [INFO] [stdout] | [INFO] [stdout] 390 | fn get_rnd(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 390 - fn get_rnd(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 390 + fn get_rnd(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:402:31 [INFO] [stdout] | [INFO] [stdout] 402 | fn get_drw(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 402 - fn get_drw(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 402 + fn get_drw(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:415:31 [INFO] [stdout] | [INFO] [stdout] 415 | fn get_skp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 415 - fn get_skp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 415 + fn get_skp(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:426:32 [INFO] [stdout] | [INFO] [stdout] 426 | fn get_sknp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 426 - fn get_sknp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 426 + fn get_sknp(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> chip8-assembler/src/parse.rs:447:48 [INFO] [stdout] | [INFO] [stdout] 447 | return Err(AssemblerError::new_message(format!( [INFO] [stdout] | ________________________________________________^ [INFO] [stdout] 448 | | "Failed to parse empty number string." [INFO] [stdout] 449 | | ))); [INFO] [stdout] | |_________^ help: consider using `.to_string()`: `"Failed to parse empty number string.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> chip8-assembler/src/parse.rs:478:48 [INFO] [stdout] | [INFO] [stdout] 478 | return Err(AssemblerError::new_message(format!( [INFO] [stdout] | ________________________________________________^ [INFO] [stdout] 479 | | "Expecting a digit after 'V'" [INFO] [stdout] 480 | | ))); [INFO] [stdout] | |_________^ help: consider using `.to_string()`: `"Expecting a digit after 'V'".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> chip8-assembler/src/parse.rs:487:12 [INFO] [stdout] | [INFO] [stdout] 487 | Ok(n as u8) [INFO] [stdout] | ^^^^^^^ help: try: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> chip8-assembler/src/lib.rs:83:10 [INFO] [stdout] | [INFO] [stdout] 83 | .map(|statement| statement.bytes()) [INFO] [stdout] | __________^ [INFO] [stdout] 84 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|statement| statement.bytes())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking chip8-assembler-terminal v0.1.0 (/opt/rustwide/workdir/chip8-assembler-terminal) [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | if !fs::metadata(&output_filepath).is_err() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::metadata(&output_filepath).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - println!("Error writing to output file: {}", e); [INFO] [stdout] 49 - return; [INFO] [stdout] 48 + println!("Error writing to output file: {}", e); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | Some(arg[3..].to_string()) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | if arg.starts_with("-o=") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 17 ~ if let Some() = arg.strip_prefix("-o=") { [INFO] [stdout] 18 ~ Some(.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/assembler_error.rs:60:16 [INFO] [stdout] | [INFO] [stdout] 60 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 60 - words: &Vec<&str>, [INFO] [stdout] 60 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `let...else` may be rewritten with the `?` operator [INFO] [stdout] --> chip8-assembler/src/assembler_error.rs:69:13 [INFO] [stdout] | [INFO] [stdout] 69 | / let Some(i) = line[start..].find(word) else { [INFO] [stdout] 70 | | return None; [INFO] [stdout] 71 | | }; [INFO] [stdout] | |______________^ help: replace it with: `let i = line[start..].find(word)?;` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a suffix manually [INFO] [stdout] --> chip8-assembler/src/parse.rs:119:17 [INFO] [stdout] | [INFO] [stdout] 119 | &word[..word.len() - 1] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the suffix was tested here [INFO] [stdout] --> chip8-assembler/src/parse.rs:118:13 [INFO] [stdout] | [INFO] [stdout] 118 | if word.ends_with(',') { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_suffix` method [INFO] [stdout] | [INFO] [stdout] 118 ~ if let Some() = word.strip_suffix(',') { [INFO] [stdout] 119 ~ [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 129 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 129 - words: &Vec<&str>, [INFO] [stdout] 129 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> chip8-assembler/src/parse.rs:144:5 [INFO] [stdout] | [INFO] [stdout] 144 | / if words.len() == 3 { [INFO] [stdout] 145 | | if words[1].to_uppercase() == "V0" { [INFO] [stdout] 146 | | let addr = get_addr(words[2])?; [INFO] [stdout] 147 | | return Ok(Instruction::JumpOffset { addr }); [INFO] [stdout] 148 | | } [INFO] [stdout] 149 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 144 ~ if words.len() == 3 [INFO] [stdout] 145 ~ && words[1].to_uppercase() == "V0" { [INFO] [stdout] 146 | let addr = get_addr(words[2])?; [INFO] [stdout] 147 | return Ok(Instruction::JumpOffset { addr }); [INFO] [stdout] 148 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:159:12 [INFO] [stdout] | [INFO] [stdout] 159 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 159 - words: &Vec<&str>, [INFO] [stdout] 159 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:174:30 [INFO] [stdout] | [INFO] [stdout] 174 | fn get_se(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 174 - fn get_se(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 174 + fn get_se(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:191:31 [INFO] [stdout] | [INFO] [stdout] 191 | fn get_sne(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 191 - fn get_sne(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 191 + fn get_sne(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:210:12 [INFO] [stdout] | [INFO] [stdout] 210 | words: &Vec<&str>, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 210 - words: &Vec<&str>, [INFO] [stdout] 210 + words: &[&str], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:285:31 [INFO] [stdout] | [INFO] [stdout] 285 | fn get_add(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 285 - fn get_add(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 285 + fn get_add(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:308:30 [INFO] [stdout] | [INFO] [stdout] 308 | fn get_or(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 308 - fn get_or(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 308 + fn get_or(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:320:31 [INFO] [stdout] | [INFO] [stdout] 320 | fn get_and(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 320 - fn get_and(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 320 + fn get_and(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:332:31 [INFO] [stdout] | [INFO] [stdout] 332 | fn get_xor(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 332 - fn get_xor(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 332 + fn get_xor(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:344:31 [INFO] [stdout] | [INFO] [stdout] 344 | fn get_sub(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 344 - fn get_sub(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 344 + fn get_sub(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:356:31 [INFO] [stdout] | [INFO] [stdout] 356 | fn get_shr(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 356 - fn get_shr(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 356 + fn get_shr(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:367:32 [INFO] [stdout] | [INFO] [stdout] 367 | fn get_subn(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 367 - fn get_subn(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 367 + fn get_subn(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:379:31 [INFO] [stdout] | [INFO] [stdout] 379 | fn get_shl(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 379 - fn get_shl(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 379 + fn get_shl(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:390:31 [INFO] [stdout] | [INFO] [stdout] 390 | fn get_rnd(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 390 - fn get_rnd(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 390 + fn get_rnd(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:402:31 [INFO] [stdout] | [INFO] [stdout] 402 | fn get_drw(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 402 - fn get_drw(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 402 + fn get_drw(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:415:31 [INFO] [stdout] | [INFO] [stdout] 415 | fn get_skp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 415 - fn get_skp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 415 + fn get_skp(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> chip8-assembler/src/parse.rs:426:32 [INFO] [stdout] | [INFO] [stdout] 426 | fn get_sknp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 426 - fn get_sknp(line: &str, words: &Vec<&str>, line_num: u16) -> Result { [INFO] [stdout] 426 + fn get_sknp(line: &str, words: &[&str], line_num: u16) -> Result { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> chip8-assembler/src/parse.rs:447:48 [INFO] [stdout] | [INFO] [stdout] 447 | return Err(AssemblerError::new_message(format!( [INFO] [stdout] | ________________________________________________^ [INFO] [stdout] 448 | | "Failed to parse empty number string." [INFO] [stdout] 449 | | ))); [INFO] [stdout] | |_________^ help: consider using `.to_string()`: `"Failed to parse empty number string.".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] = note: `#[warn(clippy::useless_format)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `format!` [INFO] [stdout] --> chip8-assembler/src/parse.rs:478:48 [INFO] [stdout] | [INFO] [stdout] 478 | return Err(AssemblerError::new_message(format!( [INFO] [stdout] | ________________________________________________^ [INFO] [stdout] 479 | | "Expecting a digit after 'V'" [INFO] [stdout] 480 | | ))); [INFO] [stdout] | |_________^ help: consider using `.to_string()`: `"Expecting a digit after 'V'".to_string()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u8` -> `u8`) [INFO] [stdout] --> chip8-assembler/src/parse.rs:487:12 [INFO] [stdout] | [INFO] [stdout] 487 | Ok(n as u8) [INFO] [stdout] | ^^^^^^^ help: try: `n` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `map(..).flatten()` on `Iterator` [INFO] [stdout] --> chip8-assembler/src/lib.rs:83:10 [INFO] [stdout] | [INFO] [stdout] 83 | .map(|statement| statement.bytes()) [INFO] [stdout] | __________^ [INFO] [stdout] 84 | | .flatten() [INFO] [stdout] | |__________________^ help: try replacing `map` with `flat_map` and remove the `.flatten()`: `flat_map(|statement| statement.bytes())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_flatten [INFO] [stdout] = note: `#[warn(clippy::map_flatten)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this operation has no effect [INFO] [stdout] --> chip8-instructions/src/lib.rs:144:58 [INFO] [stdout] | [INFO] [stdout] 144 | Instruction::LoadRegToReg { x, y } => (0x80 | x, (y << 4) | 0x0), [INFO] [stdout] | ^^^^^^^^^^^^^^ help: consider reducing it to: `((y << 4))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stdout] = note: `#[warn(clippy::identity_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-instructions/src/lib.rs:174:5 [INFO] [stdout] | [INFO] [stdout] 174 | return (byte >> 4, byte & 0xF); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 174 - return (byte >> 4, byte & 0xF); [INFO] [stdout] 174 + (byte >> 4, byte & 0xF) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-instructions/src/lib.rs:179:5 [INFO] [stdout] | [INFO] [stdout] 179 | return ((byte1 & 0xF) as u16) << 8 | (byte2 as u16); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 179 - return ((byte1 & 0xF) as u16) << 8 | (byte2 as u16); [INFO] [stdout] 179 + ((byte1 & 0xF) as u16) << 8 | (byte2 as u16) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:24:8 [INFO] [stdout] | [INFO] [stdout] 24 | if !fs::metadata(&output_filepath).is_err() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `fs::metadata(&output_filepath).is_ok()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:49:9 [INFO] [stdout] | [INFO] [stdout] 49 | return; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 48 - println!("Error writing to output file: {}", e); [INFO] [stdout] 49 - return; [INFO] [stdout] 48 + println!("Error writing to output file: {}", e); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: stripping a prefix manually [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:18:22 [INFO] [stdout] | [INFO] [stdout] 18 | Some(arg[3..].to_string()) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: the prefix was tested here [INFO] [stdout] --> chip8-assembler-terminal/src/main.rs:17:13 [INFO] [stdout] | [INFO] [stdout] 17 | if arg.starts_with("-o=") { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_strip [INFO] [stdout] = note: `#[warn(clippy::manual_strip)]` on by default [INFO] [stdout] help: try using the `strip_prefix` method [INFO] [stdout] | [INFO] [stdout] 17 ~ if let Some() = arg.strip_prefix("-o=") { [INFO] [stdout] 18 ~ Some(.to_string()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: manually reimplementing `div_ceil` [INFO] [stdout] --> chip8/src/display.rs:9:20 [INFO] [stdout] | [INFO] [stdout] 9 | assert_eq!((width * height + 7) / 8, data.len()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using `.div_ceil()`: `(width * height).div_ceil(8)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_div_ceil [INFO] [stdout] = note: `#[warn(clippy::manual_div_ceil)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/display.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | return self.data[byte] & (1 << bit) != 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 25 - return self.data[byte] & (1 << bit) != 0; [INFO] [stdout] 25 + self.data[byte] & (1 << bit) != 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `NullLogSource` [INFO] [stdout] --> chip8/src/logger/null_log_source.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | / pub fn new() -> Self { [INFO] [stdout] 8 | | NullLogSource {} [INFO] [stdout] 9 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 6 + impl Default for NullLogSource { [INFO] [stdout] 7 + fn default() -> Self { [INFO] [stdout] 8 + Self::new() [INFO] [stdout] 9 + } [INFO] [stdout] 10 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/processor.rs:125:9 [INFO] [stdout] | [INFO] [stdout] 125 | return self.exit; [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 125 - return self.exit; [INFO] [stdout] 125 + self.exit [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> chip8/src/processor.rs:132:34 [INFO] [stdout] | [INFO] [stdout] 132 | pub fn tick_timers(&mut self) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] = note: `#[warn(clippy::unused_unit)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/processor.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | return self.registers.sound_timer > 0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 142 - return self.registers.sound_timer > 0; [INFO] [stdout] 142 + self.registers.sound_timer > 0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> chip8/src/processor.rs:145:43 [INFO] [stdout] | [INFO] [stdout] 145 | pub fn set_keys(&mut self, keys: Keys) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded unit return type [INFO] [stdout] --> chip8/src/processor.rs:162:64 [INFO] [stdout] | [INFO] [stdout] 162 | fn execute_instruction(&mut self, instruction: Instruction) -> () { [INFO] [stdout] | ^^^^^^ help: remove the `-> ()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of a legacy numeric constant [INFO] [stdout] --> chip8/src/processor.rs:225:58 [INFO] [stdout] | [INFO] [stdout] 225 | self.registers.general[0xF] = if total > std::u8::MAX as u16 { 1 } else { 0 }; [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#legacy_numeric_constants [INFO] [stdout] = note: `#[warn(clippy::legacy_numeric_constants)]` on by default [INFO] [stdout] help: use the associated constant instead [INFO] [stdout] | [INFO] [stdout] 225 - self.registers.general[0xF] = if total > std::u8::MAX as u16 { 1 } else { 0 }; [INFO] [stdout] 225 + self.registers.general[0xF] = if total > u8::MAX as u16 { 1 } else { 0 }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8/src/processor.rs:349:5 [INFO] [stdout] | [INFO] [stdout] 349 | return (byte_index, bit_index); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 349 - return (byte_index, bit_index); [INFO] [stdout] 349 + (byte_index, bit_index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `data` [INFO] [stdout] --> chip8/src/test_display.rs:7:14 [INFO] [stdout] | [INFO] [stdout] 7 | for i in 0..8 { [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] = note: `#[warn(clippy::needless_range_loop)]` on by default [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 7 - for i in 0..8 { [INFO] [stdout] 7 + for (i, ) in data.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `expected_display` [INFO] [stdout] --> chip8/src/test_execute_digits.rs:152:14 [INFO] [stdout] | [INFO] [stdout] 152 | for i in 0..expected_display.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 152 - for i in 0..expected_display.len() { [INFO] [stdout] 152 + for (i, ) in expected_display.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> chip8/src/test_execute_flags.rs:45:38 [INFO] [stdout] | [INFO] [stdout] 45 | let program = fs::read(filepath).expect(format!("Failed to open file: {}", filepath).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Failed to open file: {}", filepath))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `expected_display` [INFO] [stdout] --> chip8/src/test_execute_flags.rs:57:14 [INFO] [stdout] | [INFO] [stdout] 57 | for i in 0..expected_display.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 57 - for i in 0..expected_display.len() { [INFO] [stdout] 57 + for (i, ) in expected_display.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> chip8/src/test_execute_key_press.rs:44:38 [INFO] [stdout] | [INFO] [stdout] 44 | let program = fs::read(filepath).expect(format!("Failed to open file: {}", filepath).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Failed to open file: {}", filepath))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `expected_display` [INFO] [stdout] --> chip8/src/test_execute_key_press.rs:59:14 [INFO] [stdout] | [INFO] [stdout] 59 | for i in 0..expected_display.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 59 - for i in 0..expected_display.len() { [INFO] [stdout] 59 + for (i, ) in expected_display.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> chip8/src/test_execute_key_press.rs:107:38 [INFO] [stdout] | [INFO] [stdout] 107 | let program = fs::read(filepath).expect(format!("Failed to open file: {}", filepath).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Failed to open file: {}", filepath))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the loop variable `i` is used to index `expected_display` [INFO] [stdout] --> chip8/src/test_execute_key_press.rs:122:14 [INFO] [stdout] | [INFO] [stdout] 122 | for i in 0..expected_display.len() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stdout] help: consider using an iterator and enumerate() [INFO] [stdout] | [INFO] [stdout] 122 - for i in 0..expected_display.len() { [INFO] [stdout] 122 + for (i, ) in expected_display.iter().enumerate() { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking chip8-terminal v0.1.0 (/opt/rustwide/workdir/chip8-terminal) [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-terminal/src/terminal_player.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | / return KEY_MAP [INFO] [stdout] 92 | | .iter() [INFO] [stdout] 93 | | .filter(|(keycode, _)| keys.contains(keycode)) [INFO] [stdout] 94 | | .map(|(_, key)| *key as u16) [INFO] [stdout] 95 | | .reduce(|acc, e| acc | e) [INFO] [stdout] 96 | | .unwrap_or(0); [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 91 ~ KEY_MAP [INFO] [stdout] 92 + .iter() [INFO] [stdout] 93 + .filter(|(keycode, _)| keys.contains(keycode)) [INFO] [stdout] 94 + .map(|(_, key)| *key as u16) [INFO] [stdout] 95 + .reduce(|acc, e| acc | e) [INFO] [stdout] 96 ~ .unwrap_or(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> chip8-terminal/src/main.rs:22:38 [INFO] [stdout] | [INFO] [stdout] 22 | let program = fs::read(filepath).expect(format!("Failed to open file: {}", filepath).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Failed to open file: {}", filepath))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-terminal/src/terminal_player.rs:91:9 [INFO] [stdout] | [INFO] [stdout] 91 | / return KEY_MAP [INFO] [stdout] 92 | | .iter() [INFO] [stdout] 93 | | .filter(|(keycode, _)| keys.contains(keycode)) [INFO] [stdout] 94 | | .map(|(_, key)| *key as u16) [INFO] [stdout] 95 | | .reduce(|acc, e| acc | e) [INFO] [stdout] 96 | | .unwrap_or(0); [INFO] [stdout] | |_________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 91 ~ KEY_MAP [INFO] [stdout] 92 + .iter() [INFO] [stdout] 93 + .filter(|(keycode, _)| keys.contains(keycode)) [INFO] [stdout] 94 + .map(|(_, key)| *key as u16) [INFO] [stdout] 95 + .reduce(|acc, e| acc | e) [INFO] [stdout] 96 ~ .unwrap_or(0) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function call inside of `expect` [INFO] [stdout] --> chip8-terminal/src/main.rs:22:38 [INFO] [stdout] | [INFO] [stdout] 22 | let program = fs::read(filepath).expect(format!("Failed to open file: {}", filepath).as_str()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `unwrap_or_else(|_| panic!("Failed to open file: {}", filepath))` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stdout] = note: `#[warn(clippy::expect_fun_call)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling wasm-bindgen-macro-support v0.2.106 [INFO] [stderr] Compiling wasm-bindgen-macro v0.2.106 [INFO] [stderr] Checking chip8-wasm v0.1.0 (/opt/rustwide/workdir/chip8-wasm) [INFO] [stdout] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stdout] --> chip8-wasm/src/lib.rs:45:19 [INFO] [stdout] | [INFO] [stdout] 45 | unsafe { *self.data.offset(byte as isize) & (1 << bit) != 0 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stdout] = note: `#[warn(clippy::ptr_offset_with_cast)]` on by default [INFO] [stdout] help: use `add` instead [INFO] [stdout] | [INFO] [stdout] 45 - unsafe { *self.data.offset(byte as isize) & (1 << bit) != 0 } [INFO] [stdout] 45 + unsafe { *self.data.add(byte) & (1 << bit) != 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-wasm/src/lib.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | return (byte_index, bit_index); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 - return (byte_index, bit_index); [INFO] [stdout] 53 + (byte_index, bit_index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `WasmChip8` [INFO] [stdout] --> chip8-wasm/src/lib.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | / pub fn new() -> Self { [INFO] [stdout] 64 | | let logger = Logger::new(Box::new(WasmLogSource::new())); [INFO] [stdout] 65 | | let chip8 = Chip8::new(logger); [INFO] [stdout] 66 | | WasmChip8 { chip8 } [INFO] [stdout] 67 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 62 + impl Default for WasmChip8 { [INFO] [stdout] 63 + fn default() -> Self { [INFO] [stdout] 64 + Self::new() [INFO] [stdout] 65 + } [INFO] [stdout] 66 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: use of `offset` with a `usize` casted to an `isize` [INFO] [stdout] --> chip8-wasm/src/lib.rs:45:19 [INFO] [stdout] | [INFO] [stdout] 45 | unsafe { *self.data.offset(byte as isize) & (1 << bit) != 0 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_offset_with_cast [INFO] [stdout] = note: `#[warn(clippy::ptr_offset_with_cast)]` on by default [INFO] [stdout] help: use `add` instead [INFO] [stdout] | [INFO] [stdout] 45 - unsafe { *self.data.offset(byte as isize) & (1 << bit) != 0 } [INFO] [stdout] 45 + unsafe { *self.data.add(byte) & (1 << bit) != 0 } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> chip8-wasm/src/lib.rs:53:5 [INFO] [stdout] | [INFO] [stdout] 53 | return (byte_index, bit_index); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 53 - return (byte_index, bit_index); [INFO] [stdout] 53 + (byte_index, bit_index) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `WasmChip8` [INFO] [stdout] --> chip8-wasm/src/lib.rs:63:5 [INFO] [stdout] | [INFO] [stdout] 63 | / pub fn new() -> Self { [INFO] [stdout] 64 | | let logger = Logger::new(Box::new(WasmLogSource::new())); [INFO] [stdout] 65 | | let chip8 = Chip8::new(logger); [INFO] [stdout] 66 | | WasmChip8 { chip8 } [INFO] [stdout] 67 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 62 + impl Default for WasmChip8 { [INFO] [stdout] 63 + fn default() -> Self { [INFO] [stdout] 64 + Self::new() [INFO] [stdout] 65 + } [INFO] [stdout] 66 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 8.83s [INFO] running `Command { std: "docker" "inspect" "22fd76fb2cb1e312759f219b805b84dd55209abd9278dd81bf0835b0b1bca136", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "22fd76fb2cb1e312759f219b805b84dd55209abd9278dd81bf0835b0b1bca136", kill_on_drop: false }` [INFO] [stdout] 22fd76fb2cb1e312759f219b805b84dd55209abd9278dd81bf0835b0b1bca136