[INFO] fetching crate num_parser2 0.1.0... [INFO] linting num_parser2-0.1.0 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate num_parser2 0.1.0 into /workspace/builds/worker-4-tc1/source [INFO] started tweaking crates.io crate num_parser2 0.1.0 [INFO] finished tweaking crates.io crate num_parser2 0.1.0 [INFO] tweaked toml for crates.io crate num_parser2 0.1.0 written to /workspace/builds/worker-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate num_parser2 0.1.0 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] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Updating crates.io index [INFO] [stderr] Locking 28 packages to latest compatible versions [INFO] [stderr] Adding itertools v0.13.0 (available: v0.14.0) [INFO] [stderr] Adding rand v0.8.5 (available: v0.10.0) [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] [stderr] Downloading crates ... [INFO] [stderr] Downloaded tuple-conv v1.0.1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 3027c0aebbe9125e443987493f37341bf30a8924e1575c16514f54b91d3956c9 [INFO] running `Command { std: "docker" "start" "-a" "3027c0aebbe9125e443987493f37341bf30a8924e1575c16514f54b91d3956c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3027c0aebbe9125e443987493f37341bf30a8924e1575c16514f54b91d3956c9", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3027c0aebbe9125e443987493f37341bf30a8924e1575c16514f54b91d3956c9", kill_on_drop: false }` [INFO] [stdout] 3027c0aebbe9125e443987493f37341bf30a8924e1575c16514f54b91d3956c9 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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] 670bf731af568a437dddb49ad9be21ada7defcddbac0d2e05633add1078a63b1 [INFO] running `Command { std: "docker" "start" "-a" "670bf731af568a437dddb49ad9be21ada7defcddbac0d2e05633add1078a63b1", kill_on_drop: false }` [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Checking tuple-conv v1.0.1 [INFO] [stderr] Checking num-integer v0.1.46 [INFO] [stderr] Checking num-iter v0.1.45 [INFO] [stderr] Checking num-bigint v0.4.6 [INFO] [stderr] Checking num-complex v0.4.6 [INFO] [stderr] Checking num-rational v0.4.2 [INFO] [stderr] Checking num v0.4.3 [INFO] [stderr] Checking num_parser2 v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::ops::Add` [INFO] [stdout] --> src/objects/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::ops::Add; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Add` [INFO] [stdout] --> src/objects/mod.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::ops::Add; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Not` [INFO] [stdout] --> src/operators/mod.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::ops::Not; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Not` [INFO] [stdout] --> src/operators/mod.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use std::ops::Not; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/function/builtin.rs:256:23 [INFO] [stdout] | [INFO] [stdout] 256 | fn branch(arguments: &Vec>, context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] = note: `#[warn(clippy::vec_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/function/builtin.rs:256:22 [INFO] [stdout] | [INFO] [stdout] 256 | fn branch(arguments: &Vec>, context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 256 - fn branch(arguments: &Vec>, context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] 256 + fn branch(arguments: &[Box], context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/function/builtin.rs:256:23 [INFO] [stdout] | [INFO] [stdout] 256 | fn branch(arguments: &Vec>, context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] = note: `#[warn(clippy::vec_box)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/function/builtin.rs:256:22 [INFO] [stdout] | [INFO] [stdout] 256 | fn branch(arguments: &Vec>, context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] = note: `#[warn(clippy::ptr_arg)]` on by default [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 256 - fn branch(arguments: &Vec>, context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] 256 + fn branch(arguments: &[Box], context: &Context, depth: u32) -> EvalResult { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/function/mod.rs:209:17 [INFO] [stdout] | [INFO] [stdout] 209 | / if arguments.len() != count { [INFO] [stdout] 210 | | return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] 211 | | func_name: self.func_identifier.to_owned(), [INFO] [stdout] 212 | | expected: count as u8, [INFO] [stdout] 213 | | given: arguments.len() as u8, [INFO] [stdout] 214 | | }); [INFO] [stdout] 215 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 208 ~ Arguments::Const(count) [INFO] [stdout] 209 ~ if arguments.len() != count => { [INFO] [stdout] 210 | return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] ... [INFO] [stdout] 214 | }); [INFO] [stdout] 215 ~ } [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/function/mod.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | / match self.args { [INFO] [stdout] 208 | | Arguments::Const(count) => { [INFO] [stdout] 209 | | if arguments.len() != count { [INFO] [stdout] 210 | | return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] ... | [INFO] [stdout] 217 | | _ => (), [INFO] [stdout] 218 | | } [INFO] [stdout] | |_________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 207 ~ if let Arguments::Const(count) = self.args { [INFO] [stdout] 208 + if arguments.len() != count { [INFO] [stdout] 209 + return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] 210 + func_name: self.func_identifier.to_owned(), [INFO] [stdout] 211 + expected: count as u8, [INFO] [stdout] 212 + given: arguments.len() as u8, [INFO] [stdout] 213 + }); [INFO] [stdout] 214 + } [INFO] [stdout] 215 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/function/mod.rs:277:16 [INFO] [stdout] | [INFO] [stdout] 277 | arguments: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 277 ~ arguments: &[Box], [INFO] [stdout] 278 | context: &Context, [INFO] [stdout] 279 | depth: u32, [INFO] [stdout] 280 | ) -> EvalResult { [INFO] [stdout] 281 ~ Expression::Union(arguments.to_owned()).eval(context, None, depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `if` can be collapsed into the outer `match` [INFO] [stdout] --> src/function/mod.rs:209:17 [INFO] [stdout] | [INFO] [stdout] 209 | / if arguments.len() != count { [INFO] [stdout] 210 | | return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] 211 | | func_name: self.func_identifier.to_owned(), [INFO] [stdout] 212 | | expected: count as u8, [INFO] [stdout] 213 | | given: arguments.len() as u8, [INFO] [stdout] 214 | | }); [INFO] [stdout] 215 | | } [INFO] [stdout] | |_________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_match [INFO] [stdout] = note: `#[warn(clippy::collapsible_match)]` on by default [INFO] [stdout] help: collapse nested if block [INFO] [stdout] | [INFO] [stdout] 208 ~ Arguments::Const(count) [INFO] [stdout] 209 ~ if arguments.len() != count => { [INFO] [stdout] 210 | return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] ... [INFO] [stdout] 214 | }); [INFO] [stdout] 215 ~ } [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/function/mod.rs:207:9 [INFO] [stdout] | [INFO] [stdout] 207 | / match self.args { [INFO] [stdout] 208 | | Arguments::Const(count) => { [INFO] [stdout] 209 | | if arguments.len() != count { [INFO] [stdout] 210 | | return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] ... | [INFO] [stdout] 217 | | _ => (), [INFO] [stdout] 218 | | } [INFO] [stdout] | |_________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 207 ~ if let Arguments::Const(count) = self.args { [INFO] [stdout] 208 + if arguments.len() != count { [INFO] [stdout] 209 + return Err(ErrorType::WrongFunctionArgumentsAmount { [INFO] [stdout] 210 + func_name: self.func_identifier.to_owned(), [INFO] [stdout] 211 + expected: count as u8, [INFO] [stdout] 212 + given: arguments.len() as u8, [INFO] [stdout] 213 + }); [INFO] [stdout] 214 + } [INFO] [stdout] 215 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/function/mod.rs:277:16 [INFO] [stdout] | [INFO] [stdout] 277 | arguments: &Vec>, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 277 ~ arguments: &[Box], [INFO] [stdout] 278 | context: &Context, [INFO] [stdout] 279 | depth: u32, [INFO] [stdout] 280 | ) -> EvalResult { [INFO] [stdout] 281 ~ Expression::Union(arguments.to_owned()).eval(context, None, depth) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/context/settings.rs:82:17 [INFO] [stdout] | [INFO] [stdout] 78 | / let result_value = match final_result { [INFO] [stdout] 79 | | Ok(val) => val, [INFO] [stdout] 80 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 81 | | }; [INFO] [stdout] | |__________________- unnecessary `let` binding [INFO] [stdout] 82 | result_value [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 78 ~ [INFO] [stdout] 79 ~ match final_result { [INFO] [stdout] 80 + Ok(val) => val, [INFO] [stdout] 81 + Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 82 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:73:38 [INFO] [stdout] | [INFO] [stdout] 73 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 74 | | Ok(val) => val, [INFO] [stdout] 75 | | Err(e) => return Err(e), // Return the error if division fails [INFO] [stdout] 76 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:78:36 [INFO] [stdout] | [INFO] [stdout] 78 | let result_value = match final_result { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 79 | | Ok(val) => val, [INFO] [stdout] 80 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 81 | | }; [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/context/settings.rs:97:17 [INFO] [stdout] | [INFO] [stdout] 92 | / let result_value = match final_result { [INFO] [stdout] 93 | | Ok(val) => val, [INFO] [stdout] 94 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 95 | | }; [INFO] [stdout] | |__________________- unnecessary `let` binding [INFO] [stdout] 96 | [INFO] [stdout] 97 | result_value [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 92 ~ [INFO] [stdout] 93 | [INFO] [stdout] 94 ~ match final_result { [INFO] [stdout] 95 + Ok(val) => val, [INFO] [stdout] 96 + Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 97 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:86:38 [INFO] [stdout] | [INFO] [stdout] 86 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 87 | | Ok(val) => val, [INFO] [stdout] 88 | | Err(e) => return Err(e), // Return the error if division fails [INFO] [stdout] 89 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:92:36 [INFO] [stdout] | [INFO] [stdout] 92 | let result_value = match final_result { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 93 | | Ok(val) => val, [INFO] [stdout] 94 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 95 | | }; [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:106:38 [INFO] [stdout] | [INFO] [stdout] 106 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 107 | | Ok(val) => val, [INFO] [stdout] 108 | | Err(e) => return Err(e), // Return error if division fails [INFO] [stdout] 109 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:112:17 [INFO] [stdout] | [INFO] [stdout] 112 | / match final_result { [INFO] [stdout] 113 | | Ok(val) => val, [INFO] [stdout] 114 | | Err(e) => return Err(e), // Return error if multiplication fails [INFO] [stdout] 115 | | } [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:120:38 [INFO] [stdout] | [INFO] [stdout] 120 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 121 | | Ok(val) => val, [INFO] [stdout] 122 | | Err(e) => return Err(e), // Return error if division fails [INFO] [stdout] 123 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:126:17 [INFO] [stdout] | [INFO] [stdout] 126 | / match final_result { [INFO] [stdout] 127 | | Ok(val) => val, [INFO] [stdout] 128 | | Err(e) => return Err(e), // Return error if multiplication fails [INFO] [stdout] 129 | | } [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/context/mod.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | / impl Default for Context { [INFO] [stdout] 28 | | fn default() -> Self { [INFO] [stdout] 29 | | Self { [INFO] [stdout] 30 | | functions: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 37 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 12 + #[derive(Default)] [INFO] [stdout] 13 | pub struct Context { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/context/settings.rs:82:17 [INFO] [stdout] | [INFO] [stdout] 78 | / let result_value = match final_result { [INFO] [stdout] 79 | | Ok(val) => val, [INFO] [stdout] 80 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 81 | | }; [INFO] [stdout] | |__________________- unnecessary `let` binding [INFO] [stdout] 82 | result_value [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] = note: `#[warn(clippy::let_and_return)]` on by default [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 78 ~ [INFO] [stdout] 79 ~ match final_result { [INFO] [stdout] 80 + Ok(val) => val, [INFO] [stdout] 81 + Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 82 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:73:38 [INFO] [stdout] | [INFO] [stdout] 73 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 74 | | Ok(val) => val, [INFO] [stdout] 75 | | Err(e) => return Err(e), // Return the error if division fails [INFO] [stdout] 76 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] = note: `#[warn(clippy::question_mark)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:78:36 [INFO] [stdout] | [INFO] [stdout] 78 | let result_value = match final_result { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 79 | | Ok(val) => val, [INFO] [stdout] 80 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 81 | | }; [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: returning the result of a `let` binding from a block [INFO] [stdout] --> src/context/settings.rs:97:17 [INFO] [stdout] | [INFO] [stdout] 92 | / let result_value = match final_result { [INFO] [stdout] 93 | | Ok(val) => val, [INFO] [stdout] 94 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 95 | | }; [INFO] [stdout] | |__________________- unnecessary `let` binding [INFO] [stdout] 96 | [INFO] [stdout] 97 | result_value [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stdout] help: return the expression directly [INFO] [stdout] | [INFO] [stdout] 92 ~ [INFO] [stdout] 93 | [INFO] [stdout] 94 ~ match final_result { [INFO] [stdout] 95 + Ok(val) => val, [INFO] [stdout] 96 + Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 97 + } [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:86:38 [INFO] [stdout] | [INFO] [stdout] 86 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 87 | | Ok(val) => val, [INFO] [stdout] 88 | | Err(e) => return Err(e), // Return the error if division fails [INFO] [stdout] 89 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:92:36 [INFO] [stdout] | [INFO] [stdout] 92 | let result_value = match final_result { [INFO] [stdout] | ____________________________________^ [INFO] [stdout] 93 | | Ok(val) => val, [INFO] [stdout] 94 | | Err(e) => return Err(e), // Return the error if multiplication fails [INFO] [stdout] 95 | | }; [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:106:38 [INFO] [stdout] | [INFO] [stdout] 106 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 107 | | Ok(val) => val, [INFO] [stdout] 108 | | Err(e) => return Err(e), // Return error if division fails [INFO] [stdout] 109 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:112:17 [INFO] [stdout] | [INFO] [stdout] 112 | / match final_result { [INFO] [stdout] 113 | | Ok(val) => val, [INFO] [stdout] 114 | | Err(e) => return Err(e), // Return error if multiplication fails [INFO] [stdout] 115 | | } [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:120:38 [INFO] [stdout] | [INFO] [stdout] 120 | let division_value = match division_result { [INFO] [stdout] | ______________________________________^ [INFO] [stdout] 121 | | Ok(val) => val, [INFO] [stdout] 122 | | Err(e) => return Err(e), // Return error if division fails [INFO] [stdout] 123 | | }; [INFO] [stdout] | |_________________^ help: try instead: `division_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `match` expression can be replaced with `?` [INFO] [stdout] --> src/context/settings.rs:126:17 [INFO] [stdout] | [INFO] [stdout] 126 | / match final_result { [INFO] [stdout] 127 | | Ok(val) => val, [INFO] [stdout] 128 | | Err(e) => return Err(e), // Return error if multiplication fails [INFO] [stdout] 129 | | } [INFO] [stdout] | |_________________^ help: try instead: `final_result?` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `impl` can be derived [INFO] [stdout] --> src/context/mod.rs:27:1 [INFO] [stdout] | [INFO] [stdout] 27 | / impl Default for Context { [INFO] [stdout] 28 | | fn default() -> Self { [INFO] [stdout] 29 | | Self { [INFO] [stdout] 30 | | functions: HashMap::new(), [INFO] [stdout] ... | [INFO] [stdout] 37 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derivable_impls [INFO] [stdout] = note: `#[warn(clippy::derivable_impls)]` on by default [INFO] [stdout] help: replace the manual implementation with a derive attribute [INFO] [stdout] | [INFO] [stdout] 12 + #[derive(Default)] [INFO] [stdout] 13 | pub struct Context { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 65 | / return Ok(Request::VarDeclaration( [INFO] [stdout] 66 | | identifier.clone(), [INFO] [stdout] 67 | | Box::new(right.clone()), [INFO] [stdout] 68 | | )) [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] 65 ~ Ok(Request::VarDeclaration( [INFO] [stdout] 66 + identifier.clone(), [INFO] [stdout] 67 + Box::new(right.clone()), [INFO] [stdout] 68 + )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:79:17 [INFO] [stdout] | [INFO] [stdout] 79 | / return Ok(Request::FuncDeclaration( [INFO] [stdout] 80 | | identifier.clone(), [INFO] [stdout] 81 | | params, [INFO] [stdout] 82 | | Box::new(right.clone()), [INFO] [stdout] 83 | | )); [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] 79 ~ Ok(Request::FuncDeclaration( [INFO] [stdout] 80 + identifier.clone(), [INFO] [stdout] 81 + params, [INFO] [stdout] 82 + Box::new(right.clone()), [INFO] [stdout] 83 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:85:18 [INFO] [stdout] | [INFO] [stdout] 85 | _ => return Err(ErrorType::InvalidDeclaration), [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] 85 - _ => return Err(ErrorType::InvalidDeclaration), [INFO] [stdout] 85 + _ => Err(ErrorType::InvalidDeclaration), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | return Ok(Request::Evaluation(Box::new(tree.0.clone()))); [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] 88 - return Ok(Request::Evaluation(Box::new(tree.0.clone()))); [INFO] [stdout] 88 + Ok(Request::Evaluation(Box::new(tree.0.clone()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:65:17 [INFO] [stdout] | [INFO] [stdout] 65 | / return Ok(Request::VarDeclaration( [INFO] [stdout] 66 | | identifier.clone(), [INFO] [stdout] 67 | | Box::new(right.clone()), [INFO] [stdout] 68 | | )) [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] 65 ~ Ok(Request::VarDeclaration( [INFO] [stdout] 66 + identifier.clone(), [INFO] [stdout] 67 + Box::new(right.clone()), [INFO] [stdout] 68 + )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:79:17 [INFO] [stdout] | [INFO] [stdout] 79 | / return Ok(Request::FuncDeclaration( [INFO] [stdout] 80 | | identifier.clone(), [INFO] [stdout] 81 | | params, [INFO] [stdout] 82 | | Box::new(right.clone()), [INFO] [stdout] 83 | | )); [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] 79 ~ Ok(Request::FuncDeclaration( [INFO] [stdout] 80 + identifier.clone(), [INFO] [stdout] 81 + params, [INFO] [stdout] 82 + Box::new(right.clone()), [INFO] [stdout] 83 ~ )) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:85:18 [INFO] [stdout] | [INFO] [stdout] 85 | _ => return Err(ErrorType::InvalidDeclaration), [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] 85 - _ => return Err(ErrorType::InvalidDeclaration), [INFO] [stdout] 85 + _ => Err(ErrorType::InvalidDeclaration), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/interpreter/mod.rs:88:9 [INFO] [stdout] | [INFO] [stdout] 88 | return Ok(Request::Evaluation(Box::new(tree.0.clone()))); [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] 88 - return Ok(Request::Evaluation(Box::new(tree.0.clone()))); [INFO] [stdout] 88 + Ok(Request::Evaluation(Box::new(tree.0.clone()))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/objects/mod.rs:157:32 [INFO] [stdout] | [INFO] [stdout] 157 | return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 157 - return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] 157 + return expr.eval(context, scope, depth); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/objects/mod.rs:163:28 [INFO] [stdout] | [INFO] [stdout] 163 | return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 163 - return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] 163 + return expr.eval(context, scope, depth); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/objects/mod.rs:173:46 [INFO] [stdout] | [INFO] [stdout] 173 | joined_context.join_with(&c); [INFO] [stdout] | ^^ help: change this to: `c` [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: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/objects/mod.rs:157:32 [INFO] [stdout] | [INFO] [stdout] 157 | return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] = note: `#[warn(clippy::needless_question_mark)]` on by default [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 157 - return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] 157 + return expr.eval(context, scope, depth); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/objects/mod.rs:163:28 [INFO] [stdout] | [INFO] [stdout] 163 | return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 163 - return Ok(expr.eval(context, scope, depth)?); [INFO] [stdout] 163 + return expr.eval(context, scope, depth); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/objects/mod.rs:173:46 [INFO] [stdout] | [INFO] [stdout] 173 | joined_context.join_with(&c); [INFO] [stdout] | ^^ help: change this to: `c` [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: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/operators/mod.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | lv: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - lv: &Vec, [INFO] [stdout] 61 + lv: &[Value], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/operators/mod.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | rv: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 62 - rv: &Vec, [INFO] [stdout] 62 + rv: &[Value], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/operators/mod.rs:61:13 [INFO] [stdout] | [INFO] [stdout] 61 | lv: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 61 - lv: &Vec, [INFO] [stdout] 61 + lv: &[Value], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&Vec` instead of `&[_]` involves a new object where a slice will do [INFO] [stdout] --> src/operators/mod.rs:62:13 [INFO] [stdout] | [INFO] [stdout] 62 | rv: &Vec, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 62 - rv: &Vec, [INFO] [stdout] 62 + rv: &[Value], [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `not` can be confused for the standard trait method `std::ops::Not::not` [INFO] [stdout] --> src/operators/mod.rs:353:5 [INFO] [stdout] | [INFO] [stdout] 353 | / pub fn not(self) -> EvalResult { [INFO] [stdout] 354 | | convert_and_apply( [INFO] [stdout] 355 | | &self, [INFO] [stdout] 356 | | &Value::Bool(true), [INFO] [stdout] ... | [INFO] [stdout] 362 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::ops::Not` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `not` can be confused for the standard trait method `std::ops::Not::not` [INFO] [stdout] --> src/operators/mod.rs:353:5 [INFO] [stdout] | [INFO] [stdout] 353 | / pub fn not(self) -> EvalResult { [INFO] [stdout] 354 | | convert_and_apply( [INFO] [stdout] 355 | | &self, [INFO] [stdout] 356 | | &Value::Bool(true), [INFO] [stdout] ... | [INFO] [stdout] 362 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: consider implementing the trait `std::ops::Not` or choosing a less ambiguous method name [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#should_implement_trait [INFO] [stdout] = note: `#[warn(clippy::should_implement_trait)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token/tokentype.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | / match self { [INFO] [stdout] 86 | | Plus | Minus | Star | Slash | Equal | Caret | Percentage | LessThan | GreaterThan [INFO] [stdout] 87 | | | LessOrEqualTo | GreaterOrEqualTo | DoubleAnd | DoubleOr | DoubleEqual | NotEqual => { [INFO] [stdout] 88 | | true [INFO] [stdout] 89 | | } [INFO] [stdout] 90 | | _ => false, [INFO] [stdout] 91 | | } [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] 85 ~ matches!(self, Plus | Minus | Star | Slash | Equal | Caret | Percentage | LessThan | GreaterThan [INFO] [stdout] 86 + | LessOrEqualTo | GreaterOrEqualTo | DoubleAnd | DoubleOr | DoubleEqual | NotEqual) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token/tokentype.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / match self { [INFO] [stdout] 96 | | Minus | Exclamation => true, [INFO] [stdout] 97 | | _ => false, [INFO] [stdout] 98 | | } [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] 95 - match self { [INFO] [stdout] 96 - Minus | Exclamation => true, [INFO] [stdout] 97 - _ => false, [INFO] [stdout] 98 - } [INFO] [stdout] 95 + matches!(self, Minus | Exclamation) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token/tokentype.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | / match self { [INFO] [stdout] 103 | | Comma => true, [INFO] [stdout] 104 | | _ => false, [INFO] [stdout] 105 | | } [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] 102 - match self { [INFO] [stdout] 103 - Comma => true, [INFO] [stdout] 104 - _ => false, [INFO] [stdout] 105 - } [INFO] [stdout] 102 + matches!(self, Comma) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `.extend(_.chars())` [INFO] [stdout] --> src/token/mod.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | self.value.extend(token.value.chars()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.value.push_str(&token.value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stdout] = note: `#[warn(clippy::string_extend_chars)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/token/mod.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | while let Some(c) = content_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for c in content_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:125:8 [INFO] [stdout] | [INFO] [stdout] 125 | if stream.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stream.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: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 174 | if stream.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stream.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: match expression looks like `matches!` macro [INFO] [stdout] --> src/token/tokentype.rs:85:9 [INFO] [stdout] | [INFO] [stdout] 85 | / match self { [INFO] [stdout] 86 | | Plus | Minus | Star | Slash | Equal | Caret | Percentage | LessThan | GreaterThan [INFO] [stdout] 87 | | | LessOrEqualTo | GreaterOrEqualTo | DoubleAnd | DoubleOr | DoubleEqual | NotEqual => { [INFO] [stdout] 88 | | true [INFO] [stdout] 89 | | } [INFO] [stdout] 90 | | _ => false, [INFO] [stdout] 91 | | } [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] 85 ~ matches!(self, Plus | Minus | Star | Slash | Equal | Caret | Percentage | LessThan | GreaterThan [INFO] [stdout] 86 + | LessOrEqualTo | GreaterOrEqualTo | DoubleAnd | DoubleOr | DoubleEqual | NotEqual) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token/tokentype.rs:95:9 [INFO] [stdout] | [INFO] [stdout] 95 | / match self { [INFO] [stdout] 96 | | Minus | Exclamation => true, [INFO] [stdout] 97 | | _ => false, [INFO] [stdout] 98 | | } [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] 95 - match self { [INFO] [stdout] 96 - Minus | Exclamation => true, [INFO] [stdout] 97 - _ => false, [INFO] [stdout] 98 - } [INFO] [stdout] 95 + matches!(self, Minus | Exclamation) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/token/tokentype.rs:102:9 [INFO] [stdout] | [INFO] [stdout] 102 | / match self { [INFO] [stdout] 103 | | Comma => true, [INFO] [stdout] 104 | | _ => false, [INFO] [stdout] 105 | | } [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] 102 - match self { [INFO] [stdout] 103 - Comma => true, [INFO] [stdout] 104 - _ => false, [INFO] [stdout] 105 - } [INFO] [stdout] 102 + matches!(self, Comma) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/token/mod.rs:223:5 [INFO] [stdout] | [INFO] [stdout] 223 | while let Some(token) = stream_as_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for token in stream_as_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/token/mod.rs:244:20 [INFO] [stdout] | [INFO] [stdout] 244 | candidate: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 244 - candidate: &String, [INFO] [stdout] 244 + candidate: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: calling `.extend(_.chars())` [INFO] [stdout] --> src/token/mod.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | self.value.extend(token.value.chars()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `self.value.push_str(&token.value)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#string_extend_chars [INFO] [stdout] = note: `#[warn(clippy::string_extend_chars)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/token/mod.rs:247:9 [INFO] [stdout] | [INFO] [stdout] 247 | while let Some((i_type, patterns)) = patterns_as_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for (i_type, patterns) in patterns_as_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/token/mod.rs:49:5 [INFO] [stdout] | [INFO] [stdout] 49 | while let Some(c) = content_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for c in content_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] = note: `#[warn(clippy::while_let_on_iterator)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:297:11 [INFO] [stdout] | [INFO] [stdout] 297 | while to_identify.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!to_identify.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: this boolean expression can be simplified [INFO] [stdout] --> src/token/mod.rs:347:12 [INFO] [stdout] | [INFO] [stdout] 347 | if previous_token_type == Literal && current_type == OpeningBracket [INFO] [stdout] | ____________^ [INFO] [stdout] 348 | | || previous_token_type == ClosingBracket && current_type == Literal [INFO] [stdout] 349 | | // literal-literal [INFO] [stdout] 350 | | || previous_token_type == Literal && current_type == Literal [INFO] [stdout] 351 | | // bracket-bracket: (2)(4) [INFO] [stdout] 352 | | || previous_token_type == ClosingBracket && current_type == OpeningBracket [INFO] [stdout] | |_____________________________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 347 - if previous_token_type == Literal && current_type == OpeningBracket [INFO] [stdout] 348 - || previous_token_type == ClosingBracket && current_type == Literal [INFO] [stdout] 349 - // literal-literal [INFO] [stdout] 350 - || previous_token_type == Literal && current_type == Literal [INFO] [stdout] 351 - // bracket-bracket: (2)(4) [INFO] [stdout] 352 - || previous_token_type == ClosingBracket && current_type == OpeningBracket [INFO] [stdout] 347 + if !(previous_token_type != Literal && previous_token_type != ClosingBracket || current_type != OpeningBracket && current_type != Literal) [INFO] [stdout] | [INFO] [stdout] 347 - if previous_token_type == Literal && current_type == OpeningBracket [INFO] [stdout] 348 - || previous_token_type == ClosingBracket && current_type == Literal [INFO] [stdout] 349 - // literal-literal [INFO] [stdout] 350 - || previous_token_type == Literal && current_type == Literal [INFO] [stdout] 351 - // bracket-bracket: (2)(4) [INFO] [stdout] 352 - || previous_token_type == ClosingBracket && current_type == OpeningBracket [INFO] [stdout] 347 + if (current_type == Literal || current_type == OpeningBracket) && (previous_token_type == ClosingBracket || previous_token_type == Literal) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:331:8 [INFO] [stdout] | [INFO] [stdout] 331 | if stream.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stream.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: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:125:8 [INFO] [stdout] | [INFO] [stdout] 125 | if stream.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stream.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: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/token/mod.rs:375:31 [INFO] [stdout] | [INFO] [stdout] 375 | fn remove_whitespaces(string: &String) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 375 - fn remove_whitespaces(string: &String) -> String { [INFO] [stdout] 375 + fn remove_whitespaces(string: &str) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 174 | if stream.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stream.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: this loop could be written as a `for` loop [INFO] [stdout] --> src/token/mod.rs:223:5 [INFO] [stdout] | [INFO] [stdout] 223 | while let Some(token) = stream_as_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for token in stream_as_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/token/mod.rs:244:20 [INFO] [stdout] | [INFO] [stdout] 244 | candidate: &String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 244 - candidate: &String, [INFO] [stdout] 244 + candidate: &str, [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this loop could be written as a `for` loop [INFO] [stdout] --> src/token/mod.rs:247:9 [INFO] [stdout] | [INFO] [stdout] 247 | while let Some((i_type, patterns)) = patterns_as_iter.next() { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `for (i_type, patterns) in patterns_as_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:51:14 [INFO] [stdout] | [INFO] [stdout] 51 | _ => return Err(ErrorType::MissingClosingBracket), [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] 51 - _ => return Err(ErrorType::MissingClosingBracket), [INFO] [stdout] 51 + _ => Err(ErrorType::MissingClosingBracket), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:297:11 [INFO] [stdout] | [INFO] [stdout] 297 | while to_identify.len() > 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `!is_empty` is clearer and more explicit: `!to_identify.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: this boolean expression can be simplified [INFO] [stdout] --> src/token/mod.rs:347:12 [INFO] [stdout] | [INFO] [stdout] 347 | if previous_token_type == Literal && current_type == OpeningBracket [INFO] [stdout] | ____________^ [INFO] [stdout] 348 | | || previous_token_type == ClosingBracket && current_type == Literal [INFO] [stdout] 349 | | // literal-literal [INFO] [stdout] 350 | | || previous_token_type == Literal && current_type == Literal [INFO] [stdout] 351 | | // bracket-bracket: (2)(4) [INFO] [stdout] 352 | | || previous_token_type == ClosingBracket && current_type == OpeningBracket [INFO] [stdout] | |_____________________________________________________________________________________________^ [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] help: try [INFO] [stdout] | [INFO] [stdout] 347 - if previous_token_type == Literal && current_type == OpeningBracket [INFO] [stdout] 348 - || previous_token_type == ClosingBracket && current_type == Literal [INFO] [stdout] 349 - // literal-literal [INFO] [stdout] 350 - || previous_token_type == Literal && current_type == Literal [INFO] [stdout] 351 - // bracket-bracket: (2)(4) [INFO] [stdout] 352 - || previous_token_type == ClosingBracket && current_type == OpeningBracket [INFO] [stdout] 347 + if !(previous_token_type != Literal && previous_token_type != ClosingBracket || current_type != OpeningBracket && current_type != Literal) [INFO] [stdout] | [INFO] [stdout] 347 - if previous_token_type == Literal && current_type == OpeningBracket [INFO] [stdout] 348 - || previous_token_type == ClosingBracket && current_type == Literal [INFO] [stdout] 349 - // literal-literal [INFO] [stdout] 350 - || previous_token_type == Literal && current_type == Literal [INFO] [stdout] 351 - // bracket-bracket: (2)(4) [INFO] [stdout] 352 - || previous_token_type == ClosingBracket && current_type == OpeningBracket [INFO] [stdout] 347 + if (current_type == Literal || current_type == OpeningBracket) && (previous_token_type == ClosingBracket || previous_token_type == Literal) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:133:25 [INFO] [stdout] | [INFO] [stdout] 133 | Ok(node) => return Ok(node), [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] 133 - Ok(node) => return Ok(node), [INFO] [stdout] 133 + Ok(node) => Ok(node), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:135:17 [INFO] [stdout] | [INFO] [stdout] 135 | / return Ok(build_unary_operator( [INFO] [stdout] 136 | | sorted_node_tokens, [INFO] [stdout] 137 | | stream, [INFO] [stdout] 138 | | &token_info, [INFO] [stdout] 139 | | range, [INFO] [stdout] 140 | | )?) [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 ~ Ok(build_unary_operator( [INFO] [stdout] 136 + sorted_node_tokens, [INFO] [stdout] 137 + stream, [INFO] [stdout] 138 + &token_info, [INFO] [stdout] 139 + range, [INFO] [stdout] 140 + )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/token/mod.rs:331:8 [INFO] [stdout] | [INFO] [stdout] 331 | if stream.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `stream.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/tree/mod.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | / return Ok(build_binary_operator( [INFO] [stdout] 146 | | sorted_node_tokens, [INFO] [stdout] 147 | | stream, [INFO] [stdout] 148 | | &token_info, [INFO] [stdout] 149 | | range, [INFO] [stdout] 150 | | )?); [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] 145 ~ Ok(build_binary_operator( [INFO] [stdout] 146 + sorted_node_tokens, [INFO] [stdout] 147 + stream, [INFO] [stdout] 148 + &token_info, [INFO] [stdout] 149 + range, [INFO] [stdout] 150 ~ )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | / return Ok(build_unary_operator( [INFO] [stdout] 154 | | sorted_node_tokens, [INFO] [stdout] 155 | | stream, [INFO] [stdout] 156 | | &token_info, [INFO] [stdout] 157 | | range, [INFO] [stdout] 158 | | )?); [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] 153 ~ Ok(build_unary_operator( [INFO] [stdout] 154 + sorted_node_tokens, [INFO] [stdout] 155 + stream, [INFO] [stdout] 156 + &token_info, [INFO] [stdout] 157 + range, [INFO] [stdout] 158 ~ )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | / return Ok(build_union_operator( [INFO] [stdout] 161 | | sorted_node_tokens, [INFO] [stdout] 162 | | stream, [INFO] [stdout] 163 | | &token_info, [INFO] [stdout] 164 | | range, [INFO] [stdout] 165 | | )?); [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] 160 ~ Ok(build_union_operator( [INFO] [stdout] 161 + sorted_node_tokens, [INFO] [stdout] 162 + stream, [INFO] [stdout] 163 + &token_info, [INFO] [stdout] 164 + range, [INFO] [stdout] 165 ~ )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: writing `&String` instead of `&str` involves a new object where a slice will do [INFO] [stdout] --> src/token/mod.rs:375:31 [INFO] [stdout] | [INFO] [stdout] 375 | fn remove_whitespaces(string: &String) -> String { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stdout] help: change this to [INFO] [stdout] | [INFO] [stdout] 375 - fn remove_whitespaces(string: &String) -> String { [INFO] [stdout] 375 + fn remove_whitespaces(string: &str) -> String { [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:170:17 [INFO] [stdout] | [INFO] [stdout] 170 | return Ok(Node::Literal(Value::from_string(token_info.token.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] 170 - return Ok(Node::Literal(Value::from_string(token_info.token.value)?)) [INFO] [stdout] 170 + Ok(Node::Literal(Value::from_string(token_info.token.value)?)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree/mod.rs:115:8 [INFO] [stdout] | [INFO] [stdout] 115 | if sorted_node_tokens.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sorted_node_tokens.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: binary comparison to literal `Option::None` [INFO] [stdout] --> src/tree/mod.rs:116:12 [INFO] [stdout] | [INFO] [stdout] 116 | if position == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `position.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:135:24 [INFO] [stdout] | [INFO] [stdout] 135 | return Ok(build_unary_operator( [INFO] [stdout] | ________________________^ [INFO] [stdout] 136 | | sorted_node_tokens, [INFO] [stdout] 137 | | stream, [INFO] [stdout] 138 | | &token_info, [INFO] [stdout] 139 | | range, [INFO] [stdout] 140 | | )?) [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 135 ~ return build_unary_operator( [INFO] [stdout] 136 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 139 | range, [INFO] [stdout] 140 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:145:16 [INFO] [stdout] | [INFO] [stdout] 145 | return Ok(build_binary_operator( [INFO] [stdout] | ________________^ [INFO] [stdout] 146 | | sorted_node_tokens, [INFO] [stdout] 147 | | stream, [INFO] [stdout] 148 | | &token_info, [INFO] [stdout] 149 | | range, [INFO] [stdout] 150 | | )?); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 145 ~ return build_binary_operator( [INFO] [stdout] 146 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 149 | range, [INFO] [stdout] 150 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:153:16 [INFO] [stdout] | [INFO] [stdout] 153 | return Ok(build_unary_operator( [INFO] [stdout] | ________________^ [INFO] [stdout] 154 | | sorted_node_tokens, [INFO] [stdout] 155 | | stream, [INFO] [stdout] 156 | | &token_info, [INFO] [stdout] 157 | | range, [INFO] [stdout] 158 | | )?); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 153 ~ return build_unary_operator( [INFO] [stdout] 154 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 157 | range, [INFO] [stdout] 158 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:160:16 [INFO] [stdout] | [INFO] [stdout] 160 | return Ok(build_union_operator( [INFO] [stdout] | ________________^ [INFO] [stdout] 161 | | sorted_node_tokens, [INFO] [stdout] 162 | | stream, [INFO] [stdout] 163 | | &token_info, [INFO] [stdout] 164 | | range, [INFO] [stdout] 165 | | )?); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 160 ~ return build_union_operator( [INFO] [stdout] 161 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 164 | range, [INFO] [stdout] 165 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:51:14 [INFO] [stdout] | [INFO] [stdout] 51 | _ => return Err(ErrorType::MissingClosingBracket), [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] 51 - _ => return Err(ErrorType::MissingClosingBracket), [INFO] [stdout] 51 + _ => Err(ErrorType::MissingClosingBracket), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree/mod.rs:270:8 [INFO] [stdout] | [INFO] [stdout] 270 | if candidates.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `candidates.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: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/tree/mod.rs:298:17 [INFO] [stdout] | [INFO] [stdout] 298 | ) -> EvalResult>> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `usize` [INFO] [stdout] --> src/tree/mod.rs:352:27 [INFO] [stdout] | [INFO] [stdout] 352 | return Ok(index.try_into().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [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] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:133:25 [INFO] [stdout] | [INFO] [stdout] 133 | Ok(node) => return Ok(node), [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] 133 - Ok(node) => return Ok(node), [INFO] [stdout] 133 + Ok(node) => Ok(node), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:135:17 [INFO] [stdout] | [INFO] [stdout] 135 | / return Ok(build_unary_operator( [INFO] [stdout] 136 | | sorted_node_tokens, [INFO] [stdout] 137 | | stream, [INFO] [stdout] 138 | | &token_info, [INFO] [stdout] 139 | | range, [INFO] [stdout] 140 | | )?) [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 ~ Ok(build_unary_operator( [INFO] [stdout] 136 + sorted_node_tokens, [INFO] [stdout] 137 + stream, [INFO] [stdout] 138 + &token_info, [INFO] [stdout] 139 + range, [INFO] [stdout] 140 + )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:145:9 [INFO] [stdout] | [INFO] [stdout] 145 | / return Ok(build_binary_operator( [INFO] [stdout] 146 | | sorted_node_tokens, [INFO] [stdout] 147 | | stream, [INFO] [stdout] 148 | | &token_info, [INFO] [stdout] 149 | | range, [INFO] [stdout] 150 | | )?); [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] 145 ~ Ok(build_binary_operator( [INFO] [stdout] 146 + sorted_node_tokens, [INFO] [stdout] 147 + stream, [INFO] [stdout] 148 + &token_info, [INFO] [stdout] 149 + range, [INFO] [stdout] 150 ~ )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:153:9 [INFO] [stdout] | [INFO] [stdout] 153 | / return Ok(build_unary_operator( [INFO] [stdout] 154 | | sorted_node_tokens, [INFO] [stdout] 155 | | stream, [INFO] [stdout] 156 | | &token_info, [INFO] [stdout] 157 | | range, [INFO] [stdout] 158 | | )?); [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] 153 ~ Ok(build_unary_operator( [INFO] [stdout] 154 + sorted_node_tokens, [INFO] [stdout] 155 + stream, [INFO] [stdout] 156 + &token_info, [INFO] [stdout] 157 + range, [INFO] [stdout] 158 ~ )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:160:9 [INFO] [stdout] | [INFO] [stdout] 160 | / return Ok(build_union_operator( [INFO] [stdout] 161 | | sorted_node_tokens, [INFO] [stdout] 162 | | stream, [INFO] [stdout] 163 | | &token_info, [INFO] [stdout] 164 | | range, [INFO] [stdout] 165 | | )?); [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] 160 ~ Ok(build_union_operator( [INFO] [stdout] 161 + sorted_node_tokens, [INFO] [stdout] 162 + stream, [INFO] [stdout] 163 + &token_info, [INFO] [stdout] 164 + range, [INFO] [stdout] 165 ~ )?) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unneeded `return` statement [INFO] [stdout] --> src/tree/mod.rs:170:17 [INFO] [stdout] | [INFO] [stdout] 170 | return Ok(Node::Literal(Value::from_string(token_info.token.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] 170 - return Ok(Node::Literal(Value::from_string(token_info.token.value)?)) [INFO] [stdout] 170 + Ok(Node::Literal(Value::from_string(token_info.token.value)?)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree/mod.rs:115:8 [INFO] [stdout] | [INFO] [stdout] 115 | if sorted_node_tokens.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `sorted_node_tokens.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: binary comparison to literal `Option::None` [INFO] [stdout] --> src/tree/mod.rs:116:12 [INFO] [stdout] | [INFO] [stdout] 116 | if position == None { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ help: use `Option::is_none()` instead: `position.is_none()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#partialeq_to_none [INFO] [stdout] = note: `#[warn(clippy::partialeq_to_none)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:135:24 [INFO] [stdout] | [INFO] [stdout] 135 | return Ok(build_unary_operator( [INFO] [stdout] | ________________________^ [INFO] [stdout] 136 | | sorted_node_tokens, [INFO] [stdout] 137 | | stream, [INFO] [stdout] 138 | | &token_info, [INFO] [stdout] 139 | | range, [INFO] [stdout] 140 | | )?) [INFO] [stdout] | |___________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 135 ~ return build_unary_operator( [INFO] [stdout] 136 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 139 | range, [INFO] [stdout] 140 ~ ) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:145:16 [INFO] [stdout] | [INFO] [stdout] 145 | return Ok(build_binary_operator( [INFO] [stdout] | ________________^ [INFO] [stdout] 146 | | sorted_node_tokens, [INFO] [stdout] 147 | | stream, [INFO] [stdout] 148 | | &token_info, [INFO] [stdout] 149 | | range, [INFO] [stdout] 150 | | )?); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 145 ~ return build_binary_operator( [INFO] [stdout] 146 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 149 | range, [INFO] [stdout] 150 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:153:16 [INFO] [stdout] | [INFO] [stdout] 153 | return Ok(build_unary_operator( [INFO] [stdout] | ________________^ [INFO] [stdout] 154 | | sorted_node_tokens, [INFO] [stdout] 155 | | stream, [INFO] [stdout] 156 | | &token_info, [INFO] [stdout] 157 | | range, [INFO] [stdout] 158 | | )?); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 153 ~ return build_unary_operator( [INFO] [stdout] 154 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 157 | range, [INFO] [stdout] 158 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enclosing `Ok` and `?` operator are unneeded [INFO] [stdout] --> src/tree/mod.rs:160:16 [INFO] [stdout] | [INFO] [stdout] 160 | return Ok(build_union_operator( [INFO] [stdout] | ________________^ [INFO] [stdout] 161 | | sorted_node_tokens, [INFO] [stdout] 162 | | stream, [INFO] [stdout] 163 | | &token_info, [INFO] [stdout] 164 | | range, [INFO] [stdout] 165 | | )?); [INFO] [stdout] | |___________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_question_mark [INFO] [stdout] help: remove the enclosing `Ok` and `?` operator [INFO] [stdout] | [INFO] [stdout] 160 ~ return build_union_operator( [INFO] [stdout] 161 | sorted_node_tokens, [INFO] [stdout] ... [INFO] [stdout] 164 | range, [INFO] [stdout] 165 ~ ); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/tree/mod.rs:395:5 [INFO] [stdout] | [INFO] [stdout] 395 | union_operators.sort_by(|a, b| a.position.cmp(&b.position)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 395 - union_operators.sort_by(|a, b| a.position.cmp(&b.position)); [INFO] [stdout] 395 + union_operators.sort_by_key(|a| a.position); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: length comparison to zero [INFO] [stdout] --> src/tree/mod.rs:270:8 [INFO] [stdout] | [INFO] [stdout] 270 | if candidates.len() == 0 { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `candidates.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: `Vec` is already on the heap, the boxing is unnecessary [INFO] [stdout] --> src/tree/mod.rs:298:17 [INFO] [stdout] | [INFO] [stdout] 298 | ) -> EvalResult>> { [INFO] [stdout] | ^^^^^^^^^^^^^^ help: try: `Vec` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#vec_box [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `usize` [INFO] [stdout] --> src/tree/mod.rs:352:27 [INFO] [stdout] | [INFO] [stdout] 352 | return Ok(index.try_into().unwrap()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing `.try_into()` [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] [INFO] [stdout] [INFO] [stdout] warning: consider using `sort_by_key` [INFO] [stdout] --> src/tree/mod.rs:395:5 [INFO] [stdout] | [INFO] [stdout] 395 | union_operators.sort_by(|a, b| a.position.cmp(&b.position)); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_sort_by [INFO] [stdout] = note: `#[warn(clippy::unnecessary_sort_by)]` on by default [INFO] [stdout] help: try [INFO] [stdout] | [INFO] [stdout] 395 - union_operators.sort_by(|a, b| a.position.cmp(&b.position)); [INFO] [stdout] 395 + union_operators.sort_by_key(|a| a.position); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type [INFO] [stdout] --> src/function/builtin.rs:111:22 [INFO] [stdout] | [INFO] [stdout] 111 | .map(|x| (x.0.clone(), x.1.clone())) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(suspicious_double_ref_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `.clone()` on a double reference, which returns `&str` instead of cloning the inner type [INFO] [stdout] --> src/function/builtin.rs:111:22 [INFO] [stdout] | [INFO] [stdout] 111 | .map(|x| (x.0.clone(), x.1.clone())) [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(suspicious_double_ref_op)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.67s [INFO] running `Command { std: "docker" "inspect" "670bf731af568a437dddb49ad9be21ada7defcddbac0d2e05633add1078a63b1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "670bf731af568a437dddb49ad9be21ada7defcddbac0d2e05633add1078a63b1", kill_on_drop: false }` [INFO] [stdout] 670bf731af568a437dddb49ad9be21ada7defcddbac0d2e05633add1078a63b1