[INFO] cloning repository https://github.com/jdpolicano/rlox [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/jdpolicano/rlox" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjdpolicano%2Frlox", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjdpolicano%2Frlox'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 43205cee61d65ebc03102efcac6ea0c8a2b5fbfa [INFO] linting jdpolicano/rlox against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fjdpolicano%2Frlox" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/jdpolicano/rlox [INFO] finished tweaking git repo https://github.com/jdpolicano/rlox [INFO] tweaked toml for git repo https://github.com/jdpolicano/rlox written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/jdpolicano/rlox on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/jdpolicano/rlox already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 31cfd19a0aca23cd5c74a700e33d8ccec87a1824da0eeef098489236b13098a2 [INFO] running `Command { std: "docker" "start" "-a" "31cfd19a0aca23cd5c74a700e33d8ccec87a1824da0eeef098489236b13098a2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "31cfd19a0aca23cd5c74a700e33d8ccec87a1824da0eeef098489236b13098a2", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "31cfd19a0aca23cd5c74a700e33d8ccec87a1824da0eeef098489236b13098a2", kill_on_drop: false }` [INFO] [stdout] 31cfd19a0aca23cd5c74a700e33d8ccec87a1824da0eeef098489236b13098a2 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 681ce7e637022e15453ef745135e027b5afdcf89b7615b8f82973fffaeeb4f04 [INFO] running `Command { std: "docker" "start" "-a" "681ce7e637022e15453ef745135e027b5afdcf89b7615b8f82973fffaeeb4f04", kill_on_drop: false }` [INFO] [stderr] Compiling thiserror v2.0.12 [INFO] [stderr] Checking colored v3.0.0 [INFO] [stderr] Compiling syn v2.0.104 [INFO] [stderr] Compiling thiserror-impl v2.0.12 [INFO] [stderr] Checking rloxv2 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `super::class::ClassInstance` [INFO] [stdout] --> src/interpreter/runtime/function.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use super::class::ClassInstance; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lang/native.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / /// any runtime must support. [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | pub trait Native { [INFO] [stdout] | ---------------- the comment documents this trait [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 ~ //! trait Native defines the required signature a structure [INFO] [stdout] 2 ~ //! must adhere to do to provide the full scope of native functions [INFO] [stdout] 3 ~ //! any runtime must support. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Chars` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:5:29 [INFO] [stdout] | [INFO] [stdout] 5 | use std::str::{CharIndices, Chars}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lang/tree/parser.rs:732:13 [INFO] [stdout] | [INFO] [stdout] 732 | op: op, [INFO] [stdout] | ^^^^^^ help: replace it with: `op` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lang/tree/parser.rs:763:13 [INFO] [stdout] | [INFO] [stdout] 763 | name: name, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::class::ClassInstance` [INFO] [stdout] --> src/interpreter/runtime/function.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use super::class::ClassInstance; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: empty line after doc comment [INFO] [stdout] --> src/lang/native.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / /// any runtime must support. [INFO] [stdout] 4 | | [INFO] [stdout] | |_^ [INFO] [stdout] 5 | pub trait Native { [INFO] [stdout] | ---------------- the comment documents this trait [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#empty_line_after_doc_comments [INFO] [stdout] = note: `#[warn(clippy::empty_line_after_doc_comments)]` on by default [INFO] [stdout] = help: if the empty line is unintentional, remove it [INFO] [stdout] help: if the comment should document the parent module use an inner doc comment [INFO] [stdout] | [INFO] [stdout] 1 ~ //! trait Native defines the required signature a structure [INFO] [stdout] 2 ~ //! must adhere to do to provide the full scope of native functions [INFO] [stdout] 3 ~ //! any runtime must support. [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Chars` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:5:29 [INFO] [stdout] | [INFO] [stdout] 5 | use std::str::{CharIndices, Chars}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lang/tree/parser.rs:732:13 [INFO] [stdout] | [INFO] [stdout] 732 | op: op, [INFO] [stdout] | ^^^^^^ help: replace it with: `op` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] = note: `#[warn(clippy::redundant_field_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant field names in struct initialization [INFO] [stdout] --> src/lang/tree/parser.rs:763:13 [INFO] [stdout] | [INFO] [stdout] 763 | name: name, [INFO] [stdout] | ^^^^^^^^^^ help: replace it with: `name` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Lox` [INFO] [stdout] --> src/interpreter/lox.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | / pub fn new() -> Self { [INFO] [stdout] 23 | | let mut me = Self { [INFO] [stdout] 24 | | globals: HashMap::new(), [INFO] [stdout] 25 | | current_scope: Rc::new(RefCell::new(Scope::default())), [INFO] [stdout] ... | [INFO] [stdout] 28 | | me [INFO] [stdout] 29 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 21 + impl Default for Lox { [INFO] [stdout] 22 + fn default() -> Self { [INFO] [stdout] 23 + Self::new() [INFO] [stdout] 24 + } [INFO] [stdout] 25 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/interpreter/lox.rs:48:16 [INFO] [stdout] | [INFO] [stdout] 48 | if let Some(_) = ident.depth_slot() { [INFO] [stdout] | -------^^^^^^^--------------------- help: try: `if ident.depth_slot().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/interpreter/lox.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | self.globals.get(name).map(|v| v.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `self.globals.get(name).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/interpreter/lox.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 131 | if params.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `params.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/interpreter/lox.rs:137:39 [INFO] [stdout] | [INFO] [stdout] 137 | let pairs = params.iter().zip(args.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 137 - let pairs = params.iter().zip(args.into_iter()); [INFO] [stdout] 137 + let pairs = params.iter().zip(args); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `interpreter::runtime::object::LoxObject` [INFO] [stdout] --> src/interpreter/lox.rs:228:13 [INFO] [stdout] | [INFO] [stdout] 228 | self.get_at(depth, slot).into() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `self.get_at(depth, slot)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/lox.rs:242:13 [INFO] [stdout] | [INFO] [stdout] 242 | return Ok(value.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 242 ~ Ok(value.into()) [INFO] [stdout] 243 | } else { [INFO] [stdout] ... [INFO] [stdout] 246 | .map(|_| Eval::from(value)); [INFO] [stdout] 247 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/lox.rs:244:13 [INFO] [stdout] | [INFO] [stdout] 244 | / return self [INFO] [stdout] 245 | | .assign_global(ident, value.clone()) [INFO] [stdout] 246 | | .map(|_| Eval::from(value)); [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 244 ~ self [INFO] [stdout] 245 + .assign_global(ident, value.clone()) [INFO] [stdout] 246 ~ .map(|_| Eval::from(value)) [INFO] [stdout] 247 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `interpreter::runtime::error::RuntimeError` [INFO] [stdout] --> src/interpreter/lox.rs:278:17 [INFO] [stdout] | [INFO] [stdout] 278 | RuntimeError::from(type_error("function", call_obj.type_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `RuntimeError::from()`: `type_error("function", call_obj.type_str())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `interpreter::runtime::eval::Eval` [INFO] [stdout] --> src/interpreter/lox.rs:330:12 [INFO] [stdout] | [INFO] [stdout] 330 | Ok(Eval::new_continue().into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Eval::new_continue()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/interpreter/lox.rs:495:16 [INFO] [stdout] | [INFO] [stdout] 495 | if !l_as_num.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `l_as_num.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/interpreter/lox.rs:513:16 [INFO] [stdout] | [INFO] [stdout] 513 | if !l_as_num.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `l_as_num.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/class.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | / return Self { [INFO] [stdout] 26 | | name, [INFO] [stdout] 27 | | methods, [INFO] [stdout] 28 | | statics, [INFO] [stdout] 29 | | init, [INFO] [stdout] 30 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 25 ~ Self { [INFO] [stdout] 26 + name, [INFO] [stdout] 27 + methods, [INFO] [stdout] 28 + statics, [INFO] [stdout] 29 + init, [INFO] [stdout] 30 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/class.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | / return Self { [INFO] [stdout] 64 | | constructor, [INFO] [stdout] 65 | | properties: HashMap::with_capacity(DEFAULT_PROPERTY_HASH_SIZE), [INFO] [stdout] 66 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 ~ Self { [INFO] [stdout] 64 + constructor, [INFO] [stdout] 65 + properties: HashMap::with_capacity(DEFAULT_PROPERTY_HASH_SIZE), [INFO] [stdout] 66 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/control.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | / match self { [INFO] [stdout] 27 | | Self::Return(_) => true, [INFO] [stdout] 28 | | _ => false, [INFO] [stdout] 29 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 26 - match self { [INFO] [stdout] 27 - Self::Return(_) => true, [INFO] [stdout] 28 - _ => false, [INFO] [stdout] 29 - } [INFO] [stdout] 26 + matches!(self, Self::Return(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/control.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | / match self { [INFO] [stdout] 34 | | Self::Break => true, [INFO] [stdout] 35 | | _ => false, [INFO] [stdout] 36 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 33 - match self { [INFO] [stdout] 34 - Self::Break => true, [INFO] [stdout] 35 - _ => false, [INFO] [stdout] 36 - } [INFO] [stdout] 33 + matches!(self, Self::Break) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/control.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | / match self { [INFO] [stdout] 41 | | Self::Continue => true, [INFO] [stdout] 42 | | _ => false, [INFO] [stdout] 43 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 40 - match self { [INFO] [stdout] 41 - Self::Continue => true, [INFO] [stdout] 42 - _ => false, [INFO] [stdout] 43 - } [INFO] [stdout] 40 + matches!(self, Self::Continue) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Lox` [INFO] [stdout] --> src/interpreter/lox.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | / pub fn new() -> Self { [INFO] [stdout] 23 | | let mut me = Self { [INFO] [stdout] 24 | | globals: HashMap::new(), [INFO] [stdout] 25 | | current_scope: Rc::new(RefCell::new(Scope::default())), [INFO] [stdout] ... | [INFO] [stdout] 28 | | me [INFO] [stdout] 29 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] = note: `#[warn(clippy::new_without_default)]` on by default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 21 + impl Default for Lox { [INFO] [stdout] 22 + fn default() -> Self { [INFO] [stdout] 23 + Self::new() [INFO] [stdout] 24 + } [INFO] [stdout] 25 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/eval.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | / match self { [INFO] [stdout] 65 | | Self::Ctrl(_) => true, [INFO] [stdout] 66 | | _ => false, [INFO] [stdout] 67 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 64 - match self { [INFO] [stdout] 65 - Self::Ctrl(_) => true, [INFO] [stdout] 66 - _ => false, [INFO] [stdout] 67 - } [INFO] [stdout] 64 + matches!(self, Self::Ctrl(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/function.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | return write!(f, ", ...) {{}}"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 65 - return write!(f, ", ...) {{}}"); [INFO] [stdout] 65 + write!(f, ", ...) {{}}") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/function.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 67 | return write!(f, ") {{}}"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 67 - return write!(f, ") {{}}"); [INFO] [stdout] 67 + write!(f, ") {{}}") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/interpreter/lox.rs:48:16 [INFO] [stdout] | [INFO] [stdout] 48 | if let Some(_) = ident.depth_slot() { [INFO] [stdout] | -------^^^^^^^--------------------- help: try: `if ident.depth_slot().is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] = note: `#[warn(clippy::redundant_pattern_matching)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you are using an explicit closure for cloning elements [INFO] [stdout] --> src/interpreter/lox.rs:68:9 [INFO] [stdout] | [INFO] [stdout] 68 | self.globals.get(name).map(|v| v.clone()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider calling the dedicated `cloned` method: `self.globals.get(name).cloned()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stdout] = note: `#[warn(clippy::map_clone)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stdout] --> src/interpreter/runtime/object.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stdout] = note: `#[warn(clippy::partialeq_ne_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | / match self { [INFO] [stdout] 136 | | LoxObject::Primitive(Primitive::Number(_)) => true, [INFO] [stdout] 137 | | _ => false, [INFO] [stdout] 138 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 135 - match self { [INFO] [stdout] 136 - LoxObject::Primitive(Primitive::Number(_)) => true, [INFO] [stdout] 137 - _ => false, [INFO] [stdout] 138 - } [INFO] [stdout] 135 + matches!(self, LoxObject::Primitive(Primitive::Number(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | / match self { [INFO] [stdout] 143 | | LoxObject::Primitive(Primitive::String(_)) => true, [INFO] [stdout] 144 | | _ => false, [INFO] [stdout] 145 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 142 - match self { [INFO] [stdout] 143 - LoxObject::Primitive(Primitive::String(_)) => true, [INFO] [stdout] 144 - _ => false, [INFO] [stdout] 145 - } [INFO] [stdout] 142 + matches!(self, LoxObject::Primitive(Primitive::String(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | / match self { [INFO] [stdout] 150 | | LoxObject::Primitive(Primitive::Boolean(_)) => true, [INFO] [stdout] 151 | | _ => false, [INFO] [stdout] 152 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 149 - match self { [INFO] [stdout] 150 - LoxObject::Primitive(Primitive::Boolean(_)) => true, [INFO] [stdout] 151 - _ => false, [INFO] [stdout] 152 - } [INFO] [stdout] 149 + matches!(self, LoxObject::Primitive(Primitive::Boolean(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:156:9 [INFO] [stdout] | [INFO] [stdout] 156 | / match self { [INFO] [stdout] 157 | | LoxObject::Primitive(Primitive::Nil) => true, [INFO] [stdout] 158 | | _ => false, [INFO] [stdout] 159 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 156 - match self { [INFO] [stdout] 157 - LoxObject::Primitive(Primitive::Nil) => true, [INFO] [stdout] 158 - _ => false, [INFO] [stdout] 159 - } [INFO] [stdout] 156 + matches!(self, LoxObject::Primitive(Primitive::Nil)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:163:9 [INFO] [stdout] | [INFO] [stdout] 163 | / match self { [INFO] [stdout] 164 | | LoxObject::Function { .. } => true, [INFO] [stdout] 165 | | _ => false, [INFO] [stdout] 166 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 163 - match self { [INFO] [stdout] 164 - LoxObject::Function { .. } => true, [INFO] [stdout] 165 - _ => false, [INFO] [stdout] 166 - } [INFO] [stdout] 163 + matches!(self, LoxObject::Function { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/interpreter/lox.rs:131:12 [INFO] [stdout] | [INFO] [stdout] 131 | if params.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `params.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] = note: `#[warn(clippy::len_zero)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: explicit call to `.into_iter()` in function argument accepting `IntoIterator` [INFO] [stdout] --> src/interpreter/lox.rs:137:39 [INFO] [stdout] | [INFO] [stdout] 137 | let pairs = params.iter().zip(args.into_iter()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] note: this parameter accepts any `IntoIterator`, so you don't need to call `.into_iter()` [INFO] [stdout] --> /rustc/3645249d79dfb136b5d8de3ce153d19d6698d92d/library/core/src/iter/traits/iterator.rs:629:11 [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] = note: `#[warn(clippy::useless_conversion)]` on by default [INFO] [stdout] help: consider removing the `.into_iter()` [INFO] [stdout] | [INFO] [stdout] 137 - let pairs = params.iter().zip(args.into_iter()); [INFO] [stdout] 137 + let pairs = params.iter().zip(args); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `interpreter::runtime::object::LoxObject` [INFO] [stdout] --> src/interpreter/lox.rs:228:13 [INFO] [stdout] | [INFO] [stdout] 228 | self.get_at(depth, slot).into() [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `self.get_at(depth, slot)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/lox.rs:242:13 [INFO] [stdout] | [INFO] [stdout] 242 | return Ok(value.into()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] = note: `#[warn(clippy::needless_return)]` on by default [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 242 ~ Ok(value.into()) [INFO] [stdout] 243 | } else { [INFO] [stdout] ... [INFO] [stdout] 246 | .map(|_| Eval::from(value)); [INFO] [stdout] 247 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/lox.rs:244:13 [INFO] [stdout] | [INFO] [stdout] 244 | / return self [INFO] [stdout] 245 | | .assign_global(ident, value.clone()) [INFO] [stdout] 246 | | .map(|_| Eval::from(value)); [INFO] [stdout] | |___________________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 244 ~ self [INFO] [stdout] 245 + .assign_global(ident, value.clone()) [INFO] [stdout] 246 ~ .map(|_| Eval::from(value)) [INFO] [stdout] 247 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `interpreter::runtime::error::RuntimeError` [INFO] [stdout] --> src/interpreter/lox.rs:278:17 [INFO] [stdout] | [INFO] [stdout] 278 | RuntimeError::from(type_error("function", call_obj.type_str())) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `RuntimeError::from()`: `type_error("function", call_obj.type_str())` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `interpreter::runtime::eval::Eval` [INFO] [stdout] --> src/interpreter/lox.rs:330:12 [INFO] [stdout] | [INFO] [stdout] 330 | Ok(Eval::new_continue().into()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `Eval::new_continue()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_conversion [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:201:19 [INFO] [stdout] | [INFO] [stdout] 201 | while let Some(_) = self.next_char_if(|c| is_ident_char(*c)) {} [INFO] [stdout] | ----------^^^^^^^------------------------------------------- help: try: `while self.next_char_if(|c| is_ident_char(*c)).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:209:23 [INFO] [stdout] | [INFO] [stdout] 209 | while let Some(_) = self.next_char_if(|c| c.is_whitespace()) {} [INFO] [stdout] | ----------^^^^^^^------------------------------------------- help: try: `while self.next_char_if(|c| c.is_whitespace()).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:214:27 [INFO] [stdout] | [INFO] [stdout] 214 | while let Some(_) = self.next_char_if(|c| *c != '\n') {} [INFO] [stdout] | ----------^^^^^^^------------------------------------ help: try: `while self.next_char_if(|c| *c != '\n').is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:238:9 [INFO] [stdout] | [INFO] [stdout] 238 | self.ci.peek().map_or(false, |(_, c)| c.is_ascii_digit()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 238 - self.ci.peek().map_or(false, |(_, c)| c.is_ascii_digit()) [INFO] [stdout] 238 + self.ci.peek().is_some_and(|(_, c)| c.is_ascii_digit()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:244:13 [INFO] [stdout] | [INFO] [stdout] 244 | return ch.1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 244 - return ch.1; [INFO] [stdout] 244 + ch.1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/interpreter/lox.rs:495:16 [INFO] [stdout] | [INFO] [stdout] 495 | if !l_as_num.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `l_as_num.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/interpreter/lox.rs:513:16 [INFO] [stdout] | [INFO] [stdout] 513 | if !l_as_num.is_some() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ help: try: `l_as_num.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:302:17 [INFO] [stdout] | [INFO] [stdout] 302 | return Some(Ok(tok)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 302 - return Some(Ok(tok)); [INFO] [stdout] 302 + Some(Ok(tok)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/class.rs:25:9 [INFO] [stdout] | [INFO] [stdout] 25 | / return Self { [INFO] [stdout] 26 | | name, [INFO] [stdout] 27 | | methods, [INFO] [stdout] 28 | | statics, [INFO] [stdout] 29 | | init, [INFO] [stdout] 30 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 25 ~ Self { [INFO] [stdout] 26 + name, [INFO] [stdout] 27 + methods, [INFO] [stdout] 28 + statics, [INFO] [stdout] 29 + init, [INFO] [stdout] 30 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/class.rs:63:9 [INFO] [stdout] | [INFO] [stdout] 63 | / return Self { [INFO] [stdout] 64 | | constructor, [INFO] [stdout] 65 | | properties: HashMap::with_capacity(DEFAULT_PROPERTY_HASH_SIZE), [INFO] [stdout] 66 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 63 ~ Self { [INFO] [stdout] 64 + constructor, [INFO] [stdout] 65 + properties: HashMap::with_capacity(DEFAULT_PROPERTY_HASH_SIZE), [INFO] [stdout] 66 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:38:17 [INFO] [stdout] | [INFO] [stdout] 38 | return Err(ConversionError::InvalidBinaryOperator(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 38 - return Err(ConversionError::InvalidBinaryOperator(value.into())); [INFO] [stdout] 38 + Err(ConversionError::InvalidBinaryOperator(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/control.rs:26:9 [INFO] [stdout] | [INFO] [stdout] 26 | / match self { [INFO] [stdout] 27 | | Self::Return(_) => true, [INFO] [stdout] 28 | | _ => false, [INFO] [stdout] 29 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] = note: `#[warn(clippy::match_like_matches_macro)]` on by default [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 26 - match self { [INFO] [stdout] 27 - Self::Return(_) => true, [INFO] [stdout] 28 - _ => false, [INFO] [stdout] 29 - } [INFO] [stdout] 26 + matches!(self, Self::Return(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/control.rs:33:9 [INFO] [stdout] | [INFO] [stdout] 33 | / match self { [INFO] [stdout] 34 | | Self::Break => true, [INFO] [stdout] 35 | | _ => false, [INFO] [stdout] 36 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 33 - match self { [INFO] [stdout] 34 - Self::Break => true, [INFO] [stdout] 35 - _ => false, [INFO] [stdout] 36 - } [INFO] [stdout] 33 + matches!(self, Self::Break) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/control.rs:40:9 [INFO] [stdout] | [INFO] [stdout] 40 | / match self { [INFO] [stdout] 41 | | Self::Continue => true, [INFO] [stdout] 42 | | _ => false, [INFO] [stdout] 43 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 40 - match self { [INFO] [stdout] 41 - Self::Continue => true, [INFO] [stdout] 42 - _ => false, [INFO] [stdout] 43 - } [INFO] [stdout] 40 + matches!(self, Self::Continue) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:90:17 [INFO] [stdout] | [INFO] [stdout] 90 | return Err(ConversionError::InvalidLogicalOperator(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 90 - return Err(ConversionError::InvalidLogicalOperator(value.into())); [INFO] [stdout] 90 + Err(ConversionError::InvalidLogicalOperator(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | return Err(ConversionError::InvalidUnaryOperator(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 - return Err(ConversionError::InvalidUnaryOperator(value.into())); [INFO] [stdout] 129 + Err(ConversionError::InvalidUnaryOperator(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `num` after checking its variant with `is_err` [INFO] [stdout] --> src/lang/tree/ast.rs:197:44 [INFO] [stdout] | [INFO] [stdout] 194 | if num.is_err() { [INFO] [stdout] | --------------- help: try: `if let Ok() = num` [INFO] [stdout] ... [INFO] [stdout] 197 | Ok(Literal::new_number(num.unwrap(), value.position)) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:211:17 [INFO] [stdout] | [INFO] [stdout] 211 | return Err(ConversionError::InvalidLiteralType(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - return Err(ConversionError::InvalidLiteralType(value.into())); [INFO] [stdout] 211 + Err(ConversionError::InvalidLiteralType(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/eval.rs:64:9 [INFO] [stdout] | [INFO] [stdout] 64 | / match self { [INFO] [stdout] 65 | | Self::Ctrl(_) => true, [INFO] [stdout] 66 | | _ => false, [INFO] [stdout] 67 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 64 - match self { [INFO] [stdout] 65 - Self::Ctrl(_) => true, [INFO] [stdout] 66 - _ => false, [INFO] [stdout] 67 - } [INFO] [stdout] 64 + matches!(self, Self::Ctrl(_)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/lang/tree/ast.rs:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | / if let Some(depth) = self.depth.get() { [INFO] [stdout] 262 | | if let Some(slot) = self.slot.get() { [INFO] [stdout] 263 | | return Some((depth, slot)); [INFO] [stdout] 264 | | } [INFO] [stdout] 265 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 261 ~ if let Some(depth) = self.depth.get() [INFO] [stdout] 262 ~ && let Some(slot) = self.slot.get() { [INFO] [stdout] 263 | return Some((depth, slot)); [INFO] [stdout] 264 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/function.rs:65:13 [INFO] [stdout] | [INFO] [stdout] 65 | return write!(f, ", ...) {{}}"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 65 - return write!(f, ", ...) {{}}"); [INFO] [stdout] 65 + write!(f, ", ...) {{}}") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/runtime/function.rs:67:13 [INFO] [stdout] | [INFO] [stdout] 67 | return write!(f, ") {{}}"); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 67 - return write!(f, ") {{}}"); [INFO] [stdout] 67 + write!(f, ") {{}}") [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: re-implementing `PartialEq::ne` is unnecessary [INFO] [stdout] --> src/interpreter/runtime/object.rs:124:5 [INFO] [stdout] | [INFO] [stdout] 124 | fn ne(&self, other: &Self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_ne_impl [INFO] [stdout] = note: `#[warn(clippy::partialeq_ne_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | / match self { [INFO] [stdout] 136 | | LoxObject::Primitive(Primitive::Number(_)) => true, [INFO] [stdout] 137 | | _ => false, [INFO] [stdout] 138 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 135 - match self { [INFO] [stdout] 136 - LoxObject::Primitive(Primitive::Number(_)) => true, [INFO] [stdout] 137 - _ => false, [INFO] [stdout] 138 - } [INFO] [stdout] 135 + matches!(self, LoxObject::Primitive(Primitive::Number(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:142:9 [INFO] [stdout] | [INFO] [stdout] 142 | / match self { [INFO] [stdout] 143 | | LoxObject::Primitive(Primitive::String(_)) => true, [INFO] [stdout] 144 | | _ => false, [INFO] [stdout] 145 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 142 - match self { [INFO] [stdout] 143 - LoxObject::Primitive(Primitive::String(_)) => true, [INFO] [stdout] 144 - _ => false, [INFO] [stdout] 145 - } [INFO] [stdout] 142 + matches!(self, LoxObject::Primitive(Primitive::String(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:149:9 [INFO] [stdout] | [INFO] [stdout] 149 | / match self { [INFO] [stdout] 150 | | LoxObject::Primitive(Primitive::Boolean(_)) => true, [INFO] [stdout] 151 | | _ => false, [INFO] [stdout] 152 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 149 - match self { [INFO] [stdout] 150 - LoxObject::Primitive(Primitive::Boolean(_)) => true, [INFO] [stdout] 151 - _ => false, [INFO] [stdout] 152 - } [INFO] [stdout] 149 + matches!(self, LoxObject::Primitive(Primitive::Boolean(_))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:156:9 [INFO] [stdout] | [INFO] [stdout] 156 | / match self { [INFO] [stdout] 157 | | LoxObject::Primitive(Primitive::Nil) => true, [INFO] [stdout] 158 | | _ => false, [INFO] [stdout] 159 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 156 - match self { [INFO] [stdout] 157 - LoxObject::Primitive(Primitive::Nil) => true, [INFO] [stdout] 158 - _ => false, [INFO] [stdout] 159 - } [INFO] [stdout] 156 + matches!(self, LoxObject::Primitive(Primitive::Nil)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/interpreter/runtime/object.rs:163:9 [INFO] [stdout] | [INFO] [stdout] 163 | / match self { [INFO] [stdout] 164 | | LoxObject::Function { .. } => true, [INFO] [stdout] 165 | | _ => false, [INFO] [stdout] 166 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_like_matches_macro [INFO] [stdout] help: use `matches!` directly [INFO] [stdout] | [INFO] [stdout] 163 - match self { [INFO] [stdout] 164 - LoxObject::Function { .. } => true, [INFO] [stdout] 165 - _ => false, [INFO] [stdout] 166 - } [INFO] [stdout] 163 + matches!(self, LoxObject::Function { .. }) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/lang/tree/parser.rs:26:40 [INFO] [stdout] | [INFO] [stdout] 26 | let token = result.map_err(|e| ParseError::from(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `ParseError::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lang/tree/parser.rs:119:9 [INFO] [stdout] | [INFO] [stdout] 119 | self.errors.len() > 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.errors.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | return self.statement(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 135 - return self.statement(); [INFO] [stdout] 135 + self.statement() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tree/parser.rs:307:16 [INFO] [stdout] | [INFO] [stdout] 307 | if let Some(_) = self.match_one(TokenType::Semicolon) { [INFO] [stdout] | -------^^^^^^^--------------------------------------- help: try: `if self.match_one(TokenType::Semicolon).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:201:19 [INFO] [stdout] | [INFO] [stdout] 201 | while let Some(_) = self.next_char_if(|c| is_ident_char(*c)) {} [INFO] [stdout] | ----------^^^^^^^------------------------------------------- help: try: `while self.next_char_if(|c| is_ident_char(*c)).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tree/parser.rs:331:19 [INFO] [stdout] | [INFO] [stdout] 331 | while let Some(_) = self.tokens.peek_next_if(not_terminated)? { [INFO] [stdout] | ----------^^^^^^^-------------------------------------------- help: try: `while self.tokens.peek_next_if(not_terminated)?.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:209:23 [INFO] [stdout] | [INFO] [stdout] 209 | while let Some(_) = self.next_char_if(|c| c.is_whitespace()) {} [INFO] [stdout] | ----------^^^^^^^------------------------------------------- help: try: `while self.next_char_if(|c| c.is_whitespace()).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:214:27 [INFO] [stdout] | [INFO] [stdout] 214 | while let Some(_) = self.next_char_if(|c| *c != '\n') {} [INFO] [stdout] | ----------^^^^^^^------------------------------------ help: try: `while self.next_char_if(|c| *c != '\n').is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `map_or` can be simplified [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:238:9 [INFO] [stdout] | [INFO] [stdout] 238 | self.ci.peek().map_or(false, |(_, c)| c.is_ascii_digit()) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_map_or [INFO] [stdout] = note: `#[warn(clippy::unnecessary_map_or)]` on by default [INFO] [stdout] help: use `is_some_and` instead [INFO] [stdout] | [INFO] [stdout] 238 - self.ci.peek().map_or(false, |(_, c)| c.is_ascii_digit()) [INFO] [stdout] 238 + self.ci.peek().is_some_and(|(_, c)| c.is_ascii_digit()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:244:13 [INFO] [stdout] | [INFO] [stdout] 244 | return ch.1; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 244 - return ch.1; [INFO] [stdout] 244 + ch.1 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:406:9 [INFO] [stdout] | [INFO] [stdout] 406 | return Ok(lhs); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 406 - return Ok(lhs); [INFO] [stdout] 406 + Ok(lhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:419:9 [INFO] [stdout] | [INFO] [stdout] 419 | return Ok(lhs); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 419 - return Ok(lhs); [INFO] [stdout] 419 + Ok(lhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tokenizer/scanner.rs:302:17 [INFO] [stdout] | [INFO] [stdout] 302 | return Some(Ok(tok)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 302 - return Some(Ok(tok)); [INFO] [stdout] 302 + Some(Ok(tok)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lang/tree/parser.rs:645:13 [INFO] [stdout] | [INFO] [stdout] 645 | / match self.match_one(*t) { [INFO] [stdout] 646 | | Some(t) => return Some(t), [INFO] [stdout] 647 | | _ => {} [INFO] [stdout] 648 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(t) = self.match_one(*t) { return Some(t) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:762:9 [INFO] [stdout] | [INFO] [stdout] 762 | / return Stmt::Var { [INFO] [stdout] 763 | | name: name, [INFO] [stdout] 764 | | initializer: Some(Expr::Function { value }), [INFO] [stdout] 765 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 762 ~ Stmt::Var { [INFO] [stdout] 763 + name: name, [INFO] [stdout] 764 + initializer: Some(Expr::Function { value }), [INFO] [stdout] 765 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:767:9 [INFO] [stdout] | [INFO] [stdout] 767 | / return Stmt::Expression { [INFO] [stdout] 768 | | expr: Expr::Function { value }, [INFO] [stdout] 769 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 767 ~ Stmt::Expression { [INFO] [stdout] 768 + expr: Expr::Function { value }, [INFO] [stdout] 769 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Resolver` [INFO] [stdout] --> src/lang/tree/resolver.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | / pub fn new() -> Self { [INFO] [stdout] 24 | | Resolver { scopes: Vec::new() } [INFO] [stdout] 25 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 21 + impl Default for Resolver { [INFO] [stdout] 22 + fn default() -> Self { [INFO] [stdout] 23 + Self::new() [INFO] [stdout] 24 + } [INFO] [stdout] 25 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/lang/tree/resolver.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Some(scope) = self.scopes.last_mut() { [INFO] [stdout] 60 | | if let Some((slot, is_defined)) = scope.get_mut(name.name_str()) { [INFO] [stdout] 61 | | name.swap_depth(depth); [INFO] [stdout] 62 | | name.swap_slot(*slot); [INFO] [stdout] ... | [INFO] [stdout] 65 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 59 ~ if let Some(scope) = self.scopes.last_mut() [INFO] [stdout] 60 ~ && let Some((slot, is_defined)) = scope.get_mut(name.name_str()) { [INFO] [stdout] 61 | name.swap_depth(depth); [INFO] [stdout] 62 | name.swap_slot(*slot); [INFO] [stdout] 63 | *is_defined = true; [INFO] [stdout] 64 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:38:17 [INFO] [stdout] | [INFO] [stdout] 38 | return Err(ConversionError::InvalidBinaryOperator(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 38 - return Err(ConversionError::InvalidBinaryOperator(value.into())); [INFO] [stdout] 38 + Err(ConversionError::InvalidBinaryOperator(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/resolver.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 122 - return Ok(()); [INFO] [stdout] 122 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/resolver.rs:128:17 [INFO] [stdout] | [INFO] [stdout] 128 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return Ok(()); [INFO] [stdout] 128 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:90:17 [INFO] [stdout] | [INFO] [stdout] 90 | return Err(ConversionError::InvalidLogicalOperator(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 90 - return Err(ConversionError::InvalidLogicalOperator(value.into())); [INFO] [stdout] 90 + Err(ConversionError::InvalidLogicalOperator(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:129:17 [INFO] [stdout] | [INFO] [stdout] 129 | return Err(ConversionError::InvalidUnaryOperator(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 129 - return Err(ConversionError::InvalidUnaryOperator(value.into())); [INFO] [stdout] 129 + Err(ConversionError::InvalidUnaryOperator(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: called `unwrap` on `num` after checking its variant with `is_err` [INFO] [stdout] --> src/lang/tree/ast.rs:197:44 [INFO] [stdout] | [INFO] [stdout] 194 | if num.is_err() { [INFO] [stdout] | --------------- help: try: `if let Ok() = num` [INFO] [stdout] ... [INFO] [stdout] 197 | Ok(Literal::new_number(num.unwrap(), value.position)) [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_unwrap [INFO] [stdout] = note: `#[warn(clippy::unnecessary_unwrap)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/ast.rs:211:17 [INFO] [stdout] | [INFO] [stdout] 211 | return Err(ConversionError::InvalidLiteralType(value.into())); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 211 - return Err(ConversionError::InvalidLiteralType(value.into())); [INFO] [stdout] 211 + Err(ConversionError::InvalidLiteralType(value.into())) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/lang/tree/ast.rs:261:9 [INFO] [stdout] | [INFO] [stdout] 261 | / if let Some(depth) = self.depth.get() { [INFO] [stdout] 262 | | if let Some(slot) = self.slot.get() { [INFO] [stdout] 263 | | return Some((depth, slot)); [INFO] [stdout] 264 | | } [INFO] [stdout] 265 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] = note: `#[warn(clippy::collapsible_if)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 261 ~ if let Some(depth) = self.depth.get() [INFO] [stdout] 262 ~ && let Some(slot) = self.slot.get() { [INFO] [stdout] 263 | return Some((depth, slot)); [INFO] [stdout] 264 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> src/lang/tree/parser.rs:26:40 [INFO] [stdout] | [INFO] [stdout] 26 | let token = result.map_err(|e| ParseError::from(e))?; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the associated function itself: `ParseError::from` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/lang/tree/parser.rs:119:9 [INFO] [stdout] | [INFO] [stdout] 119 | self.errors.len() > 0 [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!self.errors.is_empty()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:135:9 [INFO] [stdout] | [INFO] [stdout] 135 | return self.statement(); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 135 - return self.statement(); [INFO] [stdout] 135 + self.statement() [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tree/parser.rs:307:16 [INFO] [stdout] | [INFO] [stdout] 307 | if let Some(_) = self.match_one(TokenType::Semicolon) { [INFO] [stdout] | -------^^^^^^^--------------------------------------- help: try: `if self.match_one(TokenType::Semicolon).is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant pattern matching, consider using `is_some()` [INFO] [stdout] --> src/lang/tree/parser.rs:331:19 [INFO] [stdout] | [INFO] [stdout] 331 | while let Some(_) = self.tokens.peek_next_if(not_terminated)? { [INFO] [stdout] | ----------^^^^^^^-------------------------------------------- help: try: `while self.tokens.peek_next_if(not_terminated)?.is_some()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:406:9 [INFO] [stdout] | [INFO] [stdout] 406 | return Ok(lhs); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 406 - return Ok(lhs); [INFO] [stdout] 406 + Ok(lhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:419:9 [INFO] [stdout] | [INFO] [stdout] 419 | return Ok(lhs); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 419 - return Ok(lhs); [INFO] [stdout] 419 + Ok(lhs) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you seem to be trying to use `match` for destructuring a single pattern. Consider using `if let` [INFO] [stdout] --> src/lang/tree/parser.rs:645:13 [INFO] [stdout] | [INFO] [stdout] 645 | / match self.match_one(*t) { [INFO] [stdout] 646 | | Some(t) => return Some(t), [INFO] [stdout] 647 | | _ => {} [INFO] [stdout] 648 | | } [INFO] [stdout] | |_____________^ help: try: `if let Some(t) = self.match_one(*t) { return Some(t) }` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stdout] = note: `#[warn(clippy::single_match)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:762:9 [INFO] [stdout] | [INFO] [stdout] 762 | / return Stmt::Var { [INFO] [stdout] 763 | | name: name, [INFO] [stdout] 764 | | initializer: Some(Expr::Function { value }), [INFO] [stdout] 765 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 762 ~ Stmt::Var { [INFO] [stdout] 763 + name: name, [INFO] [stdout] 764 + initializer: Some(Expr::Function { value }), [INFO] [stdout] 765 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/parser.rs:767:9 [INFO] [stdout] | [INFO] [stdout] 767 | / return Stmt::Expression { [INFO] [stdout] 768 | | expr: Expr::Function { value }, [INFO] [stdout] 769 | | }; [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 767 ~ Stmt::Expression { [INFO] [stdout] 768 + expr: Expr::Function { value }, [INFO] [stdout] 769 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: you should consider adding a `Default` implementation for `Resolver` [INFO] [stdout] --> src/lang/tree/resolver.rs:23:5 [INFO] [stdout] | [INFO] [stdout] 23 | / pub fn new() -> Self { [INFO] [stdout] 24 | | Resolver { scopes: Vec::new() } [INFO] [stdout] 25 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stdout] help: try adding this [INFO] [stdout] | [INFO] [stdout] 21 + impl Default for Resolver { [INFO] [stdout] 22 + fn default() -> Self { [INFO] [stdout] 23 + Self::new() [INFO] [stdout] 24 + } [INFO] [stdout] 25 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` statement can be collapsed [INFO] [stdout] --> src/lang/tree/resolver.rs:59:9 [INFO] [stdout] | [INFO] [stdout] 59 | / if let Some(scope) = self.scopes.last_mut() { [INFO] [stdout] 60 | | if let Some((slot, is_defined)) = scope.get_mut(name.name_str()) { [INFO] [stdout] 61 | | name.swap_depth(depth); [INFO] [stdout] 62 | | name.swap_slot(*slot); [INFO] [stdout] ... | [INFO] [stdout] 65 | | } [INFO] [stdout] | |_________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 59 ~ if let Some(scope) = self.scopes.last_mut() [INFO] [stdout] 60 ~ && let Some((slot, is_defined)) = scope.get_mut(name.name_str()) { [INFO] [stdout] 61 | name.swap_depth(depth); [INFO] [stdout] 62 | name.swap_slot(*slot); [INFO] [stdout] 63 | *is_defined = true; [INFO] [stdout] 64 ~ } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/resolver.rs:122:17 [INFO] [stdout] | [INFO] [stdout] 122 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 122 - return Ok(()); [INFO] [stdout] 122 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/lang/tree/resolver.rs:128:17 [INFO] [stdout] | [INFO] [stdout] 128 | return Ok(()); [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stdout] help: remove `return` [INFO] [stdout] | [INFO] [stdout] 128 - return Ok(()); [INFO] [stdout] 128 + Ok(()) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:25:34 [INFO] [stdout] | [INFO] [stdout] 25 | let mut parser = Parser::new(&INPUT); [INFO] [stdout] | ^^^^^^ help: change this to: `INPUT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/main.rs:25:34 [INFO] [stdout] | [INFO] [stdout] 25 | let mut parser = Parser::new(&INPUT); [INFO] [stdout] | ^^^^^^ help: change this to: `INPUT` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_borrow [INFO] [stdout] = note: `#[warn(clippy::needless_borrow)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.01s [INFO] running `Command { std: "docker" "inspect" "681ce7e637022e15453ef745135e027b5afdcf89b7615b8f82973fffaeeb4f04", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "681ce7e637022e15453ef745135e027b5afdcf89b7615b8f82973fffaeeb4f04", kill_on_drop: false }` [INFO] [stdout] 681ce7e637022e15453ef745135e027b5afdcf89b7615b8f82973fffaeeb4f04