[INFO] updating cached repository hvze/pill [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/hvze/pill [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/hvze/pill" "work/ex/clippy-test-run/sources/stable/gh/hvze/pill"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/hvze/pill'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/hvze/pill" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hvze/pill"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hvze/pill'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0d12f3618cb0bf44a7293b33fad8e34dce4a8885 [INFO] sha for GitHub repo hvze/pill: 0d12f3618cb0bf44a7293b33fad8e34dce4a8885 [INFO] validating manifest of hvze/pill 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 hvze/pill 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 hvze/pill [INFO] finished frobbing hvze/pill [INFO] frobbed toml for hvze/pill written to work/ex/clippy-test-run/sources/stable/gh/hvze/pill/Cargo.toml [INFO] started frobbing hvze/pill [INFO] finished frobbing hvze/pill [INFO] frobbed toml for hvze/pill written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/hvze/pill/Cargo.toml [INFO] crate hvze/pill 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 hvze/pill against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/hvze/pill:/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] d5d60e4381d8bf136b2dd328ed7c4cec1466aca3399b3d227f2d2b54558d3453 [INFO] running `"docker" "start" "-a" "d5d60e4381d8bf136b2dd328ed7c4cec1466aca3399b3d227f2d2b54558d3453"` [INFO] [stderr] Checking enum-set v0.0.7 [INFO] [stderr] Compiling bzip2-sys v0.1.6 [INFO] [stderr] Compiling xattr v0.1.11 [INFO] [stderr] Compiling filetime v0.1.14 [INFO] [stderr] Checking rand v0.4.2 [INFO] [stderr] Checking textwrap v0.6.0 [INFO] [stderr] Checking clap v2.25.0 [INFO] [stderr] Compiling tar v0.4.13 [INFO] [stderr] Compiling bzip2 v0.3.2 [INFO] [stderr] Checking rand v0.3.22 [INFO] [stderr] Compiling libpcre-sys v0.2.2 [INFO] [stderr] Checking tempfile v2.2.0 [INFO] [stderr] Checking gag v0.1.9 [INFO] [stderr] warning: redundant linker flag specified for library `pcre` [INFO] [stderr] [INFO] [stderr] Checking pcre v0.2.3 [INFO] [stderr] Checking pill v0.1.8 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | return Some(line.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(line.to_string())` [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: unnecessary parentheses around method argument [INFO] [stderr] --> src/interpreter.rs:478:53 [INFO] [stderr] | [INFO] [stderr] 478 | let error_rh = rh.new_by(-(nls as i32), ((-rh.column) + code.len() as i32)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/interpreter.rs:744:21 [INFO] [stderr] | [INFO] [stderr] 744 | / if !x.is_whitespace() { [INFO] [stderr] 745 | | if x == REGISTER_DEF { [INFO] [stderr] 746 | | has_found_registers = true; [INFO] [stderr] 747 | | while iter.peek().is_some() && *iter.peek().unwrap() != NEWLINE { [INFO] [stderr] ... | [INFO] [stderr] 764 | | } [INFO] [stderr] 765 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 744 | if !x.is_whitespace() && x == REGISTER_DEF { [INFO] [stderr] 745 | has_found_registers = true; [INFO] [stderr] 746 | while iter.peek().is_some() && *iter.peek().unwrap() != NEWLINE { [INFO] [stderr] 747 | let register_name = traverse_read( [INFO] [stderr] 748 | &mut head, [INFO] [stderr] 749 | read_until(iter.by_ref(), vec![DEF_END]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/interpreter.rs:796:20 [INFO] [stderr] | [INFO] [stderr] 796 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 797 | | if !self.quiet { [INFO] [stderr] 798 | | println!("Encountered an error therefore any calculations of time are voided."); [INFO] [stderr] 799 | | } [INFO] [stderr] 800 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 796 | } else if !self.quiet { [INFO] [stderr] 797 | println!("Encountered an error therefore any calculations of time are voided."); [INFO] [stderr] 798 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/opcodes.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | return registers.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `registers.unwrap().iter().find(|x| x.identifier == *name).is_some()` [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: unneeded return statement [INFO] [stderr] --> src/opcodes.rs:145:17 [INFO] [stderr] | [INFO] [stderr] 145 | return scope.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `scope.unwrap().iter().find(|x| x.identifier == *name).is_some()` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/main.rs:108:43 [INFO] [stderr] | [INFO] [stderr] 108 | let err_tail = repeat((xstr.len() as i32 - head.column), '-'); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/interpreter.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | return Some(line.to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(line.to_string())` [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: unnecessary parentheses around method argument [INFO] [stderr] --> src/interpreter.rs:478:53 [INFO] [stderr] | [INFO] [stderr] 478 | let error_rh = rh.new_by(-(nls as i32), ((-rh.column) + code.len() as i32)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/interpreter.rs:744:21 [INFO] [stderr] | [INFO] [stderr] 744 | / if !x.is_whitespace() { [INFO] [stderr] 745 | | if x == REGISTER_DEF { [INFO] [stderr] 746 | | has_found_registers = true; [INFO] [stderr] 747 | | while iter.peek().is_some() && *iter.peek().unwrap() != NEWLINE { [INFO] [stderr] ... | [INFO] [stderr] 764 | | } [INFO] [stderr] 765 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 744 | if !x.is_whitespace() && x == REGISTER_DEF { [INFO] [stderr] 745 | has_found_registers = true; [INFO] [stderr] 746 | while iter.peek().is_some() && *iter.peek().unwrap() != NEWLINE { [INFO] [stderr] 747 | let register_name = traverse_read( [INFO] [stderr] 748 | &mut head, [INFO] [stderr] 749 | read_until(iter.by_ref(), vec![DEF_END]), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/interpreter.rs:796:20 [INFO] [stderr] | [INFO] [stderr] 796 | } else { [INFO] [stderr] | ____________________^ [INFO] [stderr] 797 | | if !self.quiet { [INFO] [stderr] 798 | | println!("Encountered an error therefore any calculations of time are voided."); [INFO] [stderr] 799 | | } [INFO] [stderr] 800 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 796 | } else if !self.quiet { [INFO] [stderr] 797 | println!("Encountered an error therefore any calculations of time are voided."); [INFO] [stderr] 798 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/opcodes.rs:143:17 [INFO] [stderr] | [INFO] [stderr] 143 | return registers.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `registers.unwrap().iter().find(|x| x.identifier == *name).is_some()` [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: unneeded return statement [INFO] [stderr] --> src/opcodes.rs:145:17 [INFO] [stderr] | [INFO] [stderr] 145 | return scope.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `scope.unwrap().iter().find(|x| x.identifier == *name).is_some()` [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: unnecessary parentheses around function argument [INFO] [stderr] --> src/main.rs:108:43 [INFO] [stderr] | [INFO] [stderr] 108 | let err_tail = repeat((xstr.len() as i32 - head.column), '-'); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/interpreter.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | if self.head.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `self.head?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/interpreter.rs:177:27 [INFO] [stderr] | [INFO] [stderr] 177 | fn fmt_rh(rh: &ReadHead) -> String { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `ReadHead` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/interpreter.rs:264:19 [INFO] [stderr] | [INFO] [stderr] 264 | fn new_by(&self, line: i32, col: i32) -> ReadHead { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/interpreter.rs:300:24 [INFO] [stderr] | [INFO] [stderr] 300 | value: 0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [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: this creates an owned instance just for comparison [INFO] [stderr] --> src/interpreter.rs:321:82 [INFO] [stderr] | [INFO] [stderr] 321 | let res_var = c_scope.iter().find(|x| x.identifier.to_lowercase() == String::from("res")).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `"res"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter.rs:365:20 [INFO] [stderr] | [INFO] [stderr] 365 | fn newlines(x: &String) -> i32 { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/interpreter.rs:381:9 [INFO] [stderr] | [INFO] [stderr] 381 | data.chars().find(|x| exists.contains(x)).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|x| exists.contains(x)).is_some()` with `any(|x| exists.contains(x))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter.rs:470:91 [INFO] [stderr] | [INFO] [stderr] 470 | fn parse_code(&self, file: EnhancedFile, rh: ReadHead, inst: &Instruction, insts: &Vec, code: String) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Instruction]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:505:36 [INFO] [stderr] | [INFO] [stderr] 505 | if arg.starts_with("\"") && arg.ends_with("\"") { [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: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:505:59 [INFO] [stderr] | [INFO] [stderr] 505 | if arg.starts_with("\"") && arg.ends_with("\"") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/interpreter.rs:523:32 [INFO] [stderr] | [INFO] [stderr] 523 | let expected = exp_args[i].clone().into(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `exp_args[i].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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/interpreter.rs:524:21 [INFO] [stderr] | [INFO] [stderr] 524 | let ref argument = data[i + 1].to_string(); [INFO] [stderr] | ----^^^^^^^^^^^^--------------------------- help: try: `let argument = &data[i + 1].to_string();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:532:50 [INFO] [stderr] | [INFO] [stderr] 532 | if !a_clone.contains(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [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: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:542:46 [INFO] [stderr] | [INFO] [stderr] 542 | if !a_clone.contains(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [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: redundant closure found [INFO] [stderr] --> src/interpreter.rs:641:38 [INFO] [stderr] | [INFO] [stderr] 641 | .map(|x: &str| String::from(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:640:40 [INFO] [stderr] | [INFO] [stderr] 640 | .split(" ") [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/interpreter.rs:679:80 [INFO] [stderr] | [INFO] [stderr] 679 | let res = self.parse_code(file.unsafe_clone(), head.clone(), &cur_inst, &self.instructions, code.clone()); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [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: length comparison to zero [INFO] [stderr] --> src/interpreter.rs:705:16 [INFO] [stderr] | [INFO] [stderr] 705 | if self.instructions.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.instructions.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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/opcodes.rs:39:40 [INFO] [stderr] | [INFO] [stderr] 39 | ExpressionType::IntegerLiteral(0 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/opcodes.rs:119:44 [INFO] [stderr] | [INFO] [stderr] 119 | fn instruction_exists(&self, name: &String, insts: Vec) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/opcodes.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | insts.iter().find(|x| x.name == *name).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|x| x.name == *name).is_some()` with `any(|x| x.name == *name)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/opcodes.rs:123:113 [INFO] [stderr] | [INFO] [stderr] 123 | fn get_absolute_value(&self, file: EnhancedFile, rh_err: ReadHead, ei: &Either, registers: &Vec, scope: &mut Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Register]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/opcodes.rs:143:24 [INFO] [stderr] | [INFO] [stderr] 143 | return registers.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|x| x.identifier == *name).is_some()` with `any(|x| x.identifier == *name)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/opcodes.rs:145:24 [INFO] [stderr] | [INFO] [stderr] 145 | return scope.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|x| x.identifier == *name).is_some()` with `any(|x| x.identifier == *name)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/opcodes.rs:148:64 [INFO] [stderr] | [INFO] [stderr] 148 | fn g_register_exists(&self, name: String, g_registers: &Vec) -> bool { self.register_exists(name, true, Some(g_registers), None) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Register]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 60 [INFO] [stderr] --> src/opcodes.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | / pub fn execute(&self, file: EnhancedFile, debug: bool, registers: &mut Vec, mut o_insts: Vec, scope: &mut Vec) -> Result<(), AdvancedIllError> { [INFO] [stderr] 153 | | let rh_err: ReadHead = self.location.unwrap().clone(); [INFO] [stderr] 154 | | let rh_err_o: Option = Some(rh_err); [INFO] [stderr] 155 | | fn get_and_execute(file: EnhancedFile, name: &String, debug: bool, registers: &mut Vec, mut insts: Vec, scope: &mut Vec) -> Result { [INFO] [stderr] ... | [INFO] [stderr] 631 | | Ok(()) [INFO] [stderr] 632 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/opcodes.rs:153:36 [INFO] [stderr] | [INFO] [stderr] 153 | let rh_err: ReadHead = self.location.unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.location.unwrap()` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/opcodes.rs:155:58 [INFO] [stderr] | [INFO] [stderr] 155 | fn get_and_execute(file: EnhancedFile, name: &String, debug: bool, registers: &mut Vec, mut insts: Vec, scope: &mut Vec) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/opcodes.rs:343:47 [INFO] [stderr] | [INFO] [stderr] 343 | value: if t_for_val.ok().unwrap() == by_val.ok().unwrap() { TRUE } else { FALSE }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(t_for_val.ok().unwrap() - by_val.ok().unwrap()).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/opcodes.rs:343:47 [INFO] [stderr] | [INFO] [stderr] 343 | value: if t_for_val.ok().unwrap() == by_val.ok().unwrap() { TRUE } else { FALSE }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / let preamble_files; [INFO] [stderr] 51 | | if arg_matches.is_present("preamble") { [INFO] [stderr] 52 | | let preamble_files_str: Vec<_> = arg_matches.values_of("preamble").unwrap().collect(); [INFO] [stderr] 53 | | preamble_files = preamble_files_str [INFO] [stderr] ... | [INFO] [stderr] 63 | | preamble_files = Vec::new(); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 50 | let preamble_files = if arg_matches.is_present("preamble") { ..; preamble_files_str [INFO] [stderr] 51 | .iter() [INFO] [stderr] 52 | .filter(|x| File::open(x).is_ok()) [INFO] [stderr] 53 | .map(|x| { [INFO] [stderr] 54 | NamedFile { [INFO] [stderr] 55 | file: File::open(x).unwrap(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `pill`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/interpreter.rs:92:13 [INFO] [stderr] | [INFO] [stderr] 92 | if self.head.is_none() { return None; } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace_it_with: `self.head?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/interpreter.rs:177:27 [INFO] [stderr] | [INFO] [stderr] 177 | fn fmt_rh(rh: &ReadHead) -> String { [INFO] [stderr] | ^^^^^^^^^ help: consider passing by value instead: `ReadHead` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/interpreter.rs:264:19 [INFO] [stderr] | [INFO] [stderr] 264 | fn new_by(&self, line: i32, col: i32) -> ReadHead { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/interpreter.rs:300:24 [INFO] [stderr] | [INFO] [stderr] 300 | value: 0 as f64, [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [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: this creates an owned instance just for comparison [INFO] [stderr] --> src/interpreter.rs:321:82 [INFO] [stderr] | [INFO] [stderr] 321 | let res_var = c_scope.iter().find(|x| x.identifier.to_lowercase() == String::from("res")).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: try: `"res"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/interpreter.rs:365:20 [INFO] [stderr] | [INFO] [stderr] 365 | fn newlines(x: &String) -> i32 { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/interpreter.rs:381:9 [INFO] [stderr] | [INFO] [stderr] 381 | data.chars().find(|x| exists.contains(x)).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `find(|x| exists.contains(x)).is_some()` with `any(|x| exists.contains(x))` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter.rs:470:91 [INFO] [stderr] | [INFO] [stderr] 470 | fn parse_code(&self, file: EnhancedFile, rh: ReadHead, inst: &Instruction, insts: &Vec, code: String) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: change this to: `&[Instruction]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:505:36 [INFO] [stderr] | [INFO] [stderr] 505 | if arg.starts_with("\"") && arg.ends_with("\"") { [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: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:505:59 [INFO] [stderr] | [INFO] [stderr] 505 | if arg.starts_with("\"") && arg.ends_with("\"") { [INFO] [stderr] | ^^^^ help: try using a char instead: `'\"'` [INFO] [stderr] | [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: identical conversion [INFO] [stderr] --> src/interpreter.rs:523:32 [INFO] [stderr] | [INFO] [stderr] 523 | let expected = exp_args[i].clone().into(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `exp_args[i].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: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/interpreter.rs:524:21 [INFO] [stderr] | [INFO] [stderr] 524 | let ref argument = data[i + 1].to_string(); [INFO] [stderr] | ----^^^^^^^^^^^^--------------------------- help: try: `let argument = &data[i + 1].to_string();` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:532:50 [INFO] [stderr] | [INFO] [stderr] 532 | if !a_clone.contains(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [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: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:542:46 [INFO] [stderr] | [INFO] [stderr] 542 | if !a_clone.contains(".") { [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [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: redundant closure found [INFO] [stderr] --> src/interpreter.rs:641:38 [INFO] [stderr] | [INFO] [stderr] 641 | .map(|x: &str| String::from(x)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/interpreter.rs:640:40 [INFO] [stderr] | [INFO] [stderr] 640 | .split(" ") [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [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: using `clone` on a `Copy` type [INFO] [stderr] --> src/interpreter.rs:679:80 [INFO] [stderr] | [INFO] [stderr] 679 | let res = self.parse_code(file.unsafe_clone(), head.clone(), &cur_inst, &self.instructions, code.clone()); [INFO] [stderr] | ^^^^^^^^^^^^ help: try removing the `clone` call: `head` [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: length comparison to zero [INFO] [stderr] --> src/interpreter.rs:705:16 [INFO] [stderr] | [INFO] [stderr] 705 | if self.instructions.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `self.instructions.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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/opcodes.rs:39:40 [INFO] [stderr] | [INFO] [stderr] 39 | ExpressionType::IntegerLiteral(0 as f64) [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/opcodes.rs:119:44 [INFO] [stderr] | [INFO] [stderr] 119 | fn instruction_exists(&self, name: &String, insts: Vec) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/opcodes.rs:120:13 [INFO] [stderr] | [INFO] [stderr] 120 | insts.iter().find(|x| x.name == *name).is_some() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|x| x.name == *name).is_some()` with `any(|x| x.name == *name)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/opcodes.rs:123:113 [INFO] [stderr] | [INFO] [stderr] 123 | fn get_absolute_value(&self, file: EnhancedFile, rh_err: ReadHead, ei: &Either, registers: &Vec, scope: &mut Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Register]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/opcodes.rs:143:24 [INFO] [stderr] | [INFO] [stderr] 143 | return registers.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|x| x.identifier == *name).is_some()` with `any(|x| x.identifier == *name)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/opcodes.rs:145:24 [INFO] [stderr] | [INFO] [stderr] 145 | return scope.unwrap().iter().find(|x| x.identifier == *name).is_some(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: replace `find(|x| x.identifier == *name).is_some()` with `any(|x| x.identifier == *name)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/opcodes.rs:148:64 [INFO] [stderr] | [INFO] [stderr] 148 | fn g_register_exists(&self, name: String, g_registers: &Vec) -> bool { self.register_exists(name, true, Some(g_registers), None) } [INFO] [stderr] | ^^^^^^^^^^^^^^ help: change this to: `&[Register]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 60 [INFO] [stderr] --> src/opcodes.rs:152:9 [INFO] [stderr] | [INFO] [stderr] 152 | / pub fn execute(&self, file: EnhancedFile, debug: bool, registers: &mut Vec, mut o_insts: Vec, scope: &mut Vec) -> Result<(), AdvancedIllError> { [INFO] [stderr] 153 | | let rh_err: ReadHead = self.location.unwrap().clone(); [INFO] [stderr] 154 | | let rh_err_o: Option = Some(rh_err); [INFO] [stderr] 155 | | fn get_and_execute(file: EnhancedFile, name: &String, debug: bool, registers: &mut Vec, mut insts: Vec, scope: &mut Vec) -> Result { [INFO] [stderr] ... | [INFO] [stderr] 631 | | Ok(()) [INFO] [stderr] 632 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/opcodes.rs:153:36 [INFO] [stderr] | [INFO] [stderr] 153 | let rh_err: ReadHead = self.location.unwrap().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `self.location.unwrap()` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/opcodes.rs:155:58 [INFO] [stderr] | [INFO] [stderr] 155 | fn get_and_execute(file: EnhancedFile, name: &String, debug: bool, registers: &mut Vec, mut insts: Vec, scope: &mut Vec) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/opcodes.rs:343:47 [INFO] [stderr] | [INFO] [stderr] 343 | value: if t_for_val.ok().unwrap() == by_val.ok().unwrap() { TRUE } else { FALSE }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(t_for_val.ok().unwrap() - by_val.ok().unwrap()).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/opcodes.rs:343:47 [INFO] [stderr] | [INFO] [stderr] 343 | value: if t_for_val.ok().unwrap() == by_val.ok().unwrap() { TRUE } else { FALSE }, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / let preamble_files; [INFO] [stderr] 51 | | if arg_matches.is_present("preamble") { [INFO] [stderr] 52 | | let preamble_files_str: Vec<_> = arg_matches.values_of("preamble").unwrap().collect(); [INFO] [stderr] 53 | | preamble_files = preamble_files_str [INFO] [stderr] ... | [INFO] [stderr] 63 | | preamble_files = Vec::new(); [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] help: it is more idiomatic to write [INFO] [stderr] | [INFO] [stderr] 50 | let preamble_files = if arg_matches.is_present("preamble") { ..; preamble_files_str [INFO] [stderr] 51 | .iter() [INFO] [stderr] 52 | .filter(|x| File::open(x).is_ok()) [INFO] [stderr] 53 | .map(|x| { [INFO] [stderr] 54 | NamedFile { [INFO] [stderr] 55 | file: File::open(x).unwrap(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `pill`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "d5d60e4381d8bf136b2dd328ed7c4cec1466aca3399b3d227f2d2b54558d3453"` [INFO] running `"docker" "rm" "-f" "d5d60e4381d8bf136b2dd328ed7c4cec1466aca3399b3d227f2d2b54558d3453"` [INFO] [stdout] d5d60e4381d8bf136b2dd328ed7c4cec1466aca3399b3d227f2d2b54558d3453