[INFO] updating cached repository MCluck90/rust-vm [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/MCluck90/rust-vm [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/MCluck90/rust-vm" "work/ex/clippy-test-run/sources/stable/gh/MCluck90/rust-vm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/MCluck90/rust-vm'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/MCluck90/rust-vm" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MCluck90/rust-vm"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MCluck90/rust-vm'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 85f2cc5606068815a63a0af616860f7f4324b44a [INFO] sha for GitHub repo MCluck90/rust-vm: 85f2cc5606068815a63a0af616860f7f4324b44a [INFO] validating manifest of MCluck90/rust-vm on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of MCluck90/rust-vm on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing MCluck90/rust-vm [INFO] finished frobbing MCluck90/rust-vm [INFO] frobbed toml for MCluck90/rust-vm written to work/ex/clippy-test-run/sources/stable/gh/MCluck90/rust-vm/Cargo.toml [INFO] started frobbing MCluck90/rust-vm [INFO] finished frobbing MCluck90/rust-vm [INFO] frobbed toml for MCluck90/rust-vm written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MCluck90/rust-vm/Cargo.toml [INFO] crate MCluck90/rust-vm has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting MCluck90/rust-vm against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/MCluck90/rust-vm:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid -Dclippy::into_iter_on_array" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] a2fa43bbff659ec096e8f4ceefc33c21292c71f9d3b26764f889707426bae56f [INFO] running `"docker" "start" "-a" "a2fa43bbff659ec096e8f4ceefc33c21292c71f9d3b26764f889707426bae56f"` [INFO] [stderr] Checking vm v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | memory: memory [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `memory` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/vm.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | memory: memory [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `memory` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/assembler.rs:115:19 [INFO] [stderr] | [INFO] [stderr] 115 | match *&instruction { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `instruction` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:552:17 [INFO] [stderr] | [INFO] [stderr] 552 | return Some(self.newest_tokens.remove(0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(self.newest_tokens.remove(0))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:555:17 [INFO] [stderr] | [INFO] [stderr] 555 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: immediately dereferencing a reference [INFO] [stderr] --> src/assembler.rs:115:19 [INFO] [stderr] | [INFO] [stderr] 115 | match *&instruction { [INFO] [stderr] | ^^^^^^^^^^^^^ help: try this: `instruction` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deref_addrof)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deref_addrof [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:552:17 [INFO] [stderr] | [INFO] [stderr] 552 | return Some(self.newest_tokens.remove(0)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(self.newest_tokens.remove(0))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/tokenizer.rs:555:17 [INFO] [stderr] | [INFO] [stderr] 555 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / match &self.cmd_type { [INFO] [stderr] 43 | | &CommandType::Instruction(InstructionType::Add) => { [INFO] [stderr] 44 | | match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => {} [INFO] [stderr] 52 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | if let &CommandType::Instruction(InstructionType::Add) = &self.cmd_type { [INFO] [stderr] 43 | match &self.operand2.token_type { [INFO] [stderr] 44 | &TokenType::Integer(_) => { [INFO] [stderr] 45 | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 46 | }, [INFO] [stderr] 47 | _ => {} [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / match &self.cmd_type { [INFO] [stderr] 43 | | &CommandType::Instruction(InstructionType::Add) => { [INFO] [stderr] 44 | | match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => {} [INFO] [stderr] 52 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 42 | match self.cmd_type { [INFO] [stderr] 43 | CommandType::Instruction(InstructionType::Add) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | / match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] 46 | | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 47 | | }, [INFO] [stderr] 48 | | _ => {} [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 44 | if let &TokenType::Integer(_) = &self.operand2.token_type { [INFO] [stderr] 45 | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 46 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | / match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] 46 | | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 47 | | }, [INFO] [stderr] 48 | | _ => {} [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 44 | match self.operand2.token_type { [INFO] [stderr] 45 | TokenType::Integer(_) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match &self.cmd_type { [INFO] [stderr] 62 | | &CommandType::Directive(_) => self.is_directive_complete(), [INFO] [stderr] 63 | | &CommandType::Instruction(ref instruction) => [INFO] [stderr] 64 | | self.is_instruction_complete(&instruction), [INFO] [stderr] 65 | | _ => false [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 61 | match self.cmd_type { [INFO] [stderr] 62 | CommandType::Directive(_) => self.is_directive_complete(), [INFO] [stderr] 63 | CommandType::Instruction(ref instruction) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match &self.cmd_type { [INFO] [stderr] 71 | | &CommandType::Directive(_) => match &self.operand1.token_type { [INFO] [stderr] 72 | | &TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | | &TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] ... | [INFO] [stderr] 105 | | &CommandType::Unknown => unreachable!() [INFO] [stderr] 106 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 70 | match self.cmd_type { [INFO] [stderr] 71 | CommandType::Directive(_) => match &self.operand1.token_type { [INFO] [stderr] 72 | &TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | &TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] 74 | _ => unreachable!() [INFO] [stderr] 75 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:71:43 [INFO] [stderr] | [INFO] [stderr] 71 | &CommandType::Directive(_) => match &self.operand1.token_type { [INFO] [stderr] | ___________________________________________^ [INFO] [stderr] 72 | | &TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | | &TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] 74 | | _ => unreachable!() [INFO] [stderr] 75 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 71 | &CommandType::Directive(_) => match self.operand1.token_type { [INFO] [stderr] 72 | TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:79:29 [INFO] [stderr] | [INFO] [stderr] 79 | result[1] = match &self.operand1.token_type { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 80 | | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 81 | | &TokenType::Integer(val) => val, [INFO] [stderr] 82 | | &TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] ... | [INFO] [stderr] 89 | | _ => 0, [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 79 | result[1] = match self.operand1.token_type { [INFO] [stderr] 80 | TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 81 | TokenType::Integer(val) => val, [INFO] [stderr] 82 | TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] 83 | TokenType::Label(ref label) => match label_table.get(label) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/assembler.rs:80:49 [INFO] [stderr] | [INFO] [stderr] 80 | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from((c as u8))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/assembler.rs:84:41 [INFO] [stderr] | [INFO] [stderr] 84 | Some(offset) => offset.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*offset` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:91:29 [INFO] [stderr] | [INFO] [stderr] 91 | result[2] = match &self.operand2.token_type { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 92 | | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 93 | | &TokenType::Integer(val) => val, [INFO] [stderr] 94 | | &TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] ... | [INFO] [stderr] 101 | | _ => 0, [INFO] [stderr] 102 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 91 | result[2] = match self.operand2.token_type { [INFO] [stderr] 92 | TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 93 | TokenType::Integer(val) => val, [INFO] [stderr] 94 | TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] 95 | TokenType::Label(ref label) => match label_table.get(label) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/assembler.rs:92:49 [INFO] [stderr] | [INFO] [stderr] 92 | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from((c as u8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/assembler.rs:96:41 [INFO] [stderr] | [INFO] [stderr] 96 | Some(offset) => offset.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*offset` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/assembler.rs:230:24 [INFO] [stderr] | [INFO] [stderr] 230 | pub fn to_commands(tokens: Tokenizer) -> (HashMap, Vec) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/assembler.rs:271:24 [INFO] [stderr] | [INFO] [stderr] 271 | pub fn to_bytecode(label_table: HashMap, commands: Vec) -> (usize, Vec) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syntax.rs:4:10 [INFO] [stderr] | [INFO] [stderr] 4 | Some(format!("Unexpected end of file")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unexpected end of file".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / match &t.token_type { [INFO] [stderr] 17 | | &TokenType::Label(_) => { [INFO] [stderr] 18 | | token = tokens.next(); [INFO] [stderr] 19 | | if !prev_label { [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 16 | match t.token_type { [INFO] [stderr] 17 | TokenType::Label(_) => { [INFO] [stderr] 18 | token = tokens.next(); [INFO] [stderr] 19 | if !prev_label { [INFO] [stderr] 20 | prev_label = true; [INFO] [stderr] 21 | continue; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:50:8 [INFO] [stderr] | [INFO] [stderr] 50 | if !next_token.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `next_token.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | / match directive { [INFO] [stderr] 55 | | &DirectiveType::Byte => { [INFO] [stderr] 56 | | match &next_token.token_type { [INFO] [stderr] 57 | | &TokenType::Character(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *directive { [INFO] [stderr] 55 | DirectiveType::Byte => { [INFO] [stderr] 56 | match &next_token.token_type { [INFO] [stderr] 57 | &TokenType::Character(_) => None, [INFO] [stderr] 58 | _ => error_message("an ASCII character", &next_token) [INFO] [stderr] 59 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | / match &next_token.token_type { [INFO] [stderr] 57 | | &TokenType::Character(_) => None, [INFO] [stderr] 58 | | _ => error_message("an ASCII character", &next_token) [INFO] [stderr] 59 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 56 | match next_token.token_type { [INFO] [stderr] 57 | TokenType::Character(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | / match &next_token.token_type { [INFO] [stderr] 63 | | &TokenType::Integer(_) => None, [INFO] [stderr] 64 | | _ => error_message("an integer", &next_token) [INFO] [stderr] 65 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 62 | match next_token.token_type { [INFO] [stderr] 63 | TokenType::Integer(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:84:8 [INFO] [stderr] | [INFO] [stderr] 84 | if !next_token.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `next_token.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | if !second_op.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `second_op.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:142:16 [INFO] [stderr] | [INFO] [stderr] 142 | if !second_op.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `second_op.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:159:16 [INFO] [stderr] | [INFO] [stderr] 159 | if !second_op.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `second_op.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / match instruction { [INFO] [stderr] 73 | | &InstructionType::OutputASCII | [INFO] [stderr] 74 | | &InstructionType::OutputInteger | [INFO] [stderr] 75 | | &InstructionType::InputASCII | [INFO] [stderr] ... | [INFO] [stderr] 80 | | _ => {} [INFO] [stderr] 81 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 72 | match *instruction { [INFO] [stderr] 73 | InstructionType::OutputASCII | [INFO] [stderr] 74 | InstructionType::OutputInteger | [INFO] [stderr] 75 | InstructionType::InputASCII | [INFO] [stderr] 76 | InstructionType::InputInteger | [INFO] [stderr] 77 | InstructionType::ConvertASCIIToInteger | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:85:16 [INFO] [stderr] | [INFO] [stderr] 85 | return match instruction { [INFO] [stderr] | ________________^ [INFO] [stderr] 86 | | &InstructionType::OutputASCII | [INFO] [stderr] 87 | | &InstructionType::OutputInteger | [INFO] [stderr] 88 | | &InstructionType::InputASCII | [INFO] [stderr] ... | [INFO] [stderr] 93 | | _ => end_of_file() [INFO] [stderr] 94 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 85 | return match *instruction { [INFO] [stderr] 86 | InstructionType::OutputASCII | [INFO] [stderr] 87 | InstructionType::OutputInteger | [INFO] [stderr] 88 | InstructionType::InputASCII | [INFO] [stderr] 89 | InstructionType::InputInteger | [INFO] [stderr] 90 | InstructionType::ConvertASCIIToInteger | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | / match instruction { [INFO] [stderr] 98 | | &InstructionType::Jump => { [INFO] [stderr] 99 | | match &next_token.token_type { [INFO] [stderr] 100 | | &TokenType::Label(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 180 | | &InstructionType::End => None [INFO] [stderr] 181 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 97 | match *instruction { [INFO] [stderr] 98 | InstructionType::Jump => { [INFO] [stderr] 99 | match &next_token.token_type { [INFO] [stderr] 100 | &TokenType::Label(_) => None, [INFO] [stderr] 101 | _ => error_message("a label", &next_token) [INFO] [stderr] 102 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match &next_token.token_type { [INFO] [stderr] 100 | | &TokenType::Label(_) => None, [INFO] [stderr] 101 | | _ => error_message("a label", &next_token) [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 99 | match next_token.token_type { [INFO] [stderr] 100 | TokenType::Label(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | / match &next_token.token_type { [INFO] [stderr] 106 | | &TokenType::Register(_) => None, [INFO] [stderr] 107 | | _ => error_message("a register", &next_token) [INFO] [stderr] 108 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 105 | match next_token.token_type { [INFO] [stderr] 106 | TokenType::Register(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | / match &next_token.token_type { [INFO] [stderr] 126 | | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] 127 | | &TokenType::Label(_) => None, [INFO] [stderr] 128 | | _ => error_message("a label", &second_op) [INFO] [stderr] 129 | | }, [INFO] [stderr] 130 | | _ => error_message("a register", &next_token) [INFO] [stderr] 131 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 125 | match next_token.token_type { [INFO] [stderr] 126 | TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:126:44 [INFO] [stderr] | [INFO] [stderr] 126 | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 127 | | &TokenType::Label(_) => None, [INFO] [stderr] 128 | | _ => error_message("a label", &second_op) [INFO] [stderr] 129 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 126 | &TokenType::Register(_) => match second_op.token_type { [INFO] [stderr] 127 | TokenType::Label(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | / match &next_token.token_type { [INFO] [stderr] 148 | | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] 149 | | &TokenType::Register(_) => None, [INFO] [stderr] 150 | | _ => error_message("a register", &second_op) [INFO] [stderr] 151 | | }, [INFO] [stderr] 152 | | _ => error_message("a register", &next_token) [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 147 | match next_token.token_type { [INFO] [stderr] 148 | TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:148:44 [INFO] [stderr] | [INFO] [stderr] 148 | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 149 | | &TokenType::Register(_) => None, [INFO] [stderr] 150 | | _ => error_message("a register", &second_op) [INFO] [stderr] 151 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 148 | &TokenType::Register(_) => match second_op.token_type { [INFO] [stderr] 149 | TokenType::Register(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:164:13 [INFO] [stderr] | [INFO] [stderr] 164 | / match &next_token.token_type { [INFO] [stderr] 165 | | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] 166 | | &TokenType::Register(_) | [INFO] [stderr] 167 | | &TokenType::Integer(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 170 | | _ => error_message("a register", &next_token) [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 164 | match next_token.token_type { [INFO] [stderr] 165 | TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:165:44 [INFO] [stderr] | [INFO] [stderr] 165 | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 166 | | &TokenType::Register(_) | [INFO] [stderr] 167 | | &TokenType::Integer(_) => None, [INFO] [stderr] 168 | | _ => error_message("a register or an integer", &second_op) [INFO] [stderr] 169 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 165 | &TokenType::Register(_) => match second_op.token_type { [INFO] [stderr] 166 | TokenType::Register(_) | [INFO] [stderr] 167 | TokenType::Integer(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | / match self { [INFO] [stderr] 21 | | &DirectiveType::Byte => 0, [INFO] [stderr] 22 | | &DirectiveType::Word => 1 [INFO] [stderr] 23 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 20 | match *self { [INFO] [stderr] 21 | DirectiveType::Byte => 0, [INFO] [stderr] 22 | DirectiveType::Word => 1 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / match self { [INFO] [stderr] 74 | | &InstructionType::End => 2, [INFO] [stderr] 75 | | &InstructionType::OutputInteger => 3, [INFO] [stderr] 76 | | &InstructionType::InputInteger => 4, [INFO] [stderr] ... | [INFO] [stderr] 105 | | &InstructionType::Compare => 28 [INFO] [stderr] 106 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 73 | match *self { [INFO] [stderr] 74 | InstructionType::End => 2, [INFO] [stderr] 75 | InstructionType::OutputInteger => 3, [INFO] [stderr] 76 | InstructionType::InputInteger => 4, [INFO] [stderr] 77 | InstructionType::OutputASCII => 5, [INFO] [stderr] 78 | InstructionType::InputASCII => 6, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / match self { [INFO] [stderr] 168 | | &Register::Reg0 => 0, [INFO] [stderr] 169 | | &Register::Reg1 => 1, [INFO] [stderr] 170 | | &Register::Reg2 => 2, [INFO] [stderr] ... | [INFO] [stderr] 180 | | &Register::SB => 12, [INFO] [stderr] 181 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 167 | match *self { [INFO] [stderr] 168 | Register::Reg0 => 0, [INFO] [stderr] 169 | Register::Reg1 => 1, [INFO] [stderr] 170 | Register::Reg2 => 2, [INFO] [stderr] 171 | Register::Reg3 => 3, [INFO] [stderr] 172 | Register::Reg4 => 4, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / match self { [INFO] [stderr] 218 | | &TokenType::Character(ref str) => write!(f, "{}", str), [INFO] [stderr] 219 | | &TokenType::Directive(ref directive) => match directive { [INFO] [stderr] 220 | | &DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] ... | [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 217 | match *self { [INFO] [stderr] 218 | TokenType::Character(ref str) => write!(f, "{}", str), [INFO] [stderr] 219 | TokenType::Directive(ref directive) => match directive { [INFO] [stderr] 220 | &DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] 221 | &DirectiveType::Word => write!(f, ".word") [INFO] [stderr] 222 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:219:53 [INFO] [stderr] | [INFO] [stderr] 219 | &TokenType::Directive(ref directive) => match directive { [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 220 | | &DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] 221 | | &DirectiveType::Word => write!(f, ".word") [INFO] [stderr] 222 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 219 | &TokenType::Directive(ref directive) => match *directive { [INFO] [stderr] 220 | DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] 221 | DirectiveType::Word => write!(f, ".word") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:223:57 [INFO] [stderr] | [INFO] [stderr] 223 | &TokenType::Instruction(ref instruction) => match instruction { [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 224 | | &InstructionType::Add | [INFO] [stderr] 225 | | &InstructionType::AddImmediate => write!(f, "+"), [INFO] [stderr] 226 | | &InstructionType::And => write!(f, "&&"), [INFO] [stderr] ... | [INFO] [stderr] 250 | | &InstructionType::Subtract => write!(f, "-") [INFO] [stderr] 251 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 223 | &TokenType::Instruction(ref instruction) => match *instruction { [INFO] [stderr] 224 | InstructionType::Add | [INFO] [stderr] 225 | InstructionType::AddImmediate => write!(f, "+"), [INFO] [stderr] 226 | InstructionType::And => write!(f, "&&"), [INFO] [stderr] 227 | InstructionType::ConvertASCIIToInteger => write!(f, "A2I"), [INFO] [stderr] 228 | InstructionType::ConvertIntegerToASCII => write!(f, "I2A"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:255:51 [INFO] [stderr] | [INFO] [stderr] 255 | &TokenType::Register(ref register) => match register { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 256 | | &Register::FP => write!(f, "FP"), [INFO] [stderr] 257 | | &Register::IO => write!(f, "IO"), [INFO] [stderr] 258 | | &Register::PC => write!(f, "PC"), [INFO] [stderr] ... | [INFO] [stderr] 268 | | &Register::SP => write!(f, "SP") [INFO] [stderr] 269 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 255 | &TokenType::Register(ref register) => match *register { [INFO] [stderr] 256 | Register::FP => write!(f, "FP"), [INFO] [stderr] 257 | Register::IO => write!(f, "IO"), [INFO] [stderr] 258 | Register::PC => write!(f, "PC"), [INFO] [stderr] 259 | Register::Reg0 => write!(f, "reg_0"), [INFO] [stderr] 260 | Register::Reg1 => write!(f, "reg_1"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/tokenizer.rs:316:12 [INFO] [stderr] | [INFO] [stderr] 316 | if !file_stream.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `file_stream.is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokenizer.rs:334:12 [INFO] [stderr] | [INFO] [stderr] 334 | if self.newest_tokens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newest_tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:344:56 [INFO] [stderr] | [INFO] [stderr] 344 | if let Some(start_comment) = line.find("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokenizer.rs:347:20 [INFO] [stderr] | [INFO] [stderr] 347 | if line.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/vm.rs:232:44 [INFO] [stderr] | [INFO] [stderr] 232 | self.registers[register] = value as i32; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/vm.rs:241:44 [INFO] [stderr] | [INFO] [stderr] 241 | self.registers[register] = value as i32; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / match &self.cmd_type { [INFO] [stderr] 43 | | &CommandType::Instruction(InstructionType::Add) => { [INFO] [stderr] 44 | | match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => {} [INFO] [stderr] 52 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 42 | if let &CommandType::Instruction(InstructionType::Add) = &self.cmd_type { [INFO] [stderr] 43 | match &self.operand2.token_type { [INFO] [stderr] 44 | &TokenType::Integer(_) => { [INFO] [stderr] 45 | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 46 | }, [INFO] [stderr] 47 | _ => {} [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:42:13 [INFO] [stderr] | [INFO] [stderr] 42 | / match &self.cmd_type { [INFO] [stderr] 43 | | &CommandType::Instruction(InstructionType::Add) => { [INFO] [stderr] 44 | | match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] ... | [INFO] [stderr] 51 | | _ => {} [INFO] [stderr] 52 | | }; [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 42 | match self.cmd_type { [INFO] [stderr] 43 | CommandType::Instruction(InstructionType::Add) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/assembler.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | / match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] 46 | | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 47 | | }, [INFO] [stderr] 48 | | _ => {} [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 44 | if let &TokenType::Integer(_) = &self.operand2.token_type { [INFO] [stderr] 45 | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 46 | }; [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:44:21 [INFO] [stderr] | [INFO] [stderr] 44 | / match &self.operand2.token_type { [INFO] [stderr] 45 | | &TokenType::Integer(_) => { [INFO] [stderr] 46 | | new_type = CommandType::Instruction(InstructionType::AddImmediate); [INFO] [stderr] 47 | | }, [INFO] [stderr] 48 | | _ => {} [INFO] [stderr] 49 | | }; [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 44 | match self.operand2.token_type { [INFO] [stderr] 45 | TokenType::Integer(_) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match &self.cmd_type { [INFO] [stderr] 62 | | &CommandType::Directive(_) => self.is_directive_complete(), [INFO] [stderr] 63 | | &CommandType::Instruction(ref instruction) => [INFO] [stderr] 64 | | self.is_instruction_complete(&instruction), [INFO] [stderr] 65 | | _ => false [INFO] [stderr] 66 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 61 | match self.cmd_type { [INFO] [stderr] 62 | CommandType::Directive(_) => self.is_directive_complete(), [INFO] [stderr] 63 | CommandType::Instruction(ref instruction) => [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 70 | / match &self.cmd_type { [INFO] [stderr] 71 | | &CommandType::Directive(_) => match &self.operand1.token_type { [INFO] [stderr] 72 | | &TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | | &TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] ... | [INFO] [stderr] 105 | | &CommandType::Unknown => unreachable!() [INFO] [stderr] 106 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 70 | match self.cmd_type { [INFO] [stderr] 71 | CommandType::Directive(_) => match &self.operand1.token_type { [INFO] [stderr] 72 | &TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | &TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] 74 | _ => unreachable!() [INFO] [stderr] 75 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:71:43 [INFO] [stderr] | [INFO] [stderr] 71 | &CommandType::Directive(_) => match &self.operand1.token_type { [INFO] [stderr] | ___________________________________________^ [INFO] [stderr] 72 | | &TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | | &TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] 74 | | _ => unreachable!() [INFO] [stderr] 75 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 71 | &CommandType::Directive(_) => match self.operand1.token_type { [INFO] [stderr] 72 | TokenType::Character(c) => ByteCodeData::ByteDirective(c as u8), [INFO] [stderr] 73 | TokenType::Integer(val) => ByteCodeData::WordDirective(val as u16), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:79:29 [INFO] [stderr] | [INFO] [stderr] 79 | result[1] = match &self.operand1.token_type { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 80 | | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 81 | | &TokenType::Integer(val) => val, [INFO] [stderr] 82 | | &TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] ... | [INFO] [stderr] 89 | | _ => 0, [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 79 | result[1] = match self.operand1.token_type { [INFO] [stderr] 80 | TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 81 | TokenType::Integer(val) => val, [INFO] [stderr] 82 | TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] 83 | TokenType::Label(ref label) => match label_table.get(label) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/assembler.rs:80:49 [INFO] [stderr] | [INFO] [stderr] 80 | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from((c as u8))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/assembler.rs:84:41 [INFO] [stderr] | [INFO] [stderr] 84 | Some(offset) => offset.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*offset` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/assembler.rs:91:29 [INFO] [stderr] | [INFO] [stderr] 91 | result[2] = match &self.operand2.token_type { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 92 | | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 93 | | &TokenType::Integer(val) => val, [INFO] [stderr] 94 | | &TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] ... | [INFO] [stderr] 101 | | _ => 0, [INFO] [stderr] 102 | | }; [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 91 | result[2] = match self.operand2.token_type { [INFO] [stderr] 92 | TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] 93 | TokenType::Integer(val) => val, [INFO] [stderr] 94 | TokenType::Register(ref reg) => reg.to_bytecode(), [INFO] [stderr] 95 | TokenType::Label(ref label) => match label_table.get(label) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/assembler.rs:92:49 [INFO] [stderr] | [INFO] [stderr] 92 | &TokenType::Character(c) => (c as u8) as i32, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `i32::from((c as u8))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/assembler.rs:96:41 [INFO] [stderr] | [INFO] [stderr] 96 | Some(offset) => offset.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try dereferencing it: `*offset` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/assembler.rs:230:24 [INFO] [stderr] | [INFO] [stderr] 230 | pub fn to_commands(tokens: Tokenizer) -> (HashMap, Vec) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/assembler.rs:271:24 [INFO] [stderr] | [INFO] [stderr] 271 | pub fn to_bytecode(label_table: HashMap, commands: Vec) -> (usize, Vec) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syntax.rs:4:10 [INFO] [stderr] | [INFO] [stderr] 4 | Some(format!("Unexpected end of file")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Unexpected end of file".to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:16:9 [INFO] [stderr] | [INFO] [stderr] 16 | / match &t.token_type { [INFO] [stderr] 17 | | &TokenType::Label(_) => { [INFO] [stderr] 18 | | token = tokens.next(); [INFO] [stderr] 19 | | if !prev_label { [INFO] [stderr] ... | [INFO] [stderr] 40 | | } [INFO] [stderr] 41 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 16 | match t.token_type { [INFO] [stderr] 17 | TokenType::Label(_) => { [INFO] [stderr] 18 | token = tokens.next(); [INFO] [stderr] 19 | if !prev_label { [INFO] [stderr] 20 | prev_label = true; [INFO] [stderr] 21 | continue; [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:50:8 [INFO] [stderr] | [INFO] [stderr] 50 | if !next_token.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `next_token.is_none()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | / match directive { [INFO] [stderr] 55 | | &DirectiveType::Byte => { [INFO] [stderr] 56 | | match &next_token.token_type { [INFO] [stderr] 57 | | &TokenType::Character(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 66 | | } [INFO] [stderr] 67 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 54 | match *directive { [INFO] [stderr] 55 | DirectiveType::Byte => { [INFO] [stderr] 56 | match &next_token.token_type { [INFO] [stderr] 57 | &TokenType::Character(_) => None, [INFO] [stderr] 58 | _ => error_message("an ASCII character", &next_token) [INFO] [stderr] 59 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | / match &next_token.token_type { [INFO] [stderr] 57 | | &TokenType::Character(_) => None, [INFO] [stderr] 58 | | _ => error_message("an ASCII character", &next_token) [INFO] [stderr] 59 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 56 | match next_token.token_type { [INFO] [stderr] 57 | TokenType::Character(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | / match &next_token.token_type { [INFO] [stderr] 63 | | &TokenType::Integer(_) => None, [INFO] [stderr] 64 | | _ => error_message("an integer", &next_token) [INFO] [stderr] 65 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 62 | match next_token.token_type { [INFO] [stderr] 63 | TokenType::Integer(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:84:8 [INFO] [stderr] | [INFO] [stderr] 84 | if !next_token.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `next_token.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:120:16 [INFO] [stderr] | [INFO] [stderr] 120 | if !second_op.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `second_op.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:142:16 [INFO] [stderr] | [INFO] [stderr] 142 | if !second_op.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `second_op.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/syntax.rs:159:16 [INFO] [stderr] | [INFO] [stderr] 159 | if !second_op.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `second_op.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:72:5 [INFO] [stderr] | [INFO] [stderr] 72 | / match instruction { [INFO] [stderr] 73 | | &InstructionType::OutputASCII | [INFO] [stderr] 74 | | &InstructionType::OutputInteger | [INFO] [stderr] 75 | | &InstructionType::InputASCII | [INFO] [stderr] ... | [INFO] [stderr] 80 | | _ => {} [INFO] [stderr] 81 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 72 | match *instruction { [INFO] [stderr] 73 | InstructionType::OutputASCII | [INFO] [stderr] 74 | InstructionType::OutputInteger | [INFO] [stderr] 75 | InstructionType::InputASCII | [INFO] [stderr] 76 | InstructionType::InputInteger | [INFO] [stderr] 77 | InstructionType::ConvertASCIIToInteger | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:85:16 [INFO] [stderr] | [INFO] [stderr] 85 | return match instruction { [INFO] [stderr] | ________________^ [INFO] [stderr] 86 | | &InstructionType::OutputASCII | [INFO] [stderr] 87 | | &InstructionType::OutputInteger | [INFO] [stderr] 88 | | &InstructionType::InputASCII | [INFO] [stderr] ... | [INFO] [stderr] 93 | | _ => end_of_file() [INFO] [stderr] 94 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 85 | return match *instruction { [INFO] [stderr] 86 | InstructionType::OutputASCII | [INFO] [stderr] 87 | InstructionType::OutputInteger | [INFO] [stderr] 88 | InstructionType::InputASCII | [INFO] [stderr] 89 | InstructionType::InputInteger | [INFO] [stderr] 90 | InstructionType::ConvertASCIIToInteger | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/syntax.rs:97:5 [INFO] [stderr] | [INFO] [stderr] 97 | / match instruction { [INFO] [stderr] 98 | | &InstructionType::Jump => { [INFO] [stderr] 99 | | match &next_token.token_type { [INFO] [stderr] 100 | | &TokenType::Label(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 180 | | &InstructionType::End => None [INFO] [stderr] 181 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 97 | match *instruction { [INFO] [stderr] 98 | InstructionType::Jump => { [INFO] [stderr] 99 | match &next_token.token_type { [INFO] [stderr] 100 | &TokenType::Label(_) => None, [INFO] [stderr] 101 | _ => error_message("a label", &next_token) [INFO] [stderr] 102 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:99:13 [INFO] [stderr] | [INFO] [stderr] 99 | / match &next_token.token_type { [INFO] [stderr] 100 | | &TokenType::Label(_) => None, [INFO] [stderr] 101 | | _ => error_message("a label", &next_token) [INFO] [stderr] 102 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 99 | match next_token.token_type { [INFO] [stderr] 100 | TokenType::Label(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | / match &next_token.token_type { [INFO] [stderr] 106 | | &TokenType::Register(_) => None, [INFO] [stderr] 107 | | _ => error_message("a register", &next_token) [INFO] [stderr] 108 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 105 | match next_token.token_type { [INFO] [stderr] 106 | TokenType::Register(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | / match &next_token.token_type { [INFO] [stderr] 126 | | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] 127 | | &TokenType::Label(_) => None, [INFO] [stderr] 128 | | _ => error_message("a label", &second_op) [INFO] [stderr] 129 | | }, [INFO] [stderr] 130 | | _ => error_message("a register", &next_token) [INFO] [stderr] 131 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 125 | match next_token.token_type { [INFO] [stderr] 126 | TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:126:44 [INFO] [stderr] | [INFO] [stderr] 126 | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 127 | | &TokenType::Label(_) => None, [INFO] [stderr] 128 | | _ => error_message("a label", &second_op) [INFO] [stderr] 129 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 126 | &TokenType::Register(_) => match second_op.token_type { [INFO] [stderr] 127 | TokenType::Label(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:147:13 [INFO] [stderr] | [INFO] [stderr] 147 | / match &next_token.token_type { [INFO] [stderr] 148 | | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] 149 | | &TokenType::Register(_) => None, [INFO] [stderr] 150 | | _ => error_message("a register", &second_op) [INFO] [stderr] 151 | | }, [INFO] [stderr] 152 | | _ => error_message("a register", &next_token) [INFO] [stderr] 153 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 147 | match next_token.token_type { [INFO] [stderr] 148 | TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:148:44 [INFO] [stderr] | [INFO] [stderr] 148 | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 149 | | &TokenType::Register(_) => None, [INFO] [stderr] 150 | | _ => error_message("a register", &second_op) [INFO] [stderr] 151 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 148 | &TokenType::Register(_) => match second_op.token_type { [INFO] [stderr] 149 | TokenType::Register(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:164:13 [INFO] [stderr] | [INFO] [stderr] 164 | / match &next_token.token_type { [INFO] [stderr] 165 | | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] 166 | | &TokenType::Register(_) | [INFO] [stderr] 167 | | &TokenType::Integer(_) => None, [INFO] [stderr] ... | [INFO] [stderr] 170 | | _ => error_message("a register", &next_token) [INFO] [stderr] 171 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 164 | match next_token.token_type { [INFO] [stderr] 165 | TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/syntax.rs:165:44 [INFO] [stderr] | [INFO] [stderr] 165 | &TokenType::Register(_) => match &second_op.token_type { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 166 | | &TokenType::Register(_) | [INFO] [stderr] 167 | | &TokenType::Integer(_) => None, [INFO] [stderr] 168 | | _ => error_message("a register or an integer", &second_op) [INFO] [stderr] 169 | | }, [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 165 | &TokenType::Register(_) => match second_op.token_type { [INFO] [stderr] 166 | TokenType::Register(_) | [INFO] [stderr] 167 | TokenType::Integer(_) => None, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:20:9 [INFO] [stderr] | [INFO] [stderr] 20 | / match self { [INFO] [stderr] 21 | | &DirectiveType::Byte => 0, [INFO] [stderr] 22 | | &DirectiveType::Word => 1 [INFO] [stderr] 23 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 20 | match *self { [INFO] [stderr] 21 | DirectiveType::Byte => 0, [INFO] [stderr] 22 | DirectiveType::Word => 1 [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | / match self { [INFO] [stderr] 74 | | &InstructionType::End => 2, [INFO] [stderr] 75 | | &InstructionType::OutputInteger => 3, [INFO] [stderr] 76 | | &InstructionType::InputInteger => 4, [INFO] [stderr] ... | [INFO] [stderr] 105 | | &InstructionType::Compare => 28 [INFO] [stderr] 106 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 73 | match *self { [INFO] [stderr] 74 | InstructionType::End => 2, [INFO] [stderr] 75 | InstructionType::OutputInteger => 3, [INFO] [stderr] 76 | InstructionType::InputInteger => 4, [INFO] [stderr] 77 | InstructionType::OutputASCII => 5, [INFO] [stderr] 78 | InstructionType::InputASCII => 6, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:167:9 [INFO] [stderr] | [INFO] [stderr] 167 | / match self { [INFO] [stderr] 168 | | &Register::Reg0 => 0, [INFO] [stderr] 169 | | &Register::Reg1 => 1, [INFO] [stderr] 170 | | &Register::Reg2 => 2, [INFO] [stderr] ... | [INFO] [stderr] 180 | | &Register::SB => 12, [INFO] [stderr] 181 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 167 | match *self { [INFO] [stderr] 168 | Register::Reg0 => 0, [INFO] [stderr] 169 | Register::Reg1 => 1, [INFO] [stderr] 170 | Register::Reg2 => 2, [INFO] [stderr] 171 | Register::Reg3 => 3, [INFO] [stderr] 172 | Register::Reg4 => 4, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | / match self { [INFO] [stderr] 218 | | &TokenType::Character(ref str) => write!(f, "{}", str), [INFO] [stderr] 219 | | &TokenType::Directive(ref directive) => match directive { [INFO] [stderr] 220 | | &DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] ... | [INFO] [stderr] 269 | | } [INFO] [stderr] 270 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 217 | match *self { [INFO] [stderr] 218 | TokenType::Character(ref str) => write!(f, "{}", str), [INFO] [stderr] 219 | TokenType::Directive(ref directive) => match directive { [INFO] [stderr] 220 | &DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] 221 | &DirectiveType::Word => write!(f, ".word") [INFO] [stderr] 222 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:219:53 [INFO] [stderr] | [INFO] [stderr] 219 | &TokenType::Directive(ref directive) => match directive { [INFO] [stderr] | _____________________________________________________^ [INFO] [stderr] 220 | | &DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] 221 | | &DirectiveType::Word => write!(f, ".word") [INFO] [stderr] 222 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 219 | &TokenType::Directive(ref directive) => match *directive { [INFO] [stderr] 220 | DirectiveType::Byte => write!(f, ".byte"), [INFO] [stderr] 221 | DirectiveType::Word => write!(f, ".word") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:223:57 [INFO] [stderr] | [INFO] [stderr] 223 | &TokenType::Instruction(ref instruction) => match instruction { [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 224 | | &InstructionType::Add | [INFO] [stderr] 225 | | &InstructionType::AddImmediate => write!(f, "+"), [INFO] [stderr] 226 | | &InstructionType::And => write!(f, "&&"), [INFO] [stderr] ... | [INFO] [stderr] 250 | | &InstructionType::Subtract => write!(f, "-") [INFO] [stderr] 251 | | }, [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 223 | &TokenType::Instruction(ref instruction) => match *instruction { [INFO] [stderr] 224 | InstructionType::Add | [INFO] [stderr] 225 | InstructionType::AddImmediate => write!(f, "+"), [INFO] [stderr] 226 | InstructionType::And => write!(f, "&&"), [INFO] [stderr] 227 | InstructionType::ConvertASCIIToInteger => write!(f, "A2I"), [INFO] [stderr] 228 | InstructionType::ConvertIntegerToASCII => write!(f, "I2A"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/tokenizer.rs:255:51 [INFO] [stderr] | [INFO] [stderr] 255 | &TokenType::Register(ref register) => match register { [INFO] [stderr] | ___________________________________________________^ [INFO] [stderr] 256 | | &Register::FP => write!(f, "FP"), [INFO] [stderr] 257 | | &Register::IO => write!(f, "IO"), [INFO] [stderr] 258 | | &Register::PC => write!(f, "PC"), [INFO] [stderr] ... | [INFO] [stderr] 268 | | &Register::SP => write!(f, "SP") [INFO] [stderr] 269 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 255 | &TokenType::Register(ref register) => match *register { [INFO] [stderr] 256 | Register::FP => write!(f, "FP"), [INFO] [stderr] 257 | Register::IO => write!(f, "IO"), [INFO] [stderr] 258 | Register::PC => write!(f, "PC"), [INFO] [stderr] 259 | Register::Reg0 => write!(f, "reg_0"), [INFO] [stderr] 260 | Register::Reg1 => write!(f, "reg_1"), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/tokenizer.rs:316:12 [INFO] [stderr] | [INFO] [stderr] 316 | if !file_stream.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `file_stream.is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokenizer.rs:334:12 [INFO] [stderr] | [INFO] [stderr] 334 | if self.newest_tokens.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.newest_tokens.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/tokenizer.rs:344:56 [INFO] [stderr] | [INFO] [stderr] 344 | if let Some(start_comment) = line.find("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/tokenizer.rs:347:20 [INFO] [stderr] | [INFO] [stderr] 347 | if line.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `line.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u8 to i32 may become silently lossy if types change [INFO] [stderr] --> src/vm.rs:232:44 [INFO] [stderr] | [INFO] [stderr] 232 | self.registers[register] = value as i32; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u16 to i32 may become silently lossy if types change [INFO] [stderr] --> src/vm.rs:241:44 [INFO] [stderr] | [INFO] [stderr] 241 | self.registers[register] = value as i32; [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `i32::from(value)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 1.24s [INFO] running `"docker" "inspect" "a2fa43bbff659ec096e8f4ceefc33c21292c71f9d3b26764f889707426bae56f"` [INFO] running `"docker" "rm" "-f" "a2fa43bbff659ec096e8f4ceefc33c21292c71f9d3b26764f889707426bae56f"` [INFO] [stdout] a2fa43bbff659ec096e8f4ceefc33c21292c71f9d3b26764f889707426bae56f