[INFO] cloning repository https://github.com/bool-rus/math-ast [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/bool-rus/math-ast" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbool-rus%2Fmath-ast", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbool-rus%2Fmath-ast'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] b47521bb9d45247ef7a56b7646c0b5baa6a29f0b [INFO] linting bool-rus/math-ast against nightly for clippy-nonminimal_bool-denied [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fbool-rus%2Fmath-ast" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] started tweaking git repo https://github.com/bool-rus/math-ast [INFO] finished tweaking git repo https://github.com/bool-rus/math-ast [INFO] tweaked toml for git repo https://github.com/bool-rus/math-ast written to /workspace/builds/worker-0-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/bool-rus/math-ast 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/bool-rus/math-ast 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] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded num-integer v0.1.39 [INFO] [stderr] Downloaded num-complex v0.2.1 [INFO] [stderr] Downloaded num v0.2.0 [INFO] [stderr] Downloaded num-iter v0.1.37 [INFO] [stderr] Downloaded num-traits v0.2.6 [INFO] [stderr] Downloaded num-rational v0.2.1 [INFO] [stderr] Downloaded num-bigint v0.2.0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 25b1ecb36958e10f7056e86c6a3cfbc3f0d0ee5c7f581f5fda986af06b9baaf0 [INFO] running `Command { std: "docker" "start" "-a" "25b1ecb36958e10f7056e86c6a3cfbc3f0d0ee5c7f581f5fda986af06b9baaf0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "25b1ecb36958e10f7056e86c6a3cfbc3f0d0ee5c7f581f5fda986af06b9baaf0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "25b1ecb36958e10f7056e86c6a3cfbc3f0d0ee5c7f581f5fda986af06b9baaf0", kill_on_drop: false }` [INFO] [stdout] 25b1ecb36958e10f7056e86c6a3cfbc3f0d0ee5c7f581f5fda986af06b9baaf0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-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] 0210f3eedf4875416c8b6065a1bdfff5c5f19a37be36b6ef0f54a2e400b88a6b [INFO] running `Command { std: "docker" "start" "-a" "0210f3eedf4875416c8b6065a1bdfff5c5f19a37be36b6ef0f54a2e400b88a6b", kill_on_drop: false }` [INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024` [INFO] [stderr] Compiling num-traits v0.2.6 [INFO] [stderr] Compiling num-integer v0.1.39 [INFO] [stderr] Compiling num-bigint v0.2.0 [INFO] [stderr] Compiling num-iter v0.1.37 [INFO] [stderr] Compiling num-rational v0.2.1 [INFO] [stderr] Compiling num-complex v0.2.1 [INFO] [stderr] Checking num v0.2.0 [INFO] [stderr] Checking math-ast v0.1.0 (/opt/rustwide/workdir) [INFO] [stdout] warning: unused import: `std::str::FromStr` [INFO] [stdout] --> src/parser/lexem.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::str::FromStr; [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: `Formatter` [INFO] [stdout] --> src/parser/lexem.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt::{Debug, Formatter}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp::Ordering` [INFO] [stdout] --> src/parser/lexem.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::cmp::Ordering; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Num` [INFO] [stdout] --> src/parser/lexem.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use super::num::Num; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Integer` [INFO] [stdout] --> src/parser/lexem.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use super::num::Integer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/parser/lexem.rs:121:28 [INFO] [stdout] | [INFO] [stdout] 121 | '0' | '.' | '1'...'9' | 'a'...'z' | 'A'...'Z' => State::Letter, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/parser/lexem.rs:121:40 [INFO] [stdout] | [INFO] [stdout] 121 | '0' | '.' | '1'...'9' | 'a'...'z' | 'A'...'Z' => State::Letter, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/parser/lexem.rs:121:52 [INFO] [stdout] | [INFO] [stdout] 121 | '0' | '.' | '1'...'9' | 'a'...'z' | 'A'...'Z' => State::Letter, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Float` [INFO] [stdout] --> src/parser/tree.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use super::num::Float; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parser::faces::Function` [INFO] [stdout] --> src/parser/tree.rs:37:9 [INFO] [stdout] | [INFO] [stdout] 37 | use parser::faces::Function; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/tree.rs:46:14 [INFO] [stdout] | [INFO] [stdout] 46 | fn minus(a: Ast, b: Ast) -> Ast where T: Float { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/tree.rs:50:17 [INFO] [stdout] | [INFO] [stdout] 50 | fn multiple(a: Ast, b: Ast) -> Ast where T: Float { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/tree.rs:54:15 [INFO] [stdout] | [INFO] [stdout] 54 | fn divide(a: Ast, b: Ast) -> Ast where T: Float { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/builder.rs:67:16 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn ast(self) -> Result, BuilderErr> where T: Float { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parser::builder::BuildResult` [INFO] [stdout] --> src/parser/builder.rs:217:9 [INFO] [stdout] | [INFO] [stdout] 217 | use parser::builder::BuildResult; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::Debug` [INFO] [stdout] --> src/parser/builder.rs:219:9 [INFO] [stdout] | [INFO] [stdout] 219 | use std::fmt::Debug; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::fmt::Display` [INFO] [stdout] --> src/parser/builder.rs:220:9 [INFO] [stdout] | [INFO] [stdout] 220 | use std::fmt::Display; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Deref` [INFO] [stdout] --> src/parser/faces.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Float` [INFO] [stdout] --> src/parser/faces.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use super::num::Float; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/tree.rs:14:19 [INFO] [stdout] | [INFO] [stdout] 14 | Operation(Box>, Vec>), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 14 | Operation(Box>, Vec>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/faces.rs:5:26 [INFO] [stdout] | [INFO] [stdout] 5 | type RawFn = &'static Fn(Vec) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 5 | type RawFn = &'static dyn Fn(Vec) -> Option; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::str::FromStr` [INFO] [stdout] --> src/parser/lexem.rs:1:5 [INFO] [stdout] | [INFO] [stdout] 1 | use std::str::FromStr; [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: `Formatter` [INFO] [stdout] --> src/parser/lexem.rs:2:23 [INFO] [stdout] | [INFO] [stdout] 2 | use std::fmt::{Debug, Formatter}; [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::cmp::Ordering` [INFO] [stdout] --> src/parser/lexem.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use std::cmp::Ordering; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/lexem.rs:97:42 [INFO] [stdout] | [INFO] [stdout] 97 | impl Into>> for Operand { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 97 | impl Into>> for Operand { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/lexem.rs:98:26 [INFO] [stdout] | [INFO] [stdout] 98 | fn into(self) -> Box> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 98 | fn into(self) -> Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Num` [INFO] [stdout] --> src/parser/lexem.rs:6:5 [INFO] [stdout] | [INFO] [stdout] 6 | use super::num::Num; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Integer` [INFO] [stdout] --> src/parser/lexem.rs:7:5 [INFO] [stdout] | [INFO] [stdout] 7 | use super::num::Integer; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/parser/lexem.rs:121:28 [INFO] [stdout] | [INFO] [stdout] 121 | '0' | '.' | '1'...'9' | 'a'...'z' | 'A'...'Z' => State::Letter, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/parser/lexem.rs:121:40 [INFO] [stdout] | [INFO] [stdout] 121 | '0' | '.' | '1'...'9' | 'a'...'z' | 'A'...'Z' => State::Letter, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: `...` range patterns are deprecated [INFO] [stdout] --> src/parser/lexem.rs:121:52 [INFO] [stdout] | [INFO] [stdout] 121 | '0' | '.' | '1'...'9' | 'a'...'z' | 'A'...'Z' => State::Letter, [INFO] [stdout] | ^^^ help: use `..=` for an inclusive range [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Float` [INFO] [stdout] --> src/parser/tree.rs:5:5 [INFO] [stdout] | [INFO] [stdout] 5 | use super::num::Float; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/lexem.rs:51:64 [INFO] [stdout] | [INFO] [stdout] 51 | pub fn make_fn(ch: char) -> Box> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 51 | pub fn make_fn(ch: char) -> Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/builder.rs:54:71 [INFO] [stdout] | [INFO] [stdout] 54 | fn functions() -> HashMap>> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 54 | fn functions() -> HashMap>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: bound is defined in more than one place [INFO] [stdout] --> src/parser/builder.rs:67:16 [INFO] [stdout] | [INFO] [stdout] 67 | pub fn ast(self) -> Result, BuilderErr> where T: Float { [INFO] [stdout] | ^ ^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#multiple_bound_locations [INFO] [stdout] = note: `#[warn(clippy::multiple_bound_locations)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/faces.rs:38:60 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn new(name:S, func: RawFn) -> Box> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 38 | pub fn new(name:S, func: RawFn) -> Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `std::ops::Deref` [INFO] [stdout] --> src/parser/faces.rs:2:5 [INFO] [stdout] | [INFO] [stdout] 2 | use std::ops::Deref; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `super::num::Float` [INFO] [stdout] --> src/parser/faces.rs:3:5 [INFO] [stdout] | [INFO] [stdout] 3 | use super::num::Float; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/tree.rs:14:19 [INFO] [stdout] | [INFO] [stdout] 14 | Operation(Box>, Vec>), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 14 | Operation(Box>, Vec>), [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/faces.rs:5:26 [INFO] [stdout] | [INFO] [stdout] 5 | type RawFn = &'static Fn(Vec) -> Option; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 5 | type RawFn = &'static dyn Fn(Vec) -> Option; [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/lexem.rs:97:42 [INFO] [stdout] | [INFO] [stdout] 97 | impl Into>> for Operand { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 97 | impl Into>> for Operand { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/lexem.rs:98:26 [INFO] [stdout] | [INFO] [stdout] 98 | fn into(self) -> Box> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 98 | fn into(self) -> Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/builder.rs:54:71 [INFO] [stdout] | [INFO] [stdout] 54 | fn functions() -> HashMap>> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 54 | fn functions() -> HashMap>> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated [INFO] [stdout] --> src/parser/faces.rs:38:60 [INFO] [stdout] | [INFO] [stdout] 38 | pub fn new(name:S, func: RawFn) -> Box> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021! [INFO] [stdout] = note: for more information, see [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 38 | pub fn new(name:S, func: RawFn) -> Box> { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Add` [INFO] [stdout] --> src/parser/lexem.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sub` [INFO] [stdout] --> src/parser/lexem.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mul` [INFO] [stdout] --> src/parser/lexem.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Div` [INFO] [stdout] --> src/parser/lexem.rs:4:31 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Div` [INFO] [stdout] --> src/parser/lexem.rs:4:31 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Add` [INFO] [stdout] --> src/parser/lexem.rs:4:16 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Sub` [INFO] [stdout] --> src/parser/lexem.rs:4:21 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Mul` [INFO] [stdout] --> src/parser/lexem.rs:4:26 [INFO] [stdout] | [INFO] [stdout] 4 | use std::ops::{Add, Sub, Mul, Div}; [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Lexem` is never used [INFO] [stdout] --> src/parser/lexem.rs:12:10 [INFO] [stdout] | [INFO] [stdout] 12 | pub enum Lexem { [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `special` is never used [INFO] [stdout] --> src/parser/lexem.rs:22:8 [INFO] [stdout] | [INFO] [stdout] 21 | impl Lexem { [INFO] [stdout] | ---------- associated function in this implementation [INFO] [stdout] 22 | fn special(ch: char) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `0` and `1` are never read [INFO] [stdout] --> src/parser/builder.rs:12:5 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct BuilderErr( [INFO] [stdout] | ---------- fields in this struct [INFO] [stdout] 12 | String, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 13 | Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: consider removing these fields [INFO] [stdout] = note: `BuilderErr` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Operand` is never used [INFO] [stdout] --> src/parser/lexem.rs:33:10 [INFO] [stdout] | [INFO] [stdout] 33 | pub enum Operand { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AstFunction` is never constructed [INFO] [stdout] --> src/parser/builder.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AstFunction { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/parser/builder.rs:171:8 [INFO] [stdout] | [INFO] [stdout] 170 | impl AstFunction where T: 'static + Float + Sized + Debug { [INFO] [stdout] | --------------------------------------------------------------- associated function in this implementation [INFO] [stdout] 171 | fn new(desc: Builder, value: Builder) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `more`, `from`, and `ch` are never used [INFO] [stdout] --> src/parser/lexem.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 49 | impl Operand { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 54 | pub fn more(&self, rhs: &Operand) -> bool { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 62 | fn from(ch: char) -> Option { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 70 | fn ch(self) -> char { [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `name` and `args_count` are never used [INFO] [stdout] --> src/parser/faces.rs:8:8 [INFO] [stdout] | [INFO] [stdout] 7 | pub trait Function : Debug { [INFO] [stdout] | -------- methods in this trait [INFO] [stdout] 8 | fn name(&self) -> &str; [INFO] [stdout] | ^^^^ [INFO] [stdout] 9 | fn args_count(&self) -> usize; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `add`, `sub`, `mul`, `div`, and `pow` are never used [INFO] [stdout] --> src/parser/lexem.rs:80:8 [INFO] [stdout] | [INFO] [stdout] 79 | impl Operand { [INFO] [stdout] | ------------ associated functions in this implementation [INFO] [stdout] 80 | fn add(args: Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 83 | fn sub(args: Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 86 | fn mul(args: Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 89 | fn div(args: Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 92 | fn pow(args: Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `State` is never used [INFO] [stdout] --> src/parser/lexem.rs:112:6 [INFO] [stdout] | [INFO] [stdout] 112 | enum State { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Parser` is never constructed [INFO] [stdout] --> src/parser/lexem.rs:128:8 [INFO] [stdout] | [INFO] [stdout] 128 | struct Parser { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `args_count` is never read [INFO] [stdout] --> src/parser/faces.rs:15:5 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct FnFunction { [INFO] [stdout] | ---------- field in this struct [INFO] [stdout] 14 | name: String, [INFO] [stdout] 15 | args_count: usize, [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `process`, `end_letter`, and `end` are never used [INFO] [stdout] --> src/parser/lexem.rs:136:12 [INFO] [stdout] | [INFO] [stdout] 135 | impl Parser { [INFO] [stdout] | ----------- associated items in this implementation [INFO] [stdout] 136 | pub fn new() -> Parser { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 143 | pub fn process(mut self, ch: char) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 165 | fn end_letter(&mut self, letter: String) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 171 | pub fn end(mut self) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse` is never used [INFO] [stdout] --> src/parser/lexem.rs:179:8 [INFO] [stdout] | [INFO] [stdout] 179 | pub fn parse(input: &str) -> Vec { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Ast` is never used [INFO] [stdout] --> src/parser/tree.rs:11:10 [INFO] [stdout] | [INFO] [stdout] 11 | pub enum Ast { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `calculate` is never used [INFO] [stdout] --> src/parser/tree.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 17 | impl Ast where T: Sized + Clone { [INFO] [stdout] | ------------------------------------- method in this implementation [INFO] [stdout] 18 | pub fn calculate(&self, params: &HashMap) -> Option { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BuilderErr` is never constructed [INFO] [stdout] --> src/parser/builder.rs:11:12 [INFO] [stdout] | [INFO] [stdout] 11 | pub struct BuilderErr( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `BuildResult` is never used [INFO] [stdout] --> src/parser/builder.rs:16:6 [INFO] [stdout] | [INFO] [stdout] 16 | type BuildResult = Result; [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `BB` is never used [INFO] [stdout] --> src/parser/builder.rs:17:6 [INFO] [stdout] | [INFO] [stdout] 17 | type BB = Box; [INFO] [stdout] | ^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `Builder` is never used [INFO] [stdout] --> src/parser/builder.rs:32:10 [INFO] [stdout] | [INFO] [stdout] 32 | pub enum Builder { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> src/parser/builder.rs:43:8 [INFO] [stdout] | [INFO] [stdout] 42 | impl Builder { [INFO] [stdout] | ------------ associated items in this implementation [INFO] [stdout] 43 | fn sin(args: Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 46 | fn cos(args: Vec) -> Option { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 50 | pub fn new() -> Builder { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | fn functions() -> HashMap>> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | fn simple_err(s: S) -> Result { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | fn make_err(self, s: S) -> Result { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | pub fn ast(self) -> Result, BuilderErr> where T: Float { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 81 | fn ast_inner(self) -> Result, BuilderErr> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 97 | fn want_process(&self, lex: &Lexem) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn process(self, lex: Lexem) -> BuildResult { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | fn fun_delegate_inner(name: String, mut v: Vec, lex: Lexem) -> BuildResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AstFunction` is never constructed [INFO] [stdout] --> src/parser/builder.rs:164:8 [INFO] [stdout] | [INFO] [stdout] 164 | struct AstFunction { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/parser/builder.rs:171:8 [INFO] [stdout] | [INFO] [stdout] 170 | impl AstFunction where T: 'static + Float + Sized + Debug { [INFO] [stdout] | --------------------------------------------------------------- associated function in this implementation [INFO] [stdout] 171 | fn new(desc: Builder, value: Builder) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `RawFn` is never used [INFO] [stdout] --> src/parser/faces.rs:5:6 [INFO] [stdout] | [INFO] [stdout] 5 | type RawFn = &'static Fn(Vec) -> Option; [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: trait `Function` is never used [INFO] [stdout] --> src/parser/faces.rs:7:11 [INFO] [stdout] | [INFO] [stdout] 7 | pub trait Function : Debug { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FnFunction` is never constructed [INFO] [stdout] --> src/parser/faces.rs:13:12 [INFO] [stdout] | [INFO] [stdout] 13 | pub struct FnFunction { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated function `new` is never used [INFO] [stdout] --> src/parser/faces.rs:38:12 [INFO] [stdout] | [INFO] [stdout] 37 | impl FnFunction { [INFO] [stdout] | ---------------------------- associated function in this implementation [INFO] [stdout] 38 | pub fn new(name:S, func: RawFn) -> Box> { [INFO] [stdout] | ^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/parser/lexem.rs:39:1 [INFO] [stdout] | [INFO] [stdout] 39 | / impl ToString for Operand { [INFO] [stdout] 40 | | fn to_string(&self) -> String { [INFO] [stdout] 41 | | match self { [INFO] [stdout] 42 | | Operand::Low(ch) => ch, [INFO] [stdout] ... | [INFO] [stdout] 47 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: direct implementation of `ToString` [INFO] [stdout] --> src/parser/lexem.rs:39:1 [INFO] [stdout] | [INFO] [stdout] 39 | / impl ToString for Operand { [INFO] [stdout] 40 | | fn to_string(&self) -> String { [INFO] [stdout] 41 | | match self { [INFO] [stdout] 42 | | Operand::Low(ch) => ch, [INFO] [stdout] ... | [INFO] [stdout] 47 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: prefer implementing `Display` instead [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#to_string_trait_impl [INFO] [stdout] = note: `#[warn(clippy::to_string_trait_impl)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/parser/lexem.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | / match (self, rhs) { [INFO] [stdout] 56 | | (Operand::High(..), Operand::Low(..)) => true, [INFO] [stdout] 57 | | (Operand::Highest(..), Operand::High(..)) => true, [INFO] [stdout] 58 | | (Operand::Highest(..), Operand::Low(..)) => true, [INFO] [stdout] 59 | | _ => false, [INFO] [stdout] 60 | | } [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] 55 - match (self, rhs) { [INFO] [stdout] 56 - (Operand::High(..), Operand::Low(..)) => true, [INFO] [stdout] 57 - (Operand::Highest(..), Operand::High(..)) => true, [INFO] [stdout] 58 - (Operand::Highest(..), Operand::Low(..)) => true, [INFO] [stdout] 59 - _ => false, [INFO] [stdout] 60 - } [INFO] [stdout] 55 + matches!((self, rhs), (Operand::High(..), Operand::Low(..)) | (Operand::Highest(..), Operand::High(..)) | (Operand::Highest(..), Operand::Low(..))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: match expression looks like `matches!` macro [INFO] [stdout] --> src/parser/lexem.rs:55:9 [INFO] [stdout] | [INFO] [stdout] 55 | / match (self, rhs) { [INFO] [stdout] 56 | | (Operand::High(..), Operand::Low(..)) => true, [INFO] [stdout] 57 | | (Operand::Highest(..), Operand::High(..)) => true, [INFO] [stdout] 58 | | (Operand::Highest(..), Operand::Low(..)) => true, [INFO] [stdout] 59 | | _ => false, [INFO] [stdout] 60 | | } [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] 55 - match (self, rhs) { [INFO] [stdout] 56 - (Operand::High(..), Operand::Low(..)) => true, [INFO] [stdout] 57 - (Operand::Highest(..), Operand::High(..)) => true, [INFO] [stdout] 58 - (Operand::Highest(..), Operand::Low(..)) => true, [INFO] [stdout] 59 - _ => false, [INFO] [stdout] 60 - } [INFO] [stdout] 55 + matches!((self, rhs), (Operand::High(..), Operand::Low(..)) | (Operand::Highest(..), Operand::High(..)) | (Operand::Highest(..), Operand::Low(..))) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/parser/lexem.rs:97:1 [INFO] [stdout] | [INFO] [stdout] 97 | impl Into>> for Operand { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 97 ~ impl From for Box> { [INFO] [stdout] 98 ~ fn from(val: Operand) -> Self { [INFO] [stdout] 99 ~ match val.ch() { [INFO] [stdout] 100 ~ ch @ '+' => FnFunction::new(ch, &Operand::add), [INFO] [stdout] 101 ~ ch @'-' => FnFunction::new(ch, &Operand::sub), [INFO] [stdout] 102 ~ ch @ '*' => FnFunction::new(ch, &Operand::mul), [INFO] [stdout] 103 ~ ch @ '/' => FnFunction::new(ch, &Operand::div), [INFO] [stdout] 104 ~ ch @ '^' => FnFunction::new(ch, &Operand::pow), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/parser/lexem.rs:97:1 [INFO] [stdout] | [INFO] [stdout] 97 | impl Into>> for Operand { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 97 ~ impl From for Box> { [INFO] [stdout] 98 ~ fn from(val: Operand) -> Self { [INFO] [stdout] 99 ~ match val.ch() { [INFO] [stdout] 100 ~ ch @ '+' => FnFunction::new(ch, &Operand::add), [INFO] [stdout] 101 ~ ch @'-' => FnFunction::new(ch, &Operand::sub), [INFO] [stdout] 102 ~ ch @ '*' => FnFunction::new(ch, &Operand::mul), [INFO] [stdout] 103 ~ ch @ '/' => FnFunction::new(ch, &Operand::div), [INFO] [stdout] 104 ~ ch @ '^' => FnFunction::new(ch, &Operand::pow), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parser/lexem.rs:122:19 [INFO] [stdout] | [INFO] [stdout] 122 | ch if !Lexem::special(ch).is_none() => State::Special, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Lexem::special(ch).is_some()` [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/parser/lexem.rs:122:19 [INFO] [stdout] | [INFO] [stdout] 122 | ch if !Lexem::special(ch).is_none() => State::Special, [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `Lexem::special(ch).is_some()` [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 expression creates a reference which is immediately dereferenced by the compiler [INFO] [stdout] --> src/parser/tree.rs:25:45 [INFO] [stdout] | [INFO] [stdout] 25 | args.push(ast.calculate(¶ms)?) [INFO] [stdout] | ^^^^^^^ help: change this to: `params` [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/parser/tree.rs:25:45 [INFO] [stdout] | [INFO] [stdout] 25 | args.push(ast.calculate(¶ms)?) [INFO] [stdout] | ^^^^^^^ help: change this to: `params` [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: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/parser/builder.rs:19:1 [INFO] [stdout] | [INFO] [stdout] 19 | impl Into for Builder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 19 ~ impl From for BuildResult { [INFO] [stdout] 20 ~ fn from(val: Builder) -> Self { [INFO] [stdout] 21 ~ Ok(val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/parser/builder.rs:25:1 [INFO] [stdout] | [INFO] [stdout] 25 | impl Into> for BuilderErr { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 25 ~ impl From for Result { [INFO] [stdout] 26 ~ fn from(val: BuilderErr) -> Self { [INFO] [stdout] 27 ~ Err(val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: useless conversion to the same type: `parser::tree::Ast` [INFO] [stdout] --> src/parser/tree.rs:70:13 [INFO] [stdout] | [INFO] [stdout] 70 | / multiple( [INFO] [stdout] 71 | | minus( [INFO] [stdout] 72 | | constant(12f64), [INFO] [stdout] 73 | | divide( [INFO] [stdout] ... | [INFO] [stdout] 78 | | variable("y".to_string()), [INFO] [stdout] 79 | | ).into(), [INFO] [stdout] | |____________________^ [INFO] [stdout] | [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 `.into()` [INFO] [stdout] | [INFO] [stdout] 70 ~ multiple( [INFO] [stdout] 71 + minus( [INFO] [stdout] 72 + constant(12f64), [INFO] [stdout] 73 + divide( [INFO] [stdout] 74 + constant(10f64), [INFO] [stdout] 75 + variable("x".to_string()), [INFO] [stdout] 76 + ), [INFO] [stdout] 77 + ), [INFO] [stdout] 78 + variable("y".to_string()), [INFO] [stdout] 79 ~ ), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/parser/builder.rs:19:1 [INFO] [stdout] | [INFO] [stdout] 19 | impl Into for Builder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 19 ~ impl From for BuildResult { [INFO] [stdout] 20 ~ fn from(val: Builder) -> Self { [INFO] [stdout] 21 ~ Ok(val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/parser/builder.rs:25:1 [INFO] [stdout] | [INFO] [stdout] 25 | impl Into> for BuilderErr { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 25 ~ impl From for Result { [INFO] [stdout] 26 ~ fn from(val: BuilderErr) -> Self { [INFO] [stdout] 27 ~ Err(val) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `Iterator::fold` on a type that implements `Try` [INFO] [stdout] --> src/parser/builder.rs:158:30 [INFO] [stdout] | [INFO] [stdout] 158 | parse(s).into_iter().fold(Ok(Builder::new()), |b, lex| b?.process(lex)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `try_fold` instead: `try_fold(Builder::new(), |b, lex| ...)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_try_fold [INFO] [stdout] = note: `#[warn(clippy::manual_try_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> src/parser/faces.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn new(name:S, func: RawFn) -> Box> { [INFO] [stdout] 39 | | Box::new(FnFunction { [INFO] [stdout] 40 | | name: name.to_string(), [INFO] [stdout] 41 | | args_count: 2, [INFO] [stdout] 42 | | fun: func [INFO] [stdout] 43 | | }) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: usage of `Iterator::fold` on a type that implements `Try` [INFO] [stdout] --> src/parser/builder.rs:158:30 [INFO] [stdout] | [INFO] [stdout] 158 | parse(s).into_iter().fold(Ok(Builder::new()), |b, lex| b?.process(lex)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `try_fold` instead: `try_fold(Builder::new(), |b, lex| ...)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_try_fold [INFO] [stdout] = note: `#[warn(clippy::manual_try_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods called `new` usually return `Self` [INFO] [stdout] --> src/parser/faces.rs:38:5 [INFO] [stdout] | [INFO] [stdout] 38 | / pub fn new(name:S, func: RawFn) -> Box> { [INFO] [stdout] 39 | | Box::new(FnFunction { [INFO] [stdout] 40 | | name: name.to_string(), [INFO] [stdout] 41 | | args_count: 2, [INFO] [stdout] 42 | | fun: func [INFO] [stdout] 43 | | }) [INFO] [stdout] 44 | | } [INFO] [stdout] | |_____^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_ret_no_self [INFO] [stdout] = note: `#[warn(clippy::new_ret_no_self)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.94s [INFO] running `Command { std: "docker" "inspect" "0210f3eedf4875416c8b6065a1bdfff5c5f19a37be36b6ef0f54a2e400b88a6b", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0210f3eedf4875416c8b6065a1bdfff5c5f19a37be36b6ef0f54a2e400b88a6b", kill_on_drop: false }` [INFO] [stdout] 0210f3eedf4875416c8b6065a1bdfff5c5f19a37be36b6ef0f54a2e400b88a6b