[INFO] updating cached repository Lagoja/rust_hack_virtualmachine [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Lagoja/rust_hack_virtualmachine [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Lagoja/rust_hack_virtualmachine" "work/ex/clippy-test-run/sources/stable/gh/Lagoja/rust_hack_virtualmachine"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Lagoja/rust_hack_virtualmachine'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Lagoja/rust_hack_virtualmachine" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Lagoja/rust_hack_virtualmachine"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Lagoja/rust_hack_virtualmachine'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] e216f73230ff8ff824f355a0ef5a98fc92842730 [INFO] sha for GitHub repo Lagoja/rust_hack_virtualmachine: e216f73230ff8ff824f355a0ef5a98fc92842730 [INFO] validating manifest of Lagoja/rust_hack_virtualmachine 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 Lagoja/rust_hack_virtualmachine 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 Lagoja/rust_hack_virtualmachine [INFO] finished frobbing Lagoja/rust_hack_virtualmachine [INFO] frobbed toml for Lagoja/rust_hack_virtualmachine written to work/ex/clippy-test-run/sources/stable/gh/Lagoja/rust_hack_virtualmachine/Cargo.toml [INFO] started frobbing Lagoja/rust_hack_virtualmachine [INFO] finished frobbing Lagoja/rust_hack_virtualmachine [INFO] frobbed toml for Lagoja/rust_hack_virtualmachine written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Lagoja/rust_hack_virtualmachine/Cargo.toml [INFO] crate Lagoja/rust_hack_virtualmachine 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 Lagoja/rust_hack_virtualmachine against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Lagoja/rust_hack_virtualmachine:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] fd519dfb6c112700ce60320135efd650c5d3afc79d332d79803fc1200349cdb6 [INFO] running `"docker" "start" "-a" "fd519dfb6c112700ce60320135efd650c5d3afc79d332d79803fc1200349cdb6"` [INFO] [stderr] Checking memchr v2.0.2 [INFO] [stderr] Checking aho-corasick v0.6.8 [INFO] [stderr] Checking regex v1.0.5 [INFO] [stderr] Checking rusthackvm v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lib/parser.rs:152:22 [INFO] [stderr] | [INFO] [stderr] 152 | _ => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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/lib/parser.rs:152:22 [INFO] [stderr] | [INFO] [stderr] 152 | _ => return None, [INFO] [stderr] | ^^^^^^^^^^^ help: remove `return` as shown: `None` [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: method is never used: `add_rule` [INFO] [stderr] --> src/lib/tokenizer.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn add_rule(&mut self, match_rule: MatchRule) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_free_address` [INFO] [stderr] --> src/lib/symbol_table.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | pub fn get_free_address(&self) -> u16 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib/parser.rs:52:37 [INFO] [stderr] | [INFO] [stderr] 52 | let token_list: TokenList = self.tokens.get(self.next_command as usize).unwrap().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.tokens[self.next_command as usize]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/parser.rs:143:30 [INFO] [stderr] | [INFO] [stderr] 143 | segment: String::from(arg1.token.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `arg1.token.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/parser.rs:148:30 [INFO] [stderr] | [INFO] [stderr] 148 | segment: String::from(arg1.token.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `arg1.token.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | String::from(format!("@{}.{}\nA=M\n", class_name, index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}.{}\nA=M\n", class_name, index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | String::from(format!("@{}\nA=M\n", addr + index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}\nA=M\n", addr + index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | String::from(format!("@{}.{}\nM=D\n", class_name, index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}.{}\nM=D\n", class_name, index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:124:25 [INFO] [stderr] | [INFO] [stderr] 124 | String::from(format!("@{}\nM=D\n", addr + index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}\nM=D\n", addr + index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | String::from(out) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `out` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:238:23 [INFO] [stderr] | [INFO] [stderr] 238 | out.push_str(&format!("D=D+M\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=D+M\n".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: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:245:23 [INFO] [stderr] | [INFO] [stderr] 245 | out.push_str(&format!("D=D&M\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=D&M\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:252:23 [INFO] [stderr] | [INFO] [stderr] 252 | out.push_str(&format!("D=D|M\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=D|M\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:259:23 [INFO] [stderr] | [INFO] [stderr] 259 | out.push_str(&format!("D=M-D\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=M-D\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:266:23 [INFO] [stderr] | [INFO] [stderr] 266 | out.push_str(&format!("D=!D\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=!D\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:273:23 [INFO] [stderr] | [INFO] [stderr] 273 | out.push_str(&format!("D=-D\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=-D\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:112:55 [INFO] [stderr] | [INFO] [stderr] 112 | MatchRule::new(TokenType::Comment, Regex::new(r"^//").unwrap(), false), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivial_regex)] on by default [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:114:52 [INFO] [stderr] | [INFO] [stderr] 114 | MatchRule::new(TokenType::Push, Regex::new(r"^push").unwrap(), true), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:115:51 [INFO] [stderr] | [INFO] [stderr] 115 | MatchRule::new(TokenType::Pop, Regex::new(r"^pop").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:117:51 [INFO] [stderr] | [INFO] [stderr] 117 | MatchRule::new(TokenType::Add, Regex::new(r"^add").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:118:56 [INFO] [stderr] | [INFO] [stderr] 118 | MatchRule::new(TokenType::Subtract, Regex::new(r"^sub").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:119:54 [INFO] [stderr] | [INFO] [stderr] 119 | MatchRule::new(TokenType::Negate, Regex::new(r"^neg").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:120:53 [INFO] [stderr] | [INFO] [stderr] 120 | MatchRule::new(TokenType::Equal, Regex::new(r"^eq").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:121:59 [INFO] [stderr] | [INFO] [stderr] 121 | MatchRule::new(TokenType::GreaterThan, Regex::new(r"^gt").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:122:56 [INFO] [stderr] | [INFO] [stderr] 122 | MatchRule::new(TokenType::LessThan, Regex::new(r"^lt").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:123:51 [INFO] [stderr] | [INFO] [stderr] 123 | MatchRule::new(TokenType::And, Regex::new(r"^and").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:124:50 [INFO] [stderr] | [INFO] [stderr] 124 | MatchRule::new(TokenType::Or, Regex::new(r"^or").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:125:51 [INFO] [stderr] | [INFO] [stderr] 125 | MatchRule::new(TokenType::Not, Regex::new(r"^not").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:127:53 [INFO] [stderr] | [INFO] [stderr] 127 | MatchRule::new(TokenType::Label, Regex::new(r"^label").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:128:50 [INFO] [stderr] | [INFO] [stderr] 128 | MatchRule::new(TokenType::If, Regex::new(r"^if-goto").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:129:52 [INFO] [stderr] | [INFO] [stderr] 129 | MatchRule::new(TokenType::Goto, Regex::new(r"^goto").unwrap(), true), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:130:56 [INFO] [stderr] | [INFO] [stderr] 130 | MatchRule::new(TokenType::Function, Regex::new(r"^function").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:131:52 [INFO] [stderr] | [INFO] [stderr] 131 | MatchRule::new(TokenType::Call, Regex::new(r"^call").unwrap(), true), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:132:54 [INFO] [stderr] | [INFO] [stderr] 132 | MatchRule::new(TokenType::Return, Regex::new(r"^return").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/vm.rs:41:23 [INFO] [stderr] | [INFO] [stderr] 41 | let outfile = PathBuf::from(of.with_extension("asm")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `of.with_extension("asm")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib/vm.rs:43:37 [INFO] [stderr] | [INFO] [stderr] 43 | let filevec: Vec = match path.is_dir() { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 44 | | true => get_vmfiles_in_path(path)?, [INFO] [stderr] 45 | | false => match &path.extension() { [INFO] [stderr] 46 | | Some(x) => { [INFO] [stderr] ... | [INFO] [stderr] 55 | | }, [INFO] [stderr] 56 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 43 | let filevec: Vec = if path.is_dir() { get_vmfiles_in_path(path)? } else { match &path.extension() { [INFO] [stderr] 44 | Some(x) => { [INFO] [stderr] 45 | if x.to_str().unwrap() == "vm" { [INFO] [stderr] 46 | println!("Adding File: {}", path.to_str().unwrap()); [INFO] [stderr] 47 | vec![path.clone()] [INFO] [stderr] 48 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: method is never used: `new` [INFO] [stderr] --> src/lib/parser.rs:27:5 [INFO] [stderr] | [INFO] [stderr] 27 | pub fn new() -> Parser { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: method is never used: `add_rule` [INFO] [stderr] --> src/lib/tokenizer.rs:83:5 [INFO] [stderr] | [INFO] [stderr] 83 | pub fn add_rule(&mut self, match_rule: MatchRule) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `contains` [INFO] [stderr] --> src/lib/symbol_table.rs:43:5 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn contains(&self, symbol: &str) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method is never used: `get_free_address` [INFO] [stderr] --> src/lib/symbol_table.rs:51:5 [INFO] [stderr] | [INFO] [stderr] 51 | pub fn get_free_address(&self) -> u16 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib/parser.rs:52:37 [INFO] [stderr] | [INFO] [stderr] 52 | let token_list: TokenList = self.tokens.get(self.next_command as usize).unwrap().to_vec(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `self.tokens[self.next_command as usize]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/parser.rs:143:30 [INFO] [stderr] | [INFO] [stderr] 143 | segment: String::from(arg1.token.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `arg1.token.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/parser.rs:148:30 [INFO] [stderr] | [INFO] [stderr] 148 | segment: String::from(arg1.token.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `arg1.token.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:67:17 [INFO] [stderr] | [INFO] [stderr] 67 | String::from(format!("@{}.{}\nA=M\n", class_name, index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}.{}\nA=M\n", class_name, index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | String::from(format!("@{}\nA=M\n", addr + index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}\nA=M\n", addr + index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:106:17 [INFO] [stderr] | [INFO] [stderr] 106 | String::from(format!("@{}.{}\nM=D\n", class_name, index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}.{}\nM=D\n", class_name, index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:124:25 [INFO] [stderr] | [INFO] [stderr] 124 | String::from(format!("@{}\nM=D\n", addr + index)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `format!("@{}\nM=D\n", addr + index)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/writer.rs:233:9 [INFO] [stderr] | [INFO] [stderr] 233 | String::from(out) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider removing `String::from()`: `out` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:238:23 [INFO] [stderr] | [INFO] [stderr] 238 | out.push_str(&format!("D=D+M\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=D+M\n".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: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:245:23 [INFO] [stderr] | [INFO] [stderr] 245 | out.push_str(&format!("D=D&M\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=D&M\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:252:23 [INFO] [stderr] | [INFO] [stderr] 252 | out.push_str(&format!("D=D|M\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=D|M\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:259:23 [INFO] [stderr] | [INFO] [stderr] 259 | out.push_str(&format!("D=M-D\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=M-D\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:266:23 [INFO] [stderr] | [INFO] [stderr] 266 | out.push_str(&format!("D=!D\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=!D\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib/writer.rs:273:23 [INFO] [stderr] | [INFO] [stderr] 273 | out.push_str(&format!("D=-D\n")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"D=-D\n".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:112:55 [INFO] [stderr] | [INFO] [stderr] 112 | MatchRule::new(TokenType::Comment, Regex::new(r"^//").unwrap(), false), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivial_regex)] on by default [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:114:52 [INFO] [stderr] | [INFO] [stderr] 114 | MatchRule::new(TokenType::Push, Regex::new(r"^push").unwrap(), true), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:115:51 [INFO] [stderr] | [INFO] [stderr] 115 | MatchRule::new(TokenType::Pop, Regex::new(r"^pop").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:117:51 [INFO] [stderr] | [INFO] [stderr] 117 | MatchRule::new(TokenType::Add, Regex::new(r"^add").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:118:56 [INFO] [stderr] | [INFO] [stderr] 118 | MatchRule::new(TokenType::Subtract, Regex::new(r"^sub").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:119:54 [INFO] [stderr] | [INFO] [stderr] 119 | MatchRule::new(TokenType::Negate, Regex::new(r"^neg").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:120:53 [INFO] [stderr] | [INFO] [stderr] 120 | MatchRule::new(TokenType::Equal, Regex::new(r"^eq").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:121:59 [INFO] [stderr] | [INFO] [stderr] 121 | MatchRule::new(TokenType::GreaterThan, Regex::new(r"^gt").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:122:56 [INFO] [stderr] | [INFO] [stderr] 122 | MatchRule::new(TokenType::LessThan, Regex::new(r"^lt").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:123:51 [INFO] [stderr] | [INFO] [stderr] 123 | MatchRule::new(TokenType::And, Regex::new(r"^and").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:124:50 [INFO] [stderr] | [INFO] [stderr] 124 | MatchRule::new(TokenType::Or, Regex::new(r"^or").unwrap(), true), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:125:51 [INFO] [stderr] | [INFO] [stderr] 125 | MatchRule::new(TokenType::Not, Regex::new(r"^not").unwrap(), true), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:127:53 [INFO] [stderr] | [INFO] [stderr] 127 | MatchRule::new(TokenType::Label, Regex::new(r"^label").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:128:50 [INFO] [stderr] | [INFO] [stderr] 128 | MatchRule::new(TokenType::If, Regex::new(r"^if-goto").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:129:52 [INFO] [stderr] | [INFO] [stderr] 129 | MatchRule::new(TokenType::Goto, Regex::new(r"^goto").unwrap(), true), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:130:56 [INFO] [stderr] | [INFO] [stderr] 130 | MatchRule::new(TokenType::Function, Regex::new(r"^function").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:131:52 [INFO] [stderr] | [INFO] [stderr] 131 | MatchRule::new(TokenType::Call, Regex::new(r"^call").unwrap(), true), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: trivial regex [INFO] [stderr] --> src/lib/tokenizer.rs:132:54 [INFO] [stderr] | [INFO] [stderr] 132 | MatchRule::new(TokenType::Return, Regex::new(r"^return").unwrap(), true), [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: consider using `str::starts_with` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivial_regex [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/lib/vm.rs:41:23 [INFO] [stderr] | [INFO] [stderr] 41 | let outfile = PathBuf::from(of.with_extension("asm")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `PathBuf::from()`: `of.with_extension("asm")` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/lib/vm.rs:43:37 [INFO] [stderr] | [INFO] [stderr] 43 | let filevec: Vec = match path.is_dir() { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 44 | | true => get_vmfiles_in_path(path)?, [INFO] [stderr] 45 | | false => match &path.extension() { [INFO] [stderr] 46 | | Some(x) => { [INFO] [stderr] ... | [INFO] [stderr] 55 | | }, [INFO] [stderr] 56 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 43 | let filevec: Vec = if path.is_dir() { get_vmfiles_in_path(path)? } else { match &path.extension() { [INFO] [stderr] 44 | Some(x) => { [INFO] [stderr] 45 | if x.to_str().unwrap() == "vm" { [INFO] [stderr] 46 | println!("Adding File: {}", path.to_str().unwrap()); [INFO] [stderr] 47 | vec![path.clone()] [INFO] [stderr] 48 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 6.46s [INFO] running `"docker" "inspect" "fd519dfb6c112700ce60320135efd650c5d3afc79d332d79803fc1200349cdb6"` [INFO] running `"docker" "rm" "-f" "fd519dfb6c112700ce60320135efd650c5d3afc79d332d79803fc1200349cdb6"` [INFO] [stdout] fd519dfb6c112700ce60320135efd650c5d3afc79d332d79803fc1200349cdb6