[INFO] updating cached repository Roybie/VL-interpreter [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/Roybie/VL-interpreter [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/Roybie/VL-interpreter" "work/ex/clippy-test-run/sources/stable/gh/Roybie/VL-interpreter"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/Roybie/VL-interpreter'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/Roybie/VL-interpreter" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Roybie/VL-interpreter"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Roybie/VL-interpreter'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ebd9789d615a797e3c072b2e28dc0166f3584b34 [INFO] sha for GitHub repo Roybie/VL-interpreter: ebd9789d615a797e3c072b2e28dc0166f3584b34 [INFO] validating manifest of Roybie/VL-interpreter 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 Roybie/VL-interpreter 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 Roybie/VL-interpreter [INFO] finished frobbing Roybie/VL-interpreter [INFO] frobbed toml for Roybie/VL-interpreter written to work/ex/clippy-test-run/sources/stable/gh/Roybie/VL-interpreter/Cargo.toml [INFO] started frobbing Roybie/VL-interpreter [INFO] finished frobbing Roybie/VL-interpreter [INFO] frobbed toml for Roybie/VL-interpreter written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/Roybie/VL-interpreter/Cargo.toml [INFO] crate Roybie/VL-interpreter 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 Roybie/VL-interpreter against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/Roybie/VL-interpreter:/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] c53a518be7015c3a7f6efe40c53187e0b75cdda0708f899055f001c2720a73e3 [INFO] running `"docker" "start" "-a" "c53a518be7015c3a7f6efe40c53187e0b75cdda0708f899055f001c2720a73e3"` [INFO] [stderr] Checking vl v0.3.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/ast.rs:194:32 [INFO] [stderr] | [INFO] [stderr] 194 | let ast = Parser { pos: 0, input: input }.parse(); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/interpreter.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [INFO] [stderr] | [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/ast.rs:194:32 [INFO] [stderr] | [INFO] [stderr] 194 | let ast = Parser { pos: 0, input: input }.parse(); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `input` [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/interpreter.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | program: program, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `program` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/ast.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | return cur_char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `cur_char` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ast.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | ast [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/ast.rs:194:15 [INFO] [stderr] | [INFO] [stderr] 194 | let ast = Parser { pos: 0, input: input }.parse(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/io.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/io.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/io.rs:30:13 [INFO] [stderr] | [INFO] [stderr] 30 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/io.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/io.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/io.rs:57:13 [INFO] [stderr] | [INFO] [stderr] 57 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/io.rs:68:13 [INFO] [stderr] | [INFO] [stderr] 68 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/io.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: unneeded return statement [INFO] [stderr] --> src/ast.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | return cur_char; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `cur_char` [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/ast.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | ast [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/ast.rs:194:15 [INFO] [stderr] | [INFO] [stderr] 194 | let ast = Parser { pos: 0, input: input }.parse(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/strings.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/strings.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/strings.rs:29:13 [INFO] [stderr] | [INFO] [stderr] 29 | assert!(output.stderr.len() > 0, "stderr should exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/strings.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/strings.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/strings.rs:55:13 [INFO] [stderr] | [INFO] [stderr] 55 | assert!(output.stderr.len() > 0, "stderr should exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:11:13 [INFO] [stderr] | [INFO] [stderr] 11 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:19:13 [INFO] [stderr] | [INFO] [stderr] 19 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:38:13 [INFO] [stderr] | [INFO] [stderr] 38 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:87:13 [INFO] [stderr] | [INFO] [stderr] 87 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:114:13 [INFO] [stderr] | [INFO] [stderr] 114 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:133:13 [INFO] [stderr] | [INFO] [stderr] 133 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:144:13 [INFO] [stderr] | [INFO] [stderr] 144 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/registers.rs:152:13 [INFO] [stderr] | [INFO] [stderr] 152 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | / match command { [INFO] [stderr] 29 | | Command::Comment => { [INFO] [stderr] 30 | | continue; [INFO] [stderr] 31 | | }, [INFO] [stderr] 32 | | _ => (), [INFO] [stderr] 33 | | } [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] 28 | if let Command::Comment = command { [INFO] [stderr] 29 | continue; [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/ast.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | self.pos = self.pos - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pos -= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/ast.rs:139:10 [INFO] [stderr] | [INFO] [stderr] 139 | self.pos = self.pos + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pos += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/ast.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match command { [INFO] [stderr] 155 | | Command::Comment => { [INFO] [stderr] 156 | | continue; [INFO] [stderr] 157 | | }, [INFO] [stderr] 158 | | _ => (), [INFO] [stderr] 159 | | } [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] 154 | if let Command::Comment = command { [INFO] [stderr] 155 | continue; [INFO] [stderr] 156 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commands.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match self { [INFO] [stderr] 134 | | &Type::I(int) => int, [INFO] [stderr] 135 | | _ => panic!("Tried to get int value of a string") [INFO] [stderr] 136 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 133 | match *self { [INFO] [stderr] 134 | Type::I(int) => int, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commands.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | / match self { [INFO] [stderr] 140 | | &Type::S(ref str) => str.to_owned(), [INFO] [stderr] 141 | | &Type::I(i) => i.to_string(), [INFO] [stderr] 142 | | } [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] 139 | match *self { [INFO] [stderr] 140 | Type::S(ref str) => str.to_owned(), [INFO] [stderr] 141 | Type::I(i) => i.to_string(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:100:25 [INFO] [stderr] | [INFO] [stderr] 100 | loops = loops - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `loops -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | self.pc = self.pc + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 56 [INFO] [stderr] --> src/interpreter.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | / fn interpret(&mut self, command: &Command) { [INFO] [stderr] 113 | | match command { [INFO] [stderr] 114 | | &Command::VOut => { [INFO] [stderr] 115 | | if !self.rep { [INFO] [stderr] ... | [INFO] [stderr] 475 | | } [INFO] [stderr] 476 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match command { [INFO] [stderr] 114 | | &Command::VOut => { [INFO] [stderr] 115 | | if !self.rep { [INFO] [stderr] 116 | | self.last = self.pc; [INFO] [stderr] ... | [INFO] [stderr] 474 | | _ => (), [INFO] [stderr] 475 | | } [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] 113 | match *command { [INFO] [stderr] 114 | Command::VOut => { [INFO] [stderr] 115 | if !self.rep { [INFO] [stderr] 116 | self.last = self.pc; [INFO] [stderr] 117 | } [INFO] [stderr] 118 | print!("{}", self.value); [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/interpreter.rs:140:17 [INFO] [stderr] | [INFO] [stderr] 140 | / match io::stdin().read_line(&mut input) { [INFO] [stderr] 141 | | Ok(_) => { [INFO] [stderr] 142 | | input = input.trim().to_owned(); [INFO] [stderr] 143 | | let val = match input.parse::() { [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => (), [INFO] [stderr] 150 | | } [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] 140 | if let Ok(_) = io::stdin().read_line(&mut input) { [INFO] [stderr] 141 | input = input.trim().to_owned(); [INFO] [stderr] 142 | let val = match input.parse::() { [INFO] [stderr] 143 | Ok(n) => Type::I(n), [INFO] [stderr] 144 | Err(_) => Type::S(input), [INFO] [stderr] 145 | }; [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/interpreter.rs:195:17 [INFO] [stderr] | [INFO] [stderr] 195 | / match self.value { [INFO] [stderr] 196 | | Type::I(v) => { [INFO] [stderr] 197 | | self.value = Type::I(v + 1); [INFO] [stderr] 198 | | self.set_value(false); [INFO] [stderr] 199 | | } [INFO] [stderr] 200 | | _ => (), [INFO] [stderr] 201 | | } [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] 195 | if let Type::I(v) = self.value { [INFO] [stderr] 196 | self.value = Type::I(v + 1); [INFO] [stderr] 197 | self.set_value(false); [INFO] [stderr] 198 | } [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/interpreter.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | / match self.value { [INFO] [stderr] 209 | | Type::I(v) => { [INFO] [stderr] 210 | | self.value = Type::I(v - 1); [INFO] [stderr] 211 | | self.set_value(false); [INFO] [stderr] 212 | | } [INFO] [stderr] 213 | | _ => (), [INFO] [stderr] 214 | | } [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] 208 | if let Type::I(v) = self.value { [INFO] [stderr] 209 | self.value = Type::I(v - 1); [INFO] [stderr] 210 | self.set_value(false); [INFO] [stderr] 211 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/interpreter.rs:224:29 [INFO] [stderr] | [INFO] [stderr] 224 | Err(_) => panic!("value can't be converted to int"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/interpreter.rs:291:78 [INFO] [stderr] | [INFO] [stderr] 291 | self.values[self.pointer] = s.split(&spl).filter(|s| s.len()>0).map(|s| Type::S(s.to_owned())).collect(); [INFO] [stderr] | ^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:296:17 [INFO] [stderr] | [INFO] [stderr] 296 | / match mark { [INFO] [stderr] 297 | | &'a' ... 'z' => { [INFO] [stderr] 298 | | self.pointer = mark.to_digit(36).unwrap() as usize - 10; [INFO] [stderr] 299 | | self.index = 0; [INFO] [stderr] 300 | | }, [INFO] [stderr] 301 | | _ => { panic!("mark must be a to z"); }, [INFO] [stderr] 302 | | } [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] 296 | match *mark { [INFO] [stderr] 297 | 'a' ... 'z' => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | / match mark { [INFO] [stderr] 306 | | &'a' ... 'z' => { [INFO] [stderr] 307 | | self.pointer = mark.to_digit(36).unwrap() as usize - 10; [INFO] [stderr] 308 | | self.index = self.int.get_int() as usize; [INFO] [stderr] 309 | | }, [INFO] [stderr] 310 | | _ => { panic!("mark must be a to z"); }, [INFO] [stderr] 311 | | } [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] 305 | match *mark { [INFO] [stderr] 306 | 'a' ... 'z' => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | self.pointer = self.pointer + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pointer += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:325:17 [INFO] [stderr] | [INFO] [stderr] 325 | self.pointer = self.pointer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pointer -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:329:17 [INFO] [stderr] | [INFO] [stderr] 329 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:335:17 [INFO] [stderr] | [INFO] [stderr] 335 | self.index = self.index - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: attempt to mutate range bound within loop; note that the range of the loop is unchanged [INFO] [stderr] --> src/interpreter.rs:347:33 [INFO] [stderr] | [INFO] [stderr] 347 | new_pc = i; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mut_range_bound)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_range_bound [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/interpreter.rs:364:25 [INFO] [stderr] | [INFO] [stderr] 364 | / match self.program[i] { [INFO] [stderr] 365 | | Command::Line => { [INFO] [stderr] 366 | | new_pc = i; [INFO] [stderr] 367 | | //break; [INFO] [stderr] ... | [INFO] [stderr] 373 | | _ => (), [INFO] [stderr] 374 | | } [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] 364 | if let Command::Line = self.program[i] { [INFO] [stderr] 365 | new_pc = i; [INFO] [stderr] 366 | //break; [INFO] [stderr] 367 | if ignore_one == 0 { [INFO] [stderr] 368 | break; [INFO] [stderr] 369 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:371:33 [INFO] [stderr] | [INFO] [stderr] 371 | ignore_one = ignore_one - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ignore_one -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/interpreter.rs:386:25 [INFO] [stderr] | [INFO] [stderr] 386 | / match self.program[i] { [INFO] [stderr] 387 | | Command::Line => { [INFO] [stderr] 388 | | new_pc = i; [INFO] [stderr] 389 | | break; [INFO] [stderr] 390 | | } [INFO] [stderr] 391 | | _ => (), [INFO] [stderr] 392 | | } [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] 386 | if let Command::Line = self.program[i] { [INFO] [stderr] 387 | new_pc = i; [INFO] [stderr] 388 | break; [INFO] [stderr] 389 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: attempt to mutate range bound within loop; note that the range of the loop is unchanged [INFO] [stderr] --> src/interpreter.rs:404:29 [INFO] [stderr] | [INFO] [stderr] 404 | new_pc = i; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_range_bound [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:416:25 [INFO] [stderr] | [INFO] [stderr] 416 | self.pc = self.pc - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:436:25 [INFO] [stderr] | [INFO] [stderr] 436 | self.pc = self.pc - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/interpreter.rs:456:60 [INFO] [stderr] | [INFO] [stderr] 456 | &Command::Int(ref int) => { self.int = Type::I(int.clone() as i64); }, [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*int` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter.rs:478:35 [INFO] [stderr] | [INFO] [stderr] 478 | fn do_group(&mut self, group: &Ast) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 486 | self.program = group.clone(); [INFO] [stderr] | ------------- help: change `group.clone()` to: `group.to_owned()` [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: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:522:25 [INFO] [stderr] | [INFO] [stderr] 522 | loops = loops - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `loops -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:529:13 [INFO] [stderr] | [INFO] [stderr] 529 | self.pc = self.pc + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/main.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | / match io::stdin().read_line(&mut input) { [INFO] [stderr] 34 | | Ok(_) => { [INFO] [stderr] 35 | | let inp = input.trim().to_owned() + "\n"; [INFO] [stderr] 36 | | program = ast::parse(inp); [INFO] [stderr] ... | [INFO] [stderr] 39 | | _ => (), [INFO] [stderr] 40 | | } [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] 33 | if let Ok(_) = io::stdin().read_line(&mut input) { [INFO] [stderr] 34 | let inp = input.trim().to_owned() + "\n"; [INFO] [stderr] 35 | program = ast::parse(inp); [INFO] [stderr] 36 | interpreter::run(program); [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> tests/memory.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | assert!(output.stderr.len() > 0, "stderr should exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:36:13 [INFO] [stderr] | [INFO] [stderr] 36 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | assert!(output.stderr.len() > 0, "stderr should exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:70:13 [INFO] [stderr] | [INFO] [stderr] 70 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:89:13 [INFO] [stderr] | [INFO] [stderr] 89 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:116:13 [INFO] [stderr] | [INFO] [stderr] 116 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:135:13 [INFO] [stderr] | [INFO] [stderr] 135 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:143:13 [INFO] [stderr] | [INFO] [stderr] 143 | assert!(output.stderr.len() > 0, "stderr should exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/memory.rs:150:13 [INFO] [stderr] | [INFO] [stderr] 150 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:21:13 [INFO] [stderr] | [INFO] [stderr] 21 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:32:13 [INFO] [stderr] | [INFO] [stderr] 32 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:43:13 [INFO] [stderr] | [INFO] [stderr] 43 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:76:13 [INFO] [stderr] | [INFO] [stderr] 76 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:84:13 [INFO] [stderr] | [INFO] [stderr] 84 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:95:13 [INFO] [stderr] | [INFO] [stderr] 95 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/arithmetic.rs:103:13 [INFO] [stderr] | [INFO] [stderr] 103 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:18:13 [INFO] [stderr] | [INFO] [stderr] 18 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:26:13 [INFO] [stderr] | [INFO] [stderr] 26 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:37:13 [INFO] [stderr] | [INFO] [stderr] 37 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:45:13 [INFO] [stderr] | [INFO] [stderr] 45 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:83:13 [INFO] [stderr] | [INFO] [stderr] 83 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:91:13 [INFO] [stderr] | [INFO] [stderr] 91 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:102:13 [INFO] [stderr] | [INFO] [stderr] 102 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:110:13 [INFO] [stderr] | [INFO] [stderr] 110 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:118:13 [INFO] [stderr] | [INFO] [stderr] 118 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:130:13 [INFO] [stderr] | [INFO] [stderr] 130 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:151:13 [INFO] [stderr] | [INFO] [stderr] 151 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:160:13 [INFO] [stderr] | [INFO] [stderr] 160 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:172:13 [INFO] [stderr] | [INFO] [stderr] 172 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:180:13 [INFO] [stderr] | [INFO] [stderr] 180 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:188:13 [INFO] [stderr] | [INFO] [stderr] 188 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:197:13 [INFO] [stderr] | [INFO] [stderr] 197 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:205:13 [INFO] [stderr] | [INFO] [stderr] 205 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:213:13 [INFO] [stderr] | [INFO] [stderr] 213 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:225:13 [INFO] [stderr] | [INFO] [stderr] 225 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:233:13 [INFO] [stderr] | [INFO] [stderr] 233 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:241:13 [INFO] [stderr] | [INFO] [stderr] 241 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:250:13 [INFO] [stderr] | [INFO] [stderr] 250 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:258:13 [INFO] [stderr] | [INFO] [stderr] 258 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:266:13 [INFO] [stderr] | [INFO] [stderr] 266 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:277:13 [INFO] [stderr] | [INFO] [stderr] 277 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:285:13 [INFO] [stderr] | [INFO] [stderr] 285 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:296:13 [INFO] [stderr] | [INFO] [stderr] 296 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:304:13 [INFO] [stderr] | [INFO] [stderr] 304 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:312:13 [INFO] [stderr] | [INFO] [stderr] 312 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: length comparison to zero [INFO] [stderr] --> tests/conditionals.rs:320:13 [INFO] [stderr] | [INFO] [stderr] 320 | assert!(output.stderr.len() == 0, "stderr shouldn't exist"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `output.stderr.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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/ast.rs:28:13 [INFO] [stderr] | [INFO] [stderr] 28 | / match command { [INFO] [stderr] 29 | | Command::Comment => { [INFO] [stderr] 30 | | continue; [INFO] [stderr] 31 | | }, [INFO] [stderr] 32 | | _ => (), [INFO] [stderr] 33 | | } [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] 28 | if let Command::Comment = command { [INFO] [stderr] 29 | continue; [INFO] [stderr] 30 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/ast.rs:132:9 [INFO] [stderr] | [INFO] [stderr] 132 | self.pos = self.pos - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pos -= 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/ast.rs:139:10 [INFO] [stderr] | [INFO] [stderr] 139 | self.pos = self.pos + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pos += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/ast.rs:154:13 [INFO] [stderr] | [INFO] [stderr] 154 | / match command { [INFO] [stderr] 155 | | Command::Comment => { [INFO] [stderr] 156 | | continue; [INFO] [stderr] 157 | | }, [INFO] [stderr] 158 | | _ => (), [INFO] [stderr] 159 | | } [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] 154 | if let Command::Comment = command { [INFO] [stderr] 155 | continue; [INFO] [stderr] 156 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commands.rs:133:9 [INFO] [stderr] | [INFO] [stderr] 133 | / match self { [INFO] [stderr] 134 | | &Type::I(int) => int, [INFO] [stderr] 135 | | _ => panic!("Tried to get int value of a string") [INFO] [stderr] 136 | | } [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: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 133 | match *self { [INFO] [stderr] 134 | Type::I(int) => int, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/commands.rs:139:9 [INFO] [stderr] | [INFO] [stderr] 139 | / match self { [INFO] [stderr] 140 | | &Type::S(ref str) => str.to_owned(), [INFO] [stderr] 141 | | &Type::I(i) => i.to_string(), [INFO] [stderr] 142 | | } [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] 139 | match *self { [INFO] [stderr] 140 | Type::S(ref str) => str.to_owned(), [INFO] [stderr] 141 | Type::I(i) => i.to_string(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:100:25 [INFO] [stderr] | [INFO] [stderr] 100 | loops = loops - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `loops -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | self.pc = self.pc + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 56 [INFO] [stderr] --> src/interpreter.rs:112:5 [INFO] [stderr] | [INFO] [stderr] 112 | / fn interpret(&mut self, command: &Command) { [INFO] [stderr] 113 | | match command { [INFO] [stderr] 114 | | &Command::VOut => { [INFO] [stderr] 115 | | if !self.rep { [INFO] [stderr] ... | [INFO] [stderr] 475 | | } [INFO] [stderr] 476 | | } [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:113:9 [INFO] [stderr] | [INFO] [stderr] 113 | / match command { [INFO] [stderr] 114 | | &Command::VOut => { [INFO] [stderr] 115 | | if !self.rep { [INFO] [stderr] 116 | | self.last = self.pc; [INFO] [stderr] ... | [INFO] [stderr] 474 | | _ => (), [INFO] [stderr] 475 | | } [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] 113 | match *command { [INFO] [stderr] 114 | Command::VOut => { [INFO] [stderr] 115 | if !self.rep { [INFO] [stderr] 116 | self.last = self.pc; [INFO] [stderr] 117 | } [INFO] [stderr] 118 | print!("{}", self.value); [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/interpreter.rs:140:17 [INFO] [stderr] | [INFO] [stderr] 140 | / match io::stdin().read_line(&mut input) { [INFO] [stderr] 141 | | Ok(_) => { [INFO] [stderr] 142 | | input = input.trim().to_owned(); [INFO] [stderr] 143 | | let val = match input.parse::() { [INFO] [stderr] ... | [INFO] [stderr] 149 | | _ => (), [INFO] [stderr] 150 | | } [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] 140 | if let Ok(_) = io::stdin().read_line(&mut input) { [INFO] [stderr] 141 | input = input.trim().to_owned(); [INFO] [stderr] 142 | let val = match input.parse::() { [INFO] [stderr] 143 | Ok(n) => Type::I(n), [INFO] [stderr] 144 | Err(_) => Type::S(input), [INFO] [stderr] 145 | }; [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/interpreter.rs:195:17 [INFO] [stderr] | [INFO] [stderr] 195 | / match self.value { [INFO] [stderr] 196 | | Type::I(v) => { [INFO] [stderr] 197 | | self.value = Type::I(v + 1); [INFO] [stderr] 198 | | self.set_value(false); [INFO] [stderr] 199 | | } [INFO] [stderr] 200 | | _ => (), [INFO] [stderr] 201 | | } [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] 195 | if let Type::I(v) = self.value { [INFO] [stderr] 196 | self.value = Type::I(v + 1); [INFO] [stderr] 197 | self.set_value(false); [INFO] [stderr] 198 | } [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/interpreter.rs:208:17 [INFO] [stderr] | [INFO] [stderr] 208 | / match self.value { [INFO] [stderr] 209 | | Type::I(v) => { [INFO] [stderr] 210 | | self.value = Type::I(v - 1); [INFO] [stderr] 211 | | self.set_value(false); [INFO] [stderr] 212 | | } [INFO] [stderr] 213 | | _ => (), [INFO] [stderr] 214 | | } [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] 208 | if let Type::I(v) = self.value { [INFO] [stderr] 209 | self.value = Type::I(v - 1); [INFO] [stderr] 210 | self.set_value(false); [INFO] [stderr] 211 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: Err(_) will match all errors, maybe not a good idea [INFO] [stderr] --> src/interpreter.rs:224:29 [INFO] [stderr] | [INFO] [stderr] 224 | Err(_) => panic!("value can't be converted to int"), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_wild_err_arm)] on by default [INFO] [stderr] = note: to remove this warning, match each error separately or use unreachable macro [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_wild_err_arm [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/interpreter.rs:291:78 [INFO] [stderr] | [INFO] [stderr] 291 | self.values[self.pointer] = s.split(&spl).filter(|s| s.len()>0).map(|s| Type::S(s.to_owned())).collect(); [INFO] [stderr] | ^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!s.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:296:17 [INFO] [stderr] | [INFO] [stderr] 296 | / match mark { [INFO] [stderr] 297 | | &'a' ... 'z' => { [INFO] [stderr] 298 | | self.pointer = mark.to_digit(36).unwrap() as usize - 10; [INFO] [stderr] 299 | | self.index = 0; [INFO] [stderr] 300 | | }, [INFO] [stderr] 301 | | _ => { panic!("mark must be a to z"); }, [INFO] [stderr] 302 | | } [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] 296 | match *mark { [INFO] [stderr] 297 | 'a' ... 'z' => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/interpreter.rs:305:17 [INFO] [stderr] | [INFO] [stderr] 305 | / match mark { [INFO] [stderr] 306 | | &'a' ... 'z' => { [INFO] [stderr] 307 | | self.pointer = mark.to_digit(36).unwrap() as usize - 10; [INFO] [stderr] 308 | | self.index = self.int.get_int() as usize; [INFO] [stderr] 309 | | }, [INFO] [stderr] 310 | | _ => { panic!("mark must be a to z"); }, [INFO] [stderr] 311 | | } [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] 305 | match *mark { [INFO] [stderr] 306 | 'a' ... 'z' => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:315:17 [INFO] [stderr] | [INFO] [stderr] 315 | self.pointer = self.pointer + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pointer += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:325:17 [INFO] [stderr] | [INFO] [stderr] 325 | self.pointer = self.pointer - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pointer -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:329:17 [INFO] [stderr] | [INFO] [stderr] 329 | self.index = self.index + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:335:17 [INFO] [stderr] | [INFO] [stderr] 335 | self.index = self.index - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.index -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: attempt to mutate range bound within loop; note that the range of the loop is unchanged [INFO] [stderr] --> src/interpreter.rs:347:33 [INFO] [stderr] | [INFO] [stderr] 347 | new_pc = i; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::mut_range_bound)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_range_bound [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/interpreter.rs:364:25 [INFO] [stderr] | [INFO] [stderr] 364 | / match self.program[i] { [INFO] [stderr] 365 | | Command::Line => { [INFO] [stderr] 366 | | new_pc = i; [INFO] [stderr] 367 | | //break; [INFO] [stderr] ... | [INFO] [stderr] 373 | | _ => (), [INFO] [stderr] 374 | | } [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] 364 | if let Command::Line = self.program[i] { [INFO] [stderr] 365 | new_pc = i; [INFO] [stderr] 366 | //break; [INFO] [stderr] 367 | if ignore_one == 0 { [INFO] [stderr] 368 | break; [INFO] [stderr] 369 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:371:33 [INFO] [stderr] | [INFO] [stderr] 371 | ignore_one = ignore_one - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `ignore_one -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/interpreter.rs:386:25 [INFO] [stderr] | [INFO] [stderr] 386 | / match self.program[i] { [INFO] [stderr] 387 | | Command::Line => { [INFO] [stderr] 388 | | new_pc = i; [INFO] [stderr] 389 | | break; [INFO] [stderr] 390 | | } [INFO] [stderr] 391 | | _ => (), [INFO] [stderr] 392 | | } [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] 386 | if let Command::Line = self.program[i] { [INFO] [stderr] 387 | new_pc = i; [INFO] [stderr] 388 | break; [INFO] [stderr] 389 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: attempt to mutate range bound within loop; note that the range of the loop is unchanged [INFO] [stderr] --> src/interpreter.rs:404:29 [INFO] [stderr] | [INFO] [stderr] 404 | new_pc = i; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#mut_range_bound [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:416:25 [INFO] [stderr] | [INFO] [stderr] 416 | self.pc = self.pc - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:436:25 [INFO] [stderr] | [INFO] [stderr] 436 | self.pc = self.pc - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/interpreter.rs:456:60 [INFO] [stderr] | [INFO] [stderr] 456 | &Command::Int(ref int) => { self.int = Type::I(int.clone() as i64); }, [INFO] [stderr] | ^^^^^^^^^^^ help: try dereferencing it: `*int` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/interpreter.rs:478:35 [INFO] [stderr] | [INFO] [stderr] 478 | fn do_group(&mut self, group: &Ast) { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 486 | self.program = group.clone(); [INFO] [stderr] | ------------- help: change `group.clone()` to: `group.to_owned()` [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: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:522:25 [INFO] [stderr] | [INFO] [stderr] 522 | loops = loops - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `loops -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/interpreter.rs:529:13 [INFO] [stderr] | [INFO] [stderr] 529 | self.pc = self.pc + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `self.pc += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [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/main.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | / match io::stdin().read_line(&mut input) { [INFO] [stderr] 34 | | Ok(_) => { [INFO] [stderr] 35 | | let inp = input.trim().to_owned() + "\n"; [INFO] [stderr] 36 | | program = ast::parse(inp); [INFO] [stderr] ... | [INFO] [stderr] 39 | | _ => (), [INFO] [stderr] 40 | | } [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] 33 | if let Ok(_) = io::stdin().read_line(&mut input) { [INFO] [stderr] 34 | let inp = input.trim().to_owned() + "\n"; [INFO] [stderr] 35 | program = ast::parse(inp); [INFO] [stderr] 36 | interpreter::run(program); [INFO] [stderr] 37 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 4.37s [INFO] running `"docker" "inspect" "c53a518be7015c3a7f6efe40c53187e0b75cdda0708f899055f001c2720a73e3"` [INFO] running `"docker" "rm" "-f" "c53a518be7015c3a7f6efe40c53187e0b75cdda0708f899055f001c2720a73e3"` [INFO] [stdout] c53a518be7015c3a7f6efe40c53187e0b75cdda0708f899055f001c2720a73e3