[INFO] cloning repository https://github.com/HenryCROSS/iridium [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/HenryCROSS/iridium" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHenryCROSS%2Firidium", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHenryCROSS%2Firidium'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 748f4257d375327e58e3dd9a4b3161a54318c13d [INFO] linting HenryCROSS/iridium against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FHenryCROSS%2Firidium" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/HenryCROSS/iridium [INFO] finished tweaking git repo https://github.com/HenryCROSS/iridium [INFO] tweaked toml for git repo https://github.com/HenryCROSS/iridium written to /workspace/builds/worker-1-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/HenryCROSS/iridium 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/HenryCROSS/iridium 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] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 3ffd5b4124fd5547de2a6cd03fc4c601503dcc2a047c9de1e1e31f261c76b04e [INFO] running `Command { std: "docker" "start" "-a" "3ffd5b4124fd5547de2a6cd03fc4c601503dcc2a047c9de1e1e31f261c76b04e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3ffd5b4124fd5547de2a6cd03fc4c601503dcc2a047c9de1e1e31f261c76b04e", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3ffd5b4124fd5547de2a6cd03fc4c601503dcc2a047c9de1e1e31f261c76b04e", kill_on_drop: false }` [INFO] [stdout] 3ffd5b4124fd5547de2a6cd03fc4c601503dcc2a047c9de1e1e31f261c76b04e [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-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] 640759a7e79deb5e9a78b873ff10dc0feb1146367fdf6e895094484e1b5dfc1a [INFO] running `Command { std: "docker" "start" "-a" "640759a7e79deb5e9a78b873ff10dc0feb1146367fdf6e895094484e1b5dfc1a", kill_on_drop: false }` [INFO] [stderr] Checking regex-syntax v0.8.3 [INFO] [stderr] Checking log v0.4.21 [INFO] [stderr] Checking anstream v0.6.13 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking regex-automata v0.4.6 [INFO] [stderr] Checking regex v1.10.4 [INFO] [stderr] Checking env_filter v0.1.0 [INFO] [stderr] Checking env_logger v0.11.3 [INFO] [stderr] Checking iridium v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `result` [INFO] [stdout] --> src/repl/mod.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::{self, result}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/instruction.rs:34:23 [INFO] [stdout] | [INFO] [stdout] 34 | Instruction { opcode: opcode } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/directive_parsers.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `integer_operand` [INFO] [stdout] --> src/assembler/directive_parsers.rs:2:40 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/directive_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::character::streaming::space0` [INFO] [stdout] --> src/assembler/directive_parsers.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use nom::character::streaming::space0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `character::complete::digit1`, `eof`, `map_res`, and `value` [INFO] [stdout] --> src/assembler/directive_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/assembler/directive_parsers.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | label: label, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `bytes::complete::tag`, `character::complete::digit1`, `delimited`, `eof`, `map_res`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 4 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `delimited`, `digit1`, `eof`, `map_res`, `opt`, `space0`, `tuple`, and `value` [INFO] [stdout] --> src/assembler/label_parsers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] 4 | character::complete::{alphanumeric1, digit1, multispace0, space0}, [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, terminated, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::directive_parsers::directive` [INFO] [stdout] --> src/assembler/label_parsers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::assembler::directive_parsers::directive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/label_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `integer_operand` and `operand` [INFO] [stdout] --> src/assembler/label_parsers.rs:12:40 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/label_parsers.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `tag` and `take_until` [INFO] [stdout] --> src/assembler/opcode_parsers.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | bytes::complete::{tag, take_until}, character::complete::{alpha1, multispace0}, combinator::map, sequence::delimited, IResult [INFO] [stdout] | ^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `bytes::complete::tag`, `delimited`, `digit1`, `eof`, `map_res`, `multispace0`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/program_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 4 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | character::complete::{digit1, multispace0}, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 6 | combinator::{eof, map, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 7 | multi::many1, [INFO] [stdout] 8 | sequence::{delimited, preceded}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `eof`, and `value` [INFO] [stdout] --> src/assembler/register_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6 | combinator::{eof, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `result` [INFO] [stdout] --> src/repl/mod.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::{self, result}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PIE_HEADER_LENGTH` [INFO] [stdout] --> src/vm.rs:1:24 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::assembler::{PIE_HEADER_LENGTH, PIE_HEADER_PREFIX}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/instruction.rs:34:23 [INFO] [stdout] | [INFO] [stdout] 34 | Instruction { opcode: opcode } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/directive_parsers.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `integer_operand` [INFO] [stdout] --> src/assembler/directive_parsers.rs:2:40 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/directive_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::character::streaming::space0` [INFO] [stdout] --> src/assembler/directive_parsers.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use nom::character::streaming::space0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `character::complete::digit1`, `eof`, `map_res`, and `value` [INFO] [stdout] --> src/assembler/directive_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/assembler/directive_parsers.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | label: label, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `bytes::complete::tag`, `character::complete::digit1`, `delimited`, `eof`, `map_res`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 4 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `delimited`, `digit1`, `eof`, `map_res`, `opt`, `space0`, `tuple`, and `value` [INFO] [stdout] --> src/assembler/label_parsers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] 4 | character::complete::{alphanumeric1, digit1, multispace0, space0}, [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, terminated, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::directive_parsers::directive` [INFO] [stdout] --> src/assembler/label_parsers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::assembler::directive_parsers::directive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/label_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `integer_operand` and `operand` [INFO] [stdout] --> src/assembler/label_parsers.rs:12:40 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/label_parsers.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/label_parsers.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `tag` and `take_until` [INFO] [stdout] --> src/assembler/opcode_parsers.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | bytes::complete::{tag, take_until}, character::complete::{alpha1, multispace0}, combinator::map, sequence::delimited, IResult [INFO] [stdout] | ^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/opcode_parsers.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `bytes::complete::tag`, `delimited`, `digit1`, `eof`, `map_res`, `multispace0`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/program_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 4 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | character::complete::{digit1, multispace0}, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 6 | combinator::{eof, map, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 7 | multi::many1, [INFO] [stdout] 8 | sequence::{delimited, preceded}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/program_parsers.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `eof`, and `value` [INFO] [stdout] --> src/assembler/register_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6 | combinator::{eof, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/register_parser.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::vm::VM` [INFO] [stdout] --> src/assembler/mod.rs:401:9 [INFO] [stdout] | [INFO] [stdout] 401 | use crate::vm::VM; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/mod.rs:403:9 [INFO] [stdout] | [INFO] [stdout] 403 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remainder` [INFO] [stdout] --> src/repl/mod.rs:84:29 [INFO] [stdout] | [INFO] [stdout] 84 | Ok((remainder, program)) => program, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remainder` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remainder` [INFO] [stdout] --> src/repl/mod.rs:84:29 [INFO] [stdout] | [INFO] [stdout] 84 | Ok((remainder, program)) => program, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remainder` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `parse_hex` is never used [INFO] [stdout] --> src/repl/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl REPL { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 112 | fn parse_hex(&mut self, i: &str) -> Result, ParseIntError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `extract_labels` is never used [INFO] [stdout] --> src/assembler/mod.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 79 | impl Assembler { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 275 | fn extract_labels(&mut self, p: &Program) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_zero` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:133:4 [INFO] [stdout] | [INFO] [stdout] 133 | fn instruction_zero(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_two` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:145:4 [INFO] [stdout] | [INFO] [stdout] 145 | fn instruction_two(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_three` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:160:4 [INFO] [stdout] | [INFO] [stdout] 160 | fn instruction_three(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `REPL` [INFO] [stdout] --> src/repl/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | / pub fn new() -> REPL { [INFO] [stdout] 21 | | REPL { [INFO] [stdout] 22 | | vm: VM::new(), [INFO] [stdout] 23 | | command_buffer: vec![], [INFO] [stdout] 24 | | } [INFO] [stdout] 25 | | } [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] 18 + impl Default for REPL { [INFO] [stdout] 19 + fn default() -> Self { [INFO] [stdout] 20 + Self::new() [INFO] [stdout] 21 + } [INFO] [stdout] 22 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/repl/mod.rs:95:24 [INFO] [stdout] | [INFO] [stdout] 95 | if !parsed_program.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parsed_program.is_err()` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/repl/mod.rs:116:43 [INFO] [stdout] | [INFO] [stdout] 116 | let byte = u8::from_str_radix(&hex_string, 16); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `hex_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `VM` [INFO] [stdout] --> src/vm.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | / pub fn new() -> VM { [INFO] [stdout] 19 | | VM { [INFO] [stdout] 20 | | registers: [0; 32], [INFO] [stdout] 21 | | program: vec![], [INFO] [stdout] ... | [INFO] [stdout] 28 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 17 + impl Default for VM { [INFO] [stdout] 18 + fn default() -> Self { [INFO] [stdout] 19 + Self::new() [INFO] [stdout] 20 + } [INFO] [stdout] 21 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | return opcode; [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] 33 - return opcode; [INFO] [stdout] 33 + opcode [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | return result; [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] 39 - return result; [INFO] [stdout] 39 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return result; [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] 46 - return result; [INFO] [stdout] 46 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/vm.rs:93:30 [INFO] [stdout] | [INFO] [stdout] 93 | let number = self.next_16_bits() as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.next_16_bits()` [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: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/vm.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | prepension.push(byte.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `byte` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/vm.rs:329:9 [INFO] [stdout] | [INFO] [stdout] 329 | assert_eq!(test_vm.equal_flag, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 329 - assert_eq!(test_vm.equal_flag, true); [INFO] [stdout] 329 + assert!(test_vm.equal_flag); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/vm.rs:332:9 [INFO] [stdout] | [INFO] [stdout] 332 | assert_eq!(test_vm.equal_flag, false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 332 - assert_eq!(test_vm.equal_flag, false); [INFO] [stdout] 332 + assert!(!test_vm.equal_flag); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `parse_hex` is never used [INFO] [stdout] --> src/repl/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl REPL { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 112 | fn parse_hex(&mut self, i: &str) -> Result, ParseIntError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `extract_labels` is never used [INFO] [stdout] --> src/assembler/mod.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 79 | impl Assembler { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 275 | fn extract_labels(&mut self, p: &Program) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_zero` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:133:4 [INFO] [stdout] | [INFO] [stdout] 133 | fn instruction_zero(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_two` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:145:4 [INFO] [stdout] | [INFO] [stdout] 145 | fn instruction_two(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_three` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:160:4 [INFO] [stdout] | [INFO] [stdout] 160 | fn instruction_three(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `REPL` [INFO] [stdout] --> src/repl/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | / pub fn new() -> REPL { [INFO] [stdout] 21 | | REPL { [INFO] [stdout] 22 | | vm: VM::new(), [INFO] [stdout] 23 | | command_buffer: vec![], [INFO] [stdout] 24 | | } [INFO] [stdout] 25 | | } [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] 18 + impl Default for REPL { [INFO] [stdout] 19 + fn default() -> Self { [INFO] [stdout] 20 + Self::new() [INFO] [stdout] 21 + } [INFO] [stdout] 22 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/repl/mod.rs:95:24 [INFO] [stdout] | [INFO] [stdout] 95 | if !parsed_program.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parsed_program.is_err()` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/directive_parsers.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 58 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 58 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/instruction_parsers.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | return results; [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] 50 - return results; [INFO] [stdout] 50 + results [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/assembler/instruction_parsers.rs:32:41 [INFO] [stdout] | [INFO] [stdout] 32 | Some(Token::Op { code }) => match code { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 33 | | _ => { [INFO] [stdout] 34 | | results.push(code as u8); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using the match body instead [INFO] [stdout] | [INFO] [stdout] 32 ~ Some(Token::Op { code }) => { [INFO] [stdout] 33 + results.push(code as u8); [INFO] [stdout] 34 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | / match operand { [INFO] [stdout] 45 | | Some(t) => AssemblerInstruction::extract_operand(t, &mut results, symbols), [INFO] [stdout] 46 | | None => {} [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(t) = operand { AssemblerInstruction::extract_operand(t, &mut results, symbols) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/repl/mod.rs:116:43 [INFO] [stdout] | [INFO] [stdout] 116 | let byte = u8::from_str_radix(&hex_string, 16); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `hex_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `VM` [INFO] [stdout] --> src/vm.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | / pub fn new() -> VM { [INFO] [stdout] 19 | | VM { [INFO] [stdout] 20 | | registers: [0; 32], [INFO] [stdout] 21 | | program: vec![], [INFO] [stdout] ... | [INFO] [stdout] 28 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 17 + impl Default for VM { [INFO] [stdout] 18 + fn default() -> Self { [INFO] [stdout] 19 + Self::new() [INFO] [stdout] 20 + } [INFO] [stdout] 21 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | return opcode; [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] 33 - return opcode; [INFO] [stdout] 33 + opcode [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | return result; [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] 39 - return result; [INFO] [stdout] 39 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return result; [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] 46 - return result; [INFO] [stdout] 46 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/instruction_parsers.rs:114:59 [INFO] [stdout] | [INFO] [stdout] 114 | if let Some(value) = symbols.symbol_value(&name) { [INFO] [stdout] | ^^^^^ help: change this to: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/vm.rs:93:30 [INFO] [stdout] | [INFO] [stdout] 93 | let number = self.next_16_bits() as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.next_16_bits()` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 39 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 39 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 48 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 48 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 54 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 54 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 63 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 63 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/opcode_parsers.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 24 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 24 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/opcode_parsers.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 31 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 31 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/instruction_parsers.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | return results; [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] 50 - return results; [INFO] [stdout] 50 + results [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/assembler/instruction_parsers.rs:32:41 [INFO] [stdout] | [INFO] [stdout] 32 | Some(Token::Op { code }) => match code { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 33 | | _ => { [INFO] [stdout] 34 | | results.push(code as u8); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using the match body instead [INFO] [stdout] | [INFO] [stdout] 32 ~ Some(Token::Op { code }) => { [INFO] [stdout] 33 + results.push(code as u8); [INFO] [stdout] 34 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | / match operand { [INFO] [stdout] 45 | | Some(t) => AssemblerInstruction::extract_operand(t, &mut results, symbols), [INFO] [stdout] 46 | | None => {} [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(t) = operand { AssemblerInstruction::extract_operand(t, &mut results, symbols) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/operand_parser.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 71 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 71 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/operand_parser.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 78 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 78 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/instruction_parsers.rs:114:59 [INFO] [stdout] | [INFO] [stdout] 114 | if let Some(value) = symbols.symbol_value(&name) { [INFO] [stdout] | ^^^^^ help: change this to: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/operand_parser.rs:84:5 [INFO] [stdout] | [INFO] [stdout] 84 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 84 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 84 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/program_parsers.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 40 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 40 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/program_parsers.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 50 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 50 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/program_parsers.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 62 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 62 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SymbolTable` [INFO] [stdout] --> src/assembler/symbols.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / pub fn new() -> SymbolTable { [INFO] [stdout] 29 | | SymbolTable { symbols: vec![] } [INFO] [stdout] 30 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 27 + impl Default for SymbolTable { [INFO] [stdout] 28 + fn default() -> Self { [INFO] [stdout] 29 + Self::new() [INFO] [stdout] 30 + } [INFO] [stdout] 31 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/register_parser.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 32 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 32 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/register_parser.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 36 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 36 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/register_parser.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 38 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 38 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SymbolTable` [INFO] [stdout] --> src/assembler/symbols.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / pub fn new() -> SymbolTable { [INFO] [stdout] 29 | | SymbolTable { symbols: vec![] } [INFO] [stdout] 30 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 27 + impl Default for SymbolTable { [INFO] [stdout] 28 + fn default() -> Self { [INFO] [stdout] 29 + Self::new() [INFO] [stdout] 30 + } [INFO] [stdout] 31 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Assembler` [INFO] [stdout] --> src/assembler/mod.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | / pub fn new() -> Assembler { [INFO] [stdout] 81 | | Assembler { [INFO] [stdout] 82 | | phase: AssemblerPhase::First, [INFO] [stdout] 83 | | symbols: SymbolTable::new(), [INFO] [stdout] ... | [INFO] [stdout] 92 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 79 + impl Default for Assembler { [INFO] [stdout] 80 + fn default() -> Self { [INFO] [stdout] 81 + Self::new() [INFO] [stdout] 82 + } [INFO] [stdout] 83 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Assembler` [INFO] [stdout] --> src/assembler/mod.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | / pub fn new() -> Assembler { [INFO] [stdout] 81 | | Assembler { [INFO] [stdout] 82 | | phase: AssemblerPhase::First, [INFO] [stdout] 83 | | symbols: SymbolTable::new(), [INFO] [stdout] ... | [INFO] [stdout] 92 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 79 + impl Default for Assembler { [INFO] [stdout] 80 + fn default() -> Self { [INFO] [stdout] 81 + Self::new() [INFO] [stdout] 82 + } [INFO] [stdout] 83 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/mod.rs:212:21 [INFO] [stdout] | [INFO] [stdout] 212 | 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - }); [INFO] [stdout] 212 - return; [INFO] [stdout] 211 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/mod.rs:229:52 [INFO] [stdout] | [INFO] [stdout] 229 | self.process_label_declaration(&i); [INFO] [stdout] | ^^ help: change this to: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/mod.rs:279:17 [INFO] [stdout] | [INFO] [stdout] 279 | / match i.get_label_name() { [INFO] [stdout] 280 | | Some(name) => { [INFO] [stdout] 281 | | let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 282 | | self.symbols.add_symbol(symbol); [INFO] [stdout] 283 | | } [INFO] [stdout] 284 | | None => {} [INFO] [stdout] 285 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 279 ~ if let Some(name) = i.get_label_name() { [INFO] [stdout] 280 + let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 281 + self.symbols.add_symbol(symbol); [INFO] [stdout] 282 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/mod.rs:212:21 [INFO] [stdout] | [INFO] [stdout] 212 | 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - }); [INFO] [stdout] 212 - return; [INFO] [stdout] 211 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/assembler/mod.rs:294:25 [INFO] [stdout] | [INFO] [stdout] 294 | header.push(byte.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `byte` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u8` is unnecessary [INFO] [stdout] --> src/assembler/mod.rs:297:25 [INFO] [stdout] | [INFO] [stdout] 297 | header.push(0 as u8); [INFO] [stdout] | ^^^^^^^ help: try: `0_u8` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/mod.rs:229:52 [INFO] [stdout] | [INFO] [stdout] 229 | self.process_label_declaration(&i); [INFO] [stdout] | ^^ help: change this to: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/mod.rs:279:17 [INFO] [stdout] | [INFO] [stdout] 279 | / match i.get_label_name() { [INFO] [stdout] 280 | | Some(name) => { [INFO] [stdout] 281 | | let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 282 | | self.symbols.add_symbol(symbol); [INFO] [stdout] 283 | | } [INFO] [stdout] 284 | | None => {} [INFO] [stdout] 285 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 279 ~ if let Some(name) = i.get_label_name() { [INFO] [stdout] 280 + let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 281 + self.symbols.add_symbol(symbol); [INFO] [stdout] 282 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:43:24 [INFO] [stdout] | [INFO] [stdout] 43 | for operand in vec![&self.operand1, &self.operand2, &self.operand3] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[&self.operand1, &self.operand2, &self.operand3]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/assembler/mod.rs:294:25 [INFO] [stdout] | [INFO] [stdout] 294 | header.push(byte.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `byte` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u8` is unnecessary [INFO] [stdout] --> src/assembler/mod.rs:297:25 [INFO] [stdout] | [INFO] [stdout] 297 | header.push(0 as u8); [INFO] [stdout] | ^^^^^^^ help: try: `0_u8` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:412:9 [INFO] [stdout] | [INFO] [stdout] 412 | assert_eq!(true, v.is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 412 - assert_eq!(true, v.is_some()); [INFO] [stdout] 412 + assert!(v.is_some()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:416:9 [INFO] [stdout] | [INFO] [stdout] 416 | assert_eq!(v.is_some(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 416 - assert_eq!(v.is_some(), false); [INFO] [stdout] 416 + assert!(!v.is_some()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:460:9 [INFO] [stdout] | [INFO] [stdout] 460 | assert_eq!(program.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 460 - assert_eq!(program.is_ok(), true); [INFO] [stdout] 460 + assert!(program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:476:9 [INFO] [stdout] | [INFO] [stdout] 476 | assert_eq!(program.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 476 - assert_eq!(program.is_ok(), true); [INFO] [stdout] 476 + assert!(program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:489:9 [INFO] [stdout] | [INFO] [stdout] 489 | assert_eq!(program.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 489 - assert_eq!(program.is_ok(), true); [INFO] [stdout] 489 + assert!(program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:502:9 [INFO] [stdout] | [INFO] [stdout] 502 | assert_eq!(program.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 502 - assert_eq!(program.is_ok(), false); [INFO] [stdout] 502 + assert!(!program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:511:9 [INFO] [stdout] | [INFO] [stdout] 511 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 511 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 511 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the method `process_first_phase` doesn't need a mutable reference [INFO] [stdout] --> src/assembler/mod.rs:513:33 [INFO] [stdout] | [INFO] [stdout] 513 | asm.process_first_phase(&mut p); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 513 - asm.process_first_phase(&mut p); [INFO] [stdout] 513 + asm.process_first_phase(&p); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:526:9 [INFO] [stdout] | [INFO] [stdout] 526 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 526 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 526 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the method `process_first_phase` doesn't need a mutable reference [INFO] [stdout] --> src/assembler/mod.rs:528:33 [INFO] [stdout] | [INFO] [stdout] 528 | asm.process_first_phase(&mut p); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 528 - asm.process_first_phase(&mut p); [INFO] [stdout] 528 + asm.process_first_phase(&p); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:43:24 [INFO] [stdout] | [INFO] [stdout] 43 | for operand in vec![&self.operand1, &self.operand2, &self.operand3] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[&self.operand1, &self.operand2, &self.operand3]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> src/main.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/directive_parsers.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `integer_operand` [INFO] [stdout] --> src/assembler/directive_parsers.rs:2:40 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/directive_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::character::streaming::space0` [INFO] [stdout] --> src/assembler/directive_parsers.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use nom::character::streaming::space0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `character::complete::digit1`, `eof`, `map_res`, and `value` [INFO] [stdout] --> src/assembler/directive_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/assembler/directive_parsers.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | label: label, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `bytes::complete::tag`, `character::complete::digit1`, `delimited`, `eof`, `map_res`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 4 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `delimited`, `digit1`, `eof`, `map_res`, `opt`, `space0`, `tuple`, and `value` [INFO] [stdout] --> src/assembler/label_parsers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] 4 | character::complete::{alphanumeric1, digit1, multispace0, space0}, [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, terminated, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::directive_parsers::directive` [INFO] [stdout] --> src/assembler/label_parsers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::assembler::directive_parsers::directive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/label_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `integer_operand` and `operand` [INFO] [stdout] --> src/assembler/label_parsers.rs:12:40 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/label_parsers.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/label_parsers.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `tag` and `take_until` [INFO] [stdout] --> src/assembler/opcode_parsers.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | bytes::complete::{tag, take_until}, character::complete::{alpha1, multispace0}, combinator::map, sequence::delimited, IResult [INFO] [stdout] | ^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/opcode_parsers.rs:17:9 [INFO] [stdout] | [INFO] [stdout] 17 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `bytes::complete::tag`, `delimited`, `digit1`, `eof`, `map_res`, `multispace0`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/program_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 4 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | character::complete::{digit1, multispace0}, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 6 | combinator::{eof, map, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 7 | multi::many1, [INFO] [stdout] 8 | sequence::{delimited, preceded}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/program_parsers.rs:35:9 [INFO] [stdout] | [INFO] [stdout] 35 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `eof`, and `value` [INFO] [stdout] --> src/assembler/register_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6 | combinator::{eof, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/register_parser.rs:27:9 [INFO] [stdout] | [INFO] [stdout] 27 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::vm::VM` [INFO] [stdout] --> src/assembler/mod.rs:401:9 [INFO] [stdout] | [INFO] [stdout] 401 | use crate::vm::VM; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::*` [INFO] [stdout] --> src/assembler/mod.rs:403:9 [INFO] [stdout] | [INFO] [stdout] 403 | use super::*; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/instruction.rs:34:23 [INFO] [stdout] | [INFO] [stdout] 34 | Instruction { opcode: opcode } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `result` [INFO] [stdout] --> src/repl/mod.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::{self, result}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `PIE_HEADER_LENGTH` [INFO] [stdout] --> src/vm.rs:1:24 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::assembler::{PIE_HEADER_LENGTH, PIE_HEADER_PREFIX}; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remainder` [INFO] [stdout] --> src/repl/mod.rs:84:29 [INFO] [stdout] | [INFO] [stdout] 84 | Ok((remainder, program)) => program, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remainder` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused `#[macro_use]` import [INFO] [stdout] --> src/main.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | #[macro_use] [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/directive_parsers.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `integer_operand` [INFO] [stdout] --> src/assembler/directive_parsers.rs:2:40 [INFO] [stdout] | [INFO] [stdout] 2 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/directive_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `nom::character::streaming::space0` [INFO] [stdout] --> src/assembler/directive_parsers.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use nom::character::streaming::space0; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `character::complete::digit1`, `eof`, `map_res`, and `value` [INFO] [stdout] --> src/assembler/directive_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 12 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/assembler/directive_parsers.rs:42:13 [INFO] [stdout] | [INFO] [stdout] 42 | label: label, [INFO] [stdout] | ^^^^^^^^^^^^ help: replace it with: `label` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `bytes::complete::tag`, `character::complete::digit1`, `delimited`, `eof`, `map_res`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 4 | character::complete::digit1, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `delimited`, `digit1`, `eof`, `map_res`, `opt`, `space0`, `tuple`, and `value` [INFO] [stdout] --> src/assembler/label_parsers.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 3 | bytes::complete::tag, [INFO] [stdout] 4 | character::complete::{alphanumeric1, digit1, multispace0, space0}, [INFO] [stdout] | ^^^^^^ ^^^^^^ [INFO] [stdout] 5 | combinator::{eof, map, map_res, opt, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^ ^^^^^ [INFO] [stdout] 6 | sequence::{delimited, preceded, terminated, tuple}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::directive_parsers::directive` [INFO] [stdout] --> src/assembler/label_parsers.rs:10:5 [INFO] [stdout] | [INFO] [stdout] 10 | use crate::assembler::directive_parsers::directive; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::opcode_parsers::*` [INFO] [stdout] --> src/assembler/label_parsers.rs:11:5 [INFO] [stdout] | [INFO] [stdout] 11 | use crate::assembler::opcode_parsers::*; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `integer_operand` and `operand` [INFO] [stdout] --> src/assembler/label_parsers.rs:12:40 [INFO] [stdout] | [INFO] [stdout] 12 | use crate::assembler::operand_parser::{integer_operand, operand}; [INFO] [stdout] | ^^^^^^^^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `crate::assembler::register_parser::register` [INFO] [stdout] --> src/assembler/label_parsers.rs:13:5 [INFO] [stdout] | [INFO] [stdout] 13 | use crate::assembler::register_parser::register; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `tag` and `take_until` [INFO] [stdout] --> src/assembler/opcode_parsers.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | bytes::complete::{tag, take_until}, character::complete::{alpha1, multispace0}, combinator::map, sequence::delimited, IResult [INFO] [stdout] | ^^^ ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `bytes::complete::tag`, `delimited`, `digit1`, `eof`, `map_res`, `multispace0`, `preceded`, and `value` [INFO] [stdout] --> src/assembler/program_parsers.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 4 | bytes::complete::tag, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] 5 | character::complete::{digit1, multispace0}, [INFO] [stdout] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stdout] 6 | combinator::{eof, map, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^^^ ^^^^^ [INFO] [stdout] 7 | multi::many1, [INFO] [stdout] 8 | sequence::{delimited, preceded}, [INFO] [stdout] | ^^^^^^^^^ ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `extract_labels` is never used [INFO] [stdout] --> src/assembler/mod.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 79 | impl Assembler { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 275 | fn extract_labels(&mut self, p: &Program) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_zero` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:133:4 [INFO] [stdout] | [INFO] [stdout] 133 | fn instruction_zero(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_two` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:145:4 [INFO] [stdout] | [INFO] [stdout] 145 | fn instruction_two(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_three` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:160:4 [INFO] [stdout] | [INFO] [stdout] 160 | fn instruction_three(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `parse_hex` is never used [INFO] [stdout] --> src/repl/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl REPL { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 112 | fn parse_hex(&mut self, i: &str) -> Result, ParseIntError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `branch::alt`, `eof`, and `value` [INFO] [stdout] --> src/assembler/register_parser.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | branch::alt, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 6 | combinator::{eof, map_res, value}, [INFO] [stdout] | ^^^ ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/instruction_parsers.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | return results; [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] 50 - return results; [INFO] [stdout] 50 + results [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/assembler/instruction_parsers.rs:32:41 [INFO] [stdout] | [INFO] [stdout] 32 | Some(Token::Op { code }) => match code { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 33 | | _ => { [INFO] [stdout] 34 | | results.push(code as u8); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using the match body instead [INFO] [stdout] | [INFO] [stdout] 32 ~ Some(Token::Op { code }) => { [INFO] [stdout] 33 + results.push(code as u8); [INFO] [stdout] 34 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | / match operand { [INFO] [stdout] 45 | | Some(t) => AssemblerInstruction::extract_operand(t, &mut results, symbols), [INFO] [stdout] 46 | | None => {} [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(t) = operand { AssemblerInstruction::extract_operand(t, &mut results, symbols) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/instruction.rs:34:23 [INFO] [stdout] | [INFO] [stdout] 34 | Instruction { opcode: opcode } [INFO] [stdout] | ^^^^^^^^^^^^^^ help: replace it with: `opcode` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `result` [INFO] [stdout] --> src/repl/mod.rs:9:17 [INFO] [stdout] | [INFO] [stdout] 9 | use std::{self, result}; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/instruction_parsers.rs:114:59 [INFO] [stdout] | [INFO] [stdout] 114 | if let Some(value) = symbols.symbol_value(&name) { [INFO] [stdout] | ^^^^^ help: change this to: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SymbolTable` [INFO] [stdout] --> src/assembler/symbols.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / pub fn new() -> SymbolTable { [INFO] [stdout] 29 | | SymbolTable { symbols: vec![] } [INFO] [stdout] 30 | | } [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] 27 + impl Default for SymbolTable { [INFO] [stdout] 28 + fn default() -> Self { [INFO] [stdout] 29 + Self::new() [INFO] [stdout] 30 + } [INFO] [stdout] 31 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Assembler` [INFO] [stdout] --> src/assembler/mod.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | / pub fn new() -> Assembler { [INFO] [stdout] 81 | | Assembler { [INFO] [stdout] 82 | | phase: AssemblerPhase::First, [INFO] [stdout] 83 | | symbols: SymbolTable::new(), [INFO] [stdout] ... | [INFO] [stdout] 92 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 79 + impl Default for Assembler { [INFO] [stdout] 80 + fn default() -> Self { [INFO] [stdout] 81 + Self::new() [INFO] [stdout] 82 + } [INFO] [stdout] 83 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/mod.rs:212:21 [INFO] [stdout] | [INFO] [stdout] 212 | 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - }); [INFO] [stdout] 212 - return; [INFO] [stdout] 211 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/mod.rs:229:52 [INFO] [stdout] | [INFO] [stdout] 229 | self.process_label_declaration(&i); [INFO] [stdout] | ^^ help: change this to: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/mod.rs:279:17 [INFO] [stdout] | [INFO] [stdout] 279 | / match i.get_label_name() { [INFO] [stdout] 280 | | Some(name) => { [INFO] [stdout] 281 | | let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 282 | | self.symbols.add_symbol(symbol); [INFO] [stdout] 283 | | } [INFO] [stdout] 284 | | None => {} [INFO] [stdout] 285 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 279 ~ if let Some(name) = i.get_label_name() { [INFO] [stdout] 280 + let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 281 + self.symbols.add_symbol(symbol); [INFO] [stdout] 282 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/assembler/mod.rs:294:25 [INFO] [stdout] | [INFO] [stdout] 294 | header.push(byte.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `byte` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u8` is unnecessary [INFO] [stdout] --> src/assembler/mod.rs:297:25 [INFO] [stdout] | [INFO] [stdout] 297 | header.push(0 as u8); [INFO] [stdout] | ^^^^^^^ help: try: `0_u8` [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: you should consider adding a `Default` implementation for `REPL` [INFO] [stdout] --> src/repl/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | / pub fn new() -> REPL { [INFO] [stdout] 21 | | REPL { [INFO] [stdout] 22 | | vm: VM::new(), [INFO] [stdout] 23 | | command_buffer: vec![], [INFO] [stdout] 24 | | } [INFO] [stdout] 25 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 18 + impl Default for REPL { [INFO] [stdout] 19 + fn default() -> Self { [INFO] [stdout] 20 + Self::new() [INFO] [stdout] 21 + } [INFO] [stdout] 22 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/repl/mod.rs:95:24 [INFO] [stdout] | [INFO] [stdout] 95 | if !parsed_program.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parsed_program.is_err()` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/repl/mod.rs:116:43 [INFO] [stdout] | [INFO] [stdout] 116 | let byte = u8::from_str_radix(&hex_string, 16); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `hex_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `VM` [INFO] [stdout] --> src/vm.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | / pub fn new() -> VM { [INFO] [stdout] 19 | | VM { [INFO] [stdout] 20 | | registers: [0; 32], [INFO] [stdout] 21 | | program: vec![], [INFO] [stdout] ... | [INFO] [stdout] 28 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 17 + impl Default for VM { [INFO] [stdout] 18 + fn default() -> Self { [INFO] [stdout] 19 + Self::new() [INFO] [stdout] 20 + } [INFO] [stdout] 21 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | return opcode; [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] 33 - return opcode; [INFO] [stdout] 33 + opcode [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | return result; [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] 39 - return result; [INFO] [stdout] 39 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return result; [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] 46 - return result; [INFO] [stdout] 46 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/vm.rs:93:30 [INFO] [stdout] | [INFO] [stdout] 93 | let number = self.next_16_bits() as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.next_16_bits()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | / match program { [INFO] [stdout] 21 | | Ok(p) => { [INFO] [stdout] 22 | | vm.add_bytes(p); [INFO] [stdout] 23 | | vm.run(); [INFO] [stdout] ... | [INFO] [stdout] 26 | | Err(_) => {} [INFO] [stdout] 27 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 20 ~ if let Ok(p) = program { [INFO] [stdout] 21 + vm.add_bytes(p); [INFO] [stdout] 22 + vm.run(); [INFO] [stdout] 23 + std::process::exit(0); [INFO] [stdout] 24 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:45:21 [INFO] [stdout] | [INFO] [stdout] 45 | return contents; [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] 45 - return contents; [INFO] [stdout] 45 + contents [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:43:24 [INFO] [stdout] | [INFO] [stdout] 43 | for operand in vec![&self.operand1, &self.operand2, &self.operand3] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[&self.operand1, &self.operand2, &self.operand3]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `remainder` [INFO] [stdout] --> src/repl/mod.rs:84:29 [INFO] [stdout] | [INFO] [stdout] 84 | Ok((remainder, program)) => program, [INFO] [stdout] | ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_remainder` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `extract_labels` is never used [INFO] [stdout] --> src/assembler/mod.rs:275:8 [INFO] [stdout] | [INFO] [stdout] 79 | impl Assembler { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 275 | fn extract_labels(&mut self, p: &Program) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_zero` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:133:4 [INFO] [stdout] | [INFO] [stdout] 133 | fn instruction_zero(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_two` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:145:4 [INFO] [stdout] | [INFO] [stdout] 145 | fn instruction_two(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `instruction_three` is never used [INFO] [stdout] --> src/assembler/instruction_parsers.rs:160:4 [INFO] [stdout] | [INFO] [stdout] 160 | fn instruction_three(input: &str) -> IResult<&str, AssemblerInstruction> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `parse_hex` is never used [INFO] [stdout] --> src/repl/mod.rs:112:8 [INFO] [stdout] | [INFO] [stdout] 18 | impl REPL { [INFO] [stdout] | --------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 112 | fn parse_hex(&mut self, i: &str) -> Result, ParseIntError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/directive_parsers.rs:58:5 [INFO] [stdout] | [INFO] [stdout] 58 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 58 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 58 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/instruction_parsers.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | return results; [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] 50 - return results; [INFO] [stdout] 50 + results [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this match could be replaced by its body itself [INFO] [stdout] --> src/assembler/instruction_parsers.rs:32:41 [INFO] [stdout] | [INFO] [stdout] 32 | Some(Token::Op { code }) => match code { [INFO] [stdout] | _________________________________________^ [INFO] [stdout] 33 | | _ => { [INFO] [stdout] 34 | | results.push(code as u8); [INFO] [stdout] 35 | | } [INFO] [stdout] 36 | | }, [INFO] [stdout] | |_____________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_single_binding [INFO] [stdout] = note: `#[warn(clippy::match_single_binding)]` on by default [INFO] [stdout] help: consider using the match body instead [INFO] [stdout] | [INFO] [stdout] 32 ~ Some(Token::Op { code }) => { [INFO] [stdout] 33 + results.push(code as u8); [INFO] [stdout] 34 ~ }, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:44:13 [INFO] [stdout] | [INFO] [stdout] 44 | / match operand { [INFO] [stdout] 45 | | Some(t) => AssemblerInstruction::extract_operand(t, &mut results, symbols), [INFO] [stdout] 46 | | None => {} [INFO] [stdout] 47 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(t) = operand { AssemblerInstruction::extract_operand(t, &mut results, symbols) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/instruction_parsers.rs:114:59 [INFO] [stdout] | [INFO] [stdout] 114 | if let Some(value) = symbols.symbol_value(&name) { [INFO] [stdout] | ^^^^^ help: change this to: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 39 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 39 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:48:9 [INFO] [stdout] | [INFO] [stdout] 48 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 48 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 48 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:54:9 [INFO] [stdout] | [INFO] [stdout] 54 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 54 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 54 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/label_parsers.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 63 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 63 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/opcode_parsers.rs:24:9 [INFO] [stdout] | [INFO] [stdout] 24 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 24 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 24 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/opcode_parsers.rs:31:9 [INFO] [stdout] | [INFO] [stdout] 31 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 31 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 31 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/operand_parser.rs:71:5 [INFO] [stdout] | [INFO] [stdout] 71 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 71 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 71 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/operand_parser.rs:78:5 [INFO] [stdout] | [INFO] [stdout] 78 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 78 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 78 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/operand_parser.rs:84:5 [INFO] [stdout] | [INFO] [stdout] 84 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 84 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 84 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/program_parsers.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 40 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 40 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/program_parsers.rs:50:9 [INFO] [stdout] | [INFO] [stdout] 50 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 50 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 50 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/program_parsers.rs:62:9 [INFO] [stdout] | [INFO] [stdout] 62 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 62 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 62 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/register_parser.rs:32:9 [INFO] [stdout] | [INFO] [stdout] 32 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 32 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 32 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/register_parser.rs:36:9 [INFO] [stdout] | [INFO] [stdout] 36 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 36 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 36 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/register_parser.rs:38:9 [INFO] [stdout] | [INFO] [stdout] 38 | assert_eq!(result.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 38 - assert_eq!(result.is_ok(), false); [INFO] [stdout] 38 + assert!(!result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `SymbolTable` [INFO] [stdout] --> src/assembler/symbols.rs:28:5 [INFO] [stdout] | [INFO] [stdout] 28 | / pub fn new() -> SymbolTable { [INFO] [stdout] 29 | | SymbolTable { symbols: vec![] } [INFO] [stdout] 30 | | } [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] 27 + impl Default for SymbolTable { [INFO] [stdout] 28 + fn default() -> Self { [INFO] [stdout] 29 + Self::new() [INFO] [stdout] 30 + } [INFO] [stdout] 31 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Assembler` [INFO] [stdout] --> src/assembler/mod.rs:80:5 [INFO] [stdout] | [INFO] [stdout] 80 | / pub fn new() -> Assembler { [INFO] [stdout] 81 | | Assembler { [INFO] [stdout] 82 | | phase: AssemblerPhase::First, [INFO] [stdout] 83 | | symbols: SymbolTable::new(), [INFO] [stdout] ... | [INFO] [stdout] 92 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 79 + impl Default for Assembler { [INFO] [stdout] 80 + fn default() -> Self { [INFO] [stdout] 81 + Self::new() [INFO] [stdout] 82 + } [INFO] [stdout] 83 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/assembler/mod.rs:212:21 [INFO] [stdout] | [INFO] [stdout] 212 | 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] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - }); [INFO] [stdout] 212 - return; [INFO] [stdout] 211 + }); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/assembler/mod.rs:229:52 [INFO] [stdout] | [INFO] [stdout] 229 | self.process_label_declaration(&i); [INFO] [stdout] | ^^ help: change this to: `i` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/assembler/mod.rs:279:17 [INFO] [stdout] | [INFO] [stdout] 279 | / match i.get_label_name() { [INFO] [stdout] 280 | | Some(name) => { [INFO] [stdout] 281 | | let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 282 | | self.symbols.add_symbol(symbol); [INFO] [stdout] 283 | | } [INFO] [stdout] 284 | | None => {} [INFO] [stdout] 285 | | }; [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 279 ~ if let Some(name) = i.get_label_name() { [INFO] [stdout] 280 + let symbol = Symbol::new(name, SymbolType::Label, c); [INFO] [stdout] 281 + self.symbols.add_symbol(symbol); [INFO] [stdout] 282 ~ }; [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/assembler/mod.rs:294:25 [INFO] [stdout] | [INFO] [stdout] 294 | header.push(byte.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `byte` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] = note: `#[warn(clippy::clone_on_copy)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `u8` is unnecessary [INFO] [stdout] --> src/assembler/mod.rs:297:25 [INFO] [stdout] | [INFO] [stdout] 297 | header.push(0 as u8); [INFO] [stdout] | ^^^^^^^ help: try: `0_u8` [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: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:412:9 [INFO] [stdout] | [INFO] [stdout] 412 | assert_eq!(true, v.is_some()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 412 - assert_eq!(true, v.is_some()); [INFO] [stdout] 412 + assert!(v.is_some()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:416:9 [INFO] [stdout] | [INFO] [stdout] 416 | assert_eq!(v.is_some(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 416 - assert_eq!(v.is_some(), false); [INFO] [stdout] 416 + assert!(!v.is_some()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:460:9 [INFO] [stdout] | [INFO] [stdout] 460 | assert_eq!(program.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 460 - assert_eq!(program.is_ok(), true); [INFO] [stdout] 460 + assert!(program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:476:9 [INFO] [stdout] | [INFO] [stdout] 476 | assert_eq!(program.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 476 - assert_eq!(program.is_ok(), true); [INFO] [stdout] 476 + assert!(program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:489:9 [INFO] [stdout] | [INFO] [stdout] 489 | assert_eq!(program.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 489 - assert_eq!(program.is_ok(), true); [INFO] [stdout] 489 + assert!(program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:502:9 [INFO] [stdout] | [INFO] [stdout] 502 | assert_eq!(program.is_ok(), false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 502 - assert_eq!(program.is_ok(), false); [INFO] [stdout] 502 + assert!(!program.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:511:9 [INFO] [stdout] | [INFO] [stdout] 511 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 511 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 511 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the method `process_first_phase` doesn't need a mutable reference [INFO] [stdout] --> src/assembler/mod.rs:513:33 [INFO] [stdout] | [INFO] [stdout] 513 | asm.process_first_phase(&mut p); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] = note: `#[warn(clippy::unnecessary_mut_passed)]` on by default [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 513 - asm.process_first_phase(&mut p); [INFO] [stdout] 513 + asm.process_first_phase(&p); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/assembler/mod.rs:526:9 [INFO] [stdout] | [INFO] [stdout] 526 | assert_eq!(result.is_ok(), true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 526 - assert_eq!(result.is_ok(), true); [INFO] [stdout] 526 + assert!(result.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: the method `process_first_phase` doesn't need a mutable reference [INFO] [stdout] --> src/assembler/mod.rs:528:33 [INFO] [stdout] | [INFO] [stdout] 528 | asm.process_first_phase(&mut p); [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stdout] help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] 528 - asm.process_first_phase(&mut p); [INFO] [stdout] 528 + asm.process_first_phase(&p); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `REPL` [INFO] [stdout] --> src/repl/mod.rs:20:5 [INFO] [stdout] | [INFO] [stdout] 20 | / pub fn new() -> REPL { [INFO] [stdout] 21 | | REPL { [INFO] [stdout] 22 | | vm: VM::new(), [INFO] [stdout] 23 | | command_buffer: vec![], [INFO] [stdout] 24 | | } [INFO] [stdout] 25 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 18 + impl Default for REPL { [INFO] [stdout] 19 + fn default() -> Self { [INFO] [stdout] 20 + Self::new() [INFO] [stdout] 21 + } [INFO] [stdout] 22 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/repl/mod.rs:95:24 [INFO] [stdout] | [INFO] [stdout] 95 | if !parsed_program.is_ok() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `parsed_program.is_err()` [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: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/repl/mod.rs:116:43 [INFO] [stdout] | [INFO] [stdout] 116 | let byte = u8::from_str_radix(&hex_string, 16); [INFO] [stdout] | ^^^^^^^^^^^ help: change this to: `hex_string` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `VM` [INFO] [stdout] --> src/vm.rs:18:5 [INFO] [stdout] | [INFO] [stdout] 18 | / pub fn new() -> VM { [INFO] [stdout] 19 | | VM { [INFO] [stdout] 20 | | registers: [0; 32], [INFO] [stdout] 21 | | program: vec![], [INFO] [stdout] ... | [INFO] [stdout] 28 | | } [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] help: try adding this [INFO] [stdout] | [INFO] [stdout] 17 + impl Default for VM { [INFO] [stdout] 18 + fn default() -> Self { [INFO] [stdout] 19 + Self::new() [INFO] [stdout] 20 + } [INFO] [stdout] 21 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | return opcode; [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] 33 - return opcode; [INFO] [stdout] 33 + opcode [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:39:9 [INFO] [stdout] | [INFO] [stdout] 39 | return result; [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] 39 - return result; [INFO] [stdout] 39 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/vm.rs:46:9 [INFO] [stdout] | [INFO] [stdout] 46 | return result; [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] 46 - return result; [INFO] [stdout] 46 + result [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting to the same type is unnecessary (`u16` -> `u16`) [INFO] [stdout] --> src/vm.rs:93:30 [INFO] [stdout] | [INFO] [stdout] 93 | let number = self.next_16_bits() as u16; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.next_16_bits()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `clone` on type `u8` which implements the `Copy` trait [INFO] [stdout] --> src/vm.rs:251:29 [INFO] [stdout] | [INFO] [stdout] 251 | prepension.push(byte.clone()); [INFO] [stdout] | ^^^^^^^^^^^^ help: try removing the `clone` call: `byte` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/vm.rs:329:9 [INFO] [stdout] | [INFO] [stdout] 329 | assert_eq!(test_vm.equal_flag, true); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 329 - assert_eq!(test_vm.equal_flag, true); [INFO] [stdout] 329 + assert!(test_vm.equal_flag); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/vm.rs:332:9 [INFO] [stdout] | [INFO] [stdout] 332 | assert_eq!(test_vm.equal_flag, false); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 332 - assert_eq!(test_vm.equal_flag, false); [INFO] [stdout] 332 + assert!(!test_vm.equal_flag); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/main.rs:20:9 [INFO] [stdout] | [INFO] [stdout] 20 | / match program { [INFO] [stdout] 21 | | Ok(p) => { [INFO] [stdout] 22 | | vm.add_bytes(p); [INFO] [stdout] 23 | | vm.run(); [INFO] [stdout] ... | [INFO] [stdout] 26 | | Err(_) => {} [INFO] [stdout] 27 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 20 ~ if let Ok(p) = program { [INFO] [stdout] 21 + vm.add_bytes(p); [INFO] [stdout] 22 + vm.run(); [INFO] [stdout] 23 + std::process::exit(0); [INFO] [stdout] 24 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/main.rs:45:21 [INFO] [stdout] | [INFO] [stdout] 45 | return contents; [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] 45 - return contents; [INFO] [stdout] 45 + contents [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless use of `vec!` [INFO] [stdout] --> src/assembler/instruction_parsers.rs:43:24 [INFO] [stdout] | [INFO] [stdout] 43 | for operand in vec![&self.operand1, &self.operand2, &self.operand3] { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can use an array directly: `[&self.operand1, &self.operand2, &self.operand3]` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_vec [INFO] [stdout] = note: `#[warn(clippy::useless_vec)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.94s [INFO] running `Command { std: "docker" "inspect" "640759a7e79deb5e9a78b873ff10dc0feb1146367fdf6e895094484e1b5dfc1a", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "640759a7e79deb5e9a78b873ff10dc0feb1146367fdf6e895094484e1b5dfc1a", kill_on_drop: false }` [INFO] [stdout] 640759a7e79deb5e9a78b873ff10dc0feb1146367fdf6e895094484e1b5dfc1a