[INFO] crate xxcalc 0.2.1 is already in cache [INFO] extracting crate xxcalc 0.2.1 into work/ex/clippy-test-run/sources/stable/reg/xxcalc/0.2.1 [INFO] extracting crate xxcalc 0.2.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/xxcalc/0.2.1 [INFO] validating manifest of xxcalc-0.2.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of xxcalc-0.2.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing xxcalc-0.2.1 [INFO] finished frobbing xxcalc-0.2.1 [INFO] frobbed toml for xxcalc-0.2.1 written to work/ex/clippy-test-run/sources/stable/reg/xxcalc/0.2.1/Cargo.toml [INFO] started frobbing xxcalc-0.2.1 [INFO] finished frobbing xxcalc-0.2.1 [INFO] frobbed toml for xxcalc-0.2.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/xxcalc/0.2.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting xxcalc-0.2.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/xxcalc/0.2.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] d91ec6b93f3819d4f3737850a94d1ce728294f5df241e42c7eb34f4c36ad2a8d [INFO] running `"docker" "start" "-a" "d91ec6b93f3819d4f3737850a94d1ce728294f5df241e42c7eb34f4c36ad2a8d"` [INFO] [stderr] Checking xxcalc v0.2.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/polynomial_calculator.rs:139:7 [INFO] [stderr] | [INFO] [stderr] 139 | evaluator: evaluator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `evaluator` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/polynomial_calculator.rs:172:7 [INFO] [stderr] | [INFO] [stderr] 172 | parser: parser [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/linear_solver.rs:80:7 [INFO] [stderr] | [INFO] [stderr] 80 | evaluator: evaluator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `evaluator` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/linear_solver.rs:112:7 [INFO] [stderr] | [INFO] [stderr] 112 | parser: parser [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/polynomial_calculator.rs:139:7 [INFO] [stderr] | [INFO] [stderr] 139 | evaluator: evaluator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `evaluator` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/polynomial_calculator.rs:172:7 [INFO] [stderr] | [INFO] [stderr] 172 | parser: parser [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/linear_solver.rs:80:7 [INFO] [stderr] | [INFO] [stderr] 80 | evaluator: evaluator [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `evaluator` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/linear_solver.rs:112:7 [INFO] [stderr] | [INFO] [stderr] 112 | parser: parser [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `parser` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial.rs:740:6 [INFO] [stderr] | [INFO] [stderr] 740 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 741 | | if other_degree == 0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tokenizer.rs:221:12 [INFO] [stderr] | [INFO] [stderr] 221 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 222 | | if self.state == State::Number || [INFO] [stderr] 223 | | self.state == State::NumberExponent { [INFO] [stderr] 224 | | self.tokens.push(self.value_position, [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 221 | } else if self.state == State::Number || [INFO] [stderr] 222 | self.state == State::NumberExponent { [INFO] [stderr] 223 | self.tokens.push(self.value_position, [INFO] [stderr] 224 | Token::Number(self.value.parse().unwrap())); [INFO] [stderr] 225 | } else [INFO] [stderr] 226 | if self.state == State::Identifier { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/tokenizer.rs:215:10 [INFO] [stderr] | [INFO] [stderr] 215 | } else [INFO] [stderr] | __________^ [INFO] [stderr] 216 | | if self.previous_state == State::Identifier { [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/tokenizer.rs:226:8 [INFO] [stderr] | [INFO] [stderr] 226 | } else [INFO] [stderr] | ________^ [INFO] [stderr] 227 | | if self.state == State::Identifier { [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/tokenizer.rs:235:5 [INFO] [stderr] | [INFO] [stderr] 235 | / if character == '(' || character.is_alphabetic() { [INFO] [stderr] 236 | | if self.previous_state == State::NumberSign || [INFO] [stderr] 237 | | self.previous_state == State::NumberExponent || [INFO] [stderr] 238 | | (self.previous_state == State::Number && character != 'e') { [INFO] [stderr] ... | [INFO] [stderr] 251 | | } [INFO] [stderr] 252 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 235 | if (character == '(' || character.is_alphabetic()) && (self.previous_state == State::NumberSign || [INFO] [stderr] 236 | self.previous_state == State::NumberExponent || [INFO] [stderr] 237 | (self.previous_state == State::Number && character != 'e')) { [INFO] [stderr] 238 | [INFO] [stderr] 239 | self.tokens.push(self.value_position, [INFO] [stderr] 240 | if self.previous_state == State::NumberSign { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/tokenizer.rs:267:1 [INFO] [stderr] | [INFO] [stderr] 267 | / macro_rules! tokenize { [INFO] [stderr] 268 | | ($x:expr) => (Tokenizer::default().process($x).to_owned()) [INFO] [stderr] 269 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/tokenizer.rs:271:1 [INFO] [stderr] | [INFO] [stderr] 271 | / macro_rules! tokenize_ref { [INFO] [stderr] 272 | | ($x:expr) => (Tokenizer::default().process($x)) [INFO] [stderr] 273 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | / return (*a_assoc == OperatorAssociativity::Left && a_prec <= b_prec) || [INFO] [stderr] 325 | | (*a_assoc == OperatorAssociativity::Right && a_prec < b_prec); [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 324 | (*a_assoc == OperatorAssociativity::Left && a_prec <= b_prec) || [INFO] [stderr] 325 | (*a_assoc == OperatorAssociativity::Right && a_prec < b_prec) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial_calculator.rs:330:6 [INFO] [stderr] | [INFO] [stderr] 330 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 331 | | if exponent[0] == 0.0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial_calculator.rs:333:6 [INFO] [stderr] | [INFO] [stderr] 333 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 334 | | if base_degree == 0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial_calculator.rs:336:6 [INFO] [stderr] | [INFO] [stderr] 336 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 337 | | if exponent[0] > 0.0 && exponent[0].fract() == 0.0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/linear_solver.rs:191:6 [INFO] [stderr] | [INFO] [stderr] 191 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 192 | | if left_degree == 0 && right_degree == 0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/linear_solver.rs:208:8 [INFO] [stderr] | [INFO] [stderr] 208 | } else [INFO] [stderr] | ________^ [INFO] [stderr] 209 | | if right[0].is_infinite() { [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:238:12 [INFO] [stderr] | [INFO] [stderr] 238 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 239 | | if let Some(&id) = self.lookup.get(&value.to_lowercase()) { [INFO] [stderr] 240 | | let _ = self.lookup.insert(value.clone(), id); [INFO] [stderr] 241 | | id [INFO] [stderr] ... | [INFO] [stderr] 246 | | } [INFO] [stderr] 247 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 238 | } else if let Some(&id) = self.lookup.get(&value.to_lowercase()) { [INFO] [stderr] 239 | let _ = self.lookup.insert(value.clone(), id); [INFO] [stderr] 240 | id [INFO] [stderr] 241 | } else { [INFO] [stderr] 242 | let _ = self.lookup.insert(value.to_lowercase(), self.identifiers.len()); [INFO] [stderr] 243 | self.identifiers.push(value.to_lowercase()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:231:33 [INFO] [stderr] | [INFO] [stderr] 231 | 1 if coefficient == -1.0 => Some(format!("-{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:231:33 [INFO] [stderr] | [INFO] [stderr] 231 | 1 if coefficient == -1.0 => Some(format!("-{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:232:33 [INFO] [stderr] | [INFO] [stderr] 232 | 1 if coefficient == 1.0 => Some(format!("{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:232:33 [INFO] [stderr] | [INFO] [stderr] 232 | 1 if coefficient == 1.0 => Some(format!("{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/polynomial.rs:232:60 [INFO] [stderr] | [INFO] [stderr] 232 | 1 if coefficient == 1.0 => Some(format!("{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `name.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:234:33 [INFO] [stderr] | [INFO] [stderr] 234 | _ if coefficient == -1.0 => Some(format!("-{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:234:33 [INFO] [stderr] | [INFO] [stderr] 234 | _ if coefficient == -1.0 => Some(format!("-{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:235:33 [INFO] [stderr] | [INFO] [stderr] 235 | _ if coefficient == 1.0 => Some(format!("{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:235:33 [INFO] [stderr] | [INFO] [stderr] 235 | _ if coefficient == 1.0 => Some(format!("{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial.rs:740:6 [INFO] [stderr] | [INFO] [stderr] 740 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 741 | | if other_degree == 0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::suspicious_else_formatting)] on by default [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: unused arithmetic operation that must be used [INFO] [stderr] --> src/polynomial.rs:416:5 [INFO] [stderr] | [INFO] [stderr] 416 | self + &other; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/polynomial.rs:416:5 [INFO] [stderr] | [INFO] [stderr] 416 | self + &other; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::no_effect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [INFO] [stderr] [INFO] [stderr] warning: unused arithmetic operation that must be used [INFO] [stderr] --> src/polynomial.rs:500:5 [INFO] [stderr] | [INFO] [stderr] 500 | self - &other; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/polynomial.rs:500:5 [INFO] [stderr] | [INFO] [stderr] 500 | self - &other; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:566:16 [INFO] [stderr] | [INFO] [stderr] 566 | for a in 0..self_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/polynomial.rs:566:30 [INFO] [stderr] | [INFO] [stderr] 566 | for a in 0..self_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::suspicious_arithmetic_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:567:18 [INFO] [stderr] | [INFO] [stderr] 567 | for b in 0..other_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `0..=other_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/polynomial.rs:567:33 [INFO] [stderr] | [INFO] [stderr] 567 | for b in 0..other_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/polynomial.rs:568:14 [INFO] [stderr] | [INFO] [stderr] 568 | c[a+b] += self.coefficients[a] * other.coefficients[b]; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: unused arithmetic operation that must be used [INFO] [stderr] --> src/polynomial.rs:596:5 [INFO] [stderr] | [INFO] [stderr] 596 | self * &other; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/polynomial.rs:596:5 [INFO] [stderr] | [INFO] [stderr] 596 | self * &other; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::ops::Mul::mul` that must be used [INFO] [stderr] --> src/polynomial.rs:618:5 [INFO] [stderr] | [INFO] [stderr] 618 | self.mul(other); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:666:16 [INFO] [stderr] | [INFO] [stderr] 666 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `MulAssign` impl [INFO] [stderr] --> src/polynomial.rs:666:30 [INFO] [stderr] | [INFO] [stderr] 666 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::suspicious_op_assign_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_op_assign_impl [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:746:18 [INFO] [stderr] | [INFO] [stderr] 746 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/polynomial.rs:746:32 [INFO] [stderr] | [INFO] [stderr] 746 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/polynomial.rs:755:32 [INFO] [stderr] | [INFO] [stderr] 755 | let diff = self_degree - other_degree; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/polynomial.rs:758:30 [INFO] [stderr] | [INFO] [stderr] 758 | d.coefficients[idx + diff] = coefficient; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:850:26 [INFO] [stderr] | [INFO] [stderr] 850 | other.coefficients[0 .. self_degree+1] == self.coefficients[0 .. self_degree+1] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/tokenizer.rs:221:12 [INFO] [stderr] | [INFO] [stderr] 221 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 222 | | if self.state == State::Number || [INFO] [stderr] 223 | | self.state == State::NumberExponent { [INFO] [stderr] 224 | | self.tokens.push(self.value_position, [INFO] [stderr] ... | [INFO] [stderr] 229 | | } [INFO] [stderr] 230 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 221 | } else if self.state == State::Number || [INFO] [stderr] 222 | self.state == State::NumberExponent { [INFO] [stderr] 223 | self.tokens.push(self.value_position, [INFO] [stderr] 224 | Token::Number(self.value.parse().unwrap())); [INFO] [stderr] 225 | } else [INFO] [stderr] 226 | if self.state == State::Identifier { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/tokenizer.rs:215:10 [INFO] [stderr] | [INFO] [stderr] 215 | } else [INFO] [stderr] | __________^ [INFO] [stderr] 216 | | if self.previous_state == State::Identifier { [INFO] [stderr] | |________^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:850:67 [INFO] [stderr] | [INFO] [stderr] 850 | other.coefficients[0 .. self_degree+1] == self.coefficients[0 .. self_degree+1] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/tokenizer.rs:226:8 [INFO] [stderr] | [INFO] [stderr] 226 | } else [INFO] [stderr] | ________^ [INFO] [stderr] 227 | | if self.state == State::Identifier { [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/tokenizer.rs:235:5 [INFO] [stderr] | [INFO] [stderr] 235 | / if character == '(' || character.is_alphabetic() { [INFO] [stderr] 236 | | if self.previous_state == State::NumberSign || [INFO] [stderr] 237 | | self.previous_state == State::NumberExponent || [INFO] [stderr] 238 | | (self.previous_state == State::Number && character != 'e') { [INFO] [stderr] ... | [INFO] [stderr] 251 | | } [INFO] [stderr] 252 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 235 | if (character == '(' || character.is_alphabetic()) && (self.previous_state == State::NumberSign || [INFO] [stderr] 236 | self.previous_state == State::NumberExponent || [INFO] [stderr] 237 | (self.previous_state == State::Number && character != 'e')) { [INFO] [stderr] 238 | [INFO] [stderr] 239 | self.tokens.push(self.value_position, [INFO] [stderr] 240 | if self.previous_state == State::NumberSign { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unused macro definition [INFO] [stderr] --> src/tokenizer.rs:267:1 [INFO] [stderr] | [INFO] [stderr] 267 | / macro_rules! tokenize { [INFO] [stderr] 268 | | ($x:expr) => (Tokenizer::default().process($x).to_owned()) [INFO] [stderr] 269 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_macros)] on by default [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/parser.rs:227:18 [INFO] [stderr] | [INFO] [stderr] 227 | if let Some(_) = self.operators.get(&name) { [INFO] [stderr] | ___________- ^^^^^^^ [INFO] [stderr] 228 | | stack.push((position, token.clone())); [INFO] [stderr] 229 | | } else { [INFO] [stderr] 230 | | return Err(ParsingError::UnknownOperator(name, position)); [INFO] [stderr] 231 | | } [INFO] [stderr] | |___________- help: try this: `if self.operators.get(&name).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parser.rs:313:32 [INFO] [stderr] | [INFO] [stderr] 313 | Token::Operator(name) => self.operators.get(&name).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.operators[&name]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parser.rs:319:32 [INFO] [stderr] | [INFO] [stderr] 319 | Token::Operator(name) => self.operators.get(&name).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.operators[&name]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:330:29 [INFO] [stderr] | [INFO] [stderr] 330 | assert_eq!(t.tokens[0], ((0, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::double_parens)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:331:29 [INFO] [stderr] | [INFO] [stderr] 331 | assert_eq!(t.tokens[1], ((1, Token::Operator('+')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:332:29 [INFO] [stderr] | [INFO] [stderr] 332 | assert_eq!(t.tokens[2], ((2, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:336:29 [INFO] [stderr] | [INFO] [stderr] 336 | assert_eq!(t.tokens[0], ((0, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:337:29 [INFO] [stderr] | [INFO] [stderr] 337 | assert_eq!(t.tokens[1], ((1, Token::Operator('+')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:338:29 [INFO] [stderr] | [INFO] [stderr] 338 | assert_eq!(t.tokens[2], ((2, Token::Identifier(0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:344:29 [INFO] [stderr] | [INFO] [stderr] 344 | assert_eq!(t.tokens[0], ((0, Token::Identifier(0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:345:29 [INFO] [stderr] | [INFO] [stderr] 345 | assert_eq!(t.tokens[1], ((1, Token::Operator('=')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/evaluator.rs:254:19 [INFO] [stderr] | [INFO] [stderr] 254 | let x = tokens.identifiers.get(idx).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens.identifiers[idx]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:346:29 [INFO] [stderr] | [INFO] [stderr] 346 | assert_eq!(t.tokens[2], ((2, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:362:29 [INFO] [stderr] | [INFO] [stderr] 362 | assert_eq!(t.tokens[0], ((0, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:363:29 [INFO] [stderr] | [INFO] [stderr] 363 | assert_eq!(t.tokens[1], ((1, Token::Operator('-')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] [INFO] [stderr] --> src/evaluator.rs:344:12 [INFO] [stderr] | [INFO] [stderr] 344 | if let Some(_) = self.constants.get(name) { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 345 | | return Err(EvaluationError::ConflictingName(name.to_string())); [INFO] [stderr] 346 | | } [INFO] [stderr] | |_____- help: try this: `if self.constants.get(name).is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:364:29 [INFO] [stderr] | [INFO] [stderr] 364 | assert_eq!(t.tokens[2], ((2, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:368:29 [INFO] [stderr] | [INFO] [stderr] 368 | assert_eq!(t.tokens[0], ((0, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:369:29 [INFO] [stderr] | [INFO] [stderr] 369 | assert_eq!(t.tokens[1], ((1, Token::Operator('-')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:370:29 [INFO] [stderr] | [INFO] [stderr] 370 | assert_eq!(t.tokens[2], ((2, Token::Number(-2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] --> src/evaluator.rs:404:12 [INFO] [stderr] | [INFO] [stderr] 404 | if let Some(_) = self.functions.get(name) { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 405 | | return Err(EvaluationError::ConflictingName(name.to_string())); [INFO] [stderr] 406 | | } [INFO] [stderr] | |_____- help: try this: `if self.functions.get(name).is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:377:29 [INFO] [stderr] | [INFO] [stderr] 377 | assert_eq!(t.tokens[0], ((0, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/evaluator.rs:412:33 [INFO] [stderr] | [INFO] [stderr] 412 | fn call_function(&self, name: &String, position: usize, stack: &mut Vec) -> Result { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:378:29 [INFO] [stderr] | [INFO] [stderr] 378 | assert_eq!(t.tokens[1], ((1, Token::Operator('-')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 412 | fn call_function(&self, name: &str, position: usize, stack: &mut Vec) -> Result { [INFO] [stderr] | ^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 415 | Err(EvaluationError::ArgumentMissing(name.to_string(), function.arity, position)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 423 | Err(EvaluationError::UnknownSymbol(name.to_string(), position)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:379:29 [INFO] [stderr] | [INFO] [stderr] 379 | assert_eq!(t.tokens[2], ((2, Token::Number(-1.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:380:29 [INFO] [stderr] | [INFO] [stderr] 380 | assert_eq!(t.tokens[3], ((2, Token::Operator('*')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:381:29 [INFO] [stderr] | [INFO] [stderr] 381 | assert_eq!(t.tokens[4], ((3, Token::Identifier(0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:386:29 [INFO] [stderr] | [INFO] [stderr] 386 | assert_eq!(t.tokens[0], ((0, Token::Number(-2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:387:29 [INFO] [stderr] | [INFO] [stderr] 387 | assert_eq!(t.tokens[1], ((0, Token::Operator('*')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:388:29 [INFO] [stderr] | [INFO] [stderr] 388 | assert_eq!(t.tokens[2], ((2, Token::Identifier(0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:393:29 [INFO] [stderr] | [INFO] [stderr] 393 | assert_eq!(t.tokens[0], ((0, Token::Number(-2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:394:29 [INFO] [stderr] | [INFO] [stderr] 394 | assert_eq!(t.tokens[1], ((0, Token::Operator('*')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:395:29 [INFO] [stderr] | [INFO] [stderr] 395 | assert_eq!(t.tokens[2], ((2, Token::BracketOpening))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:396:29 [INFO] [stderr] | [INFO] [stderr] 396 | assert_eq!(t.tokens[3], ((3, Token::Number(4.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] warning: Consider removing unnecessary double parentheses [INFO] [stderr] --> src/tokenizer.rs:397:29 [INFO] [stderr] | [INFO] [stderr] 397 | assert_eq!(t.tokens[4], ((4, Token::BracketClosing))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#double_parens [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `/` [INFO] [stderr] --> src/polynomial_calculator.rs:126:61 [INFO] [stderr] | [INFO] [stderr] 126 | evaluator.register_constant("nan", Polynomial::constant(0.0f64 / 0.0f64)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: constant division of 0.0 with 0.0 will always result in NaN [INFO] [stderr] --> src/polynomial_calculator.rs:126:61 [INFO] [stderr] | [INFO] [stderr] 126 | evaluator.register_constant("nan", Polynomial::constant(0.0f64 / 0.0f64)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_divided_by_zero)] on by default [INFO] [stderr] = help: Consider using `std::f64::NAN` if you would like a constant representing NaN [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_divided_by_zero [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parser.rs:324:5 [INFO] [stderr] | [INFO] [stderr] 324 | / return (*a_assoc == OperatorAssociativity::Left && a_prec <= b_prec) || [INFO] [stderr] 325 | | (*a_assoc == OperatorAssociativity::Right && a_prec < b_prec); [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 324 | (*a_assoc == OperatorAssociativity::Left && a_prec <= b_prec) || [INFO] [stderr] 325 | (*a_assoc == OperatorAssociativity::Right && a_prec < b_prec) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:235:61 [INFO] [stderr] | [INFO] [stderr] 235 | pub fn push_identifier(&mut self, position: usize, value: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to 12 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `xxcalc`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial_calculator.rs:330:6 [INFO] [stderr] | [INFO] [stderr] 330 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 331 | | if exponent[0] == 0.0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial_calculator.rs:333:6 [INFO] [stderr] | [INFO] [stderr] 333 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 334 | | if base_degree == 0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/polynomial_calculator.rs:336:6 [INFO] [stderr] | [INFO] [stderr] 336 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 337 | | if exponent[0] > 0.0 && exponent[0].fract() == 0.0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/linear_solver.rs:191:6 [INFO] [stderr] | [INFO] [stderr] 191 | } else [INFO] [stderr] | ______^ [INFO] [stderr] 192 | | if left_degree == 0 && right_degree == 0 { [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this is an `else if` but the formatting might hide it [INFO] [stderr] --> src/linear_solver.rs:208:8 [INFO] [stderr] | [INFO] [stderr] 208 | } else [INFO] [stderr] | ________^ [INFO] [stderr] 209 | | if right[0].is_infinite() { [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = note: to remove this lint, remove the `else` or remove the new line between `else` and `if` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_else_formatting [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/lib.rs:238:12 [INFO] [stderr] | [INFO] [stderr] 238 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 239 | | if let Some(&id) = self.lookup.get(&value.to_lowercase()) { [INFO] [stderr] 240 | | let _ = self.lookup.insert(value.clone(), id); [INFO] [stderr] 241 | | id [INFO] [stderr] ... | [INFO] [stderr] 246 | | } [INFO] [stderr] 247 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 238 | } else if let Some(&id) = self.lookup.get(&value.to_lowercase()) { [INFO] [stderr] 239 | let _ = self.lookup.insert(value.clone(), id); [INFO] [stderr] 240 | id [INFO] [stderr] 241 | } else { [INFO] [stderr] 242 | let _ = self.lookup.insert(value.to_lowercase(), self.identifiers.len()); [INFO] [stderr] 243 | self.identifiers.push(value.to_lowercase()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:231:33 [INFO] [stderr] | [INFO] [stderr] 231 | 1 if coefficient == -1.0 => Some(format!("-{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:231:33 [INFO] [stderr] | [INFO] [stderr] 231 | 1 if coefficient == -1.0 => Some(format!("-{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:232:33 [INFO] [stderr] | [INFO] [stderr] 232 | 1 if coefficient == 1.0 => Some(format!("{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:232:33 [INFO] [stderr] | [INFO] [stderr] 232 | 1 if coefficient == 1.0 => Some(format!("{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/polynomial.rs:232:60 [INFO] [stderr] | [INFO] [stderr] 232 | 1 if coefficient == 1.0 => Some(format!("{}", name)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `name.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:234:33 [INFO] [stderr] | [INFO] [stderr] 234 | _ if coefficient == -1.0 => Some(format!("-{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - -1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:234:33 [INFO] [stderr] | [INFO] [stderr] 234 | _ if coefficient == -1.0 => Some(format!("-{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:235:33 [INFO] [stderr] | [INFO] [stderr] 235 | _ if coefficient == 1.0 => Some(format!("{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider comparing them within some error: `(coefficient - 1.0).abs() < error` [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:235:33 [INFO] [stderr] | [INFO] [stderr] 235 | _ if coefficient == 1.0 => Some(format!("{}^{}", name, exponent)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: unused arithmetic operation that must be used [INFO] [stderr] --> src/polynomial.rs:416:5 [INFO] [stderr] | [INFO] [stderr] 416 | self + &other; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_must_use)] on by default [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/polynomial.rs:416:5 [INFO] [stderr] | [INFO] [stderr] 416 | self + &other; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::no_effect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [INFO] [stderr] [INFO] [stderr] warning: unused arithmetic operation that must be used [INFO] [stderr] --> src/polynomial.rs:500:5 [INFO] [stderr] | [INFO] [stderr] 500 | self - &other; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/polynomial.rs:500:5 [INFO] [stderr] | [INFO] [stderr] 500 | self - &other; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:566:16 [INFO] [stderr] | [INFO] [stderr] 566 | for a in 0..self_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/polynomial.rs:566:30 [INFO] [stderr] | [INFO] [stderr] 566 | for a in 0..self_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::suspicious_arithmetic_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:567:18 [INFO] [stderr] | [INFO] [stderr] 567 | for b in 0..other_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `0..=other_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/polynomial.rs:567:33 [INFO] [stderr] | [INFO] [stderr] 567 | for b in 0..other_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Mul` impl [INFO] [stderr] --> src/polynomial.rs:568:14 [INFO] [stderr] | [INFO] [stderr] 568 | c[a+b] += self.coefficients[a] * other.coefficients[b]; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: unused arithmetic operation that must be used [INFO] [stderr] --> src/polynomial.rs:596:5 [INFO] [stderr] | [INFO] [stderr] 596 | self * &other; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: statement with no effect [INFO] [stderr] --> src/polynomial.rs:596:5 [INFO] [stderr] | [INFO] [stderr] 596 | self * &other; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#no_effect [INFO] [stderr] [INFO] [stderr] warning: unused return value of `std::ops::Mul::mul` that must be used [INFO] [stderr] --> src/polynomial.rs:618:5 [INFO] [stderr] | [INFO] [stderr] 618 | self.mul(other); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:666:16 [INFO] [stderr] | [INFO] [stderr] 666 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `MulAssign` impl [INFO] [stderr] --> src/polynomial.rs:666:30 [INFO] [stderr] | [INFO] [stderr] 666 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::suspicious_op_assign_impl)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_op_assign_impl [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:746:18 [INFO] [stderr] | [INFO] [stderr] 746 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/polynomial.rs:746:32 [INFO] [stderr] | [INFO] [stderr] 746 | for idx in 0..self_degree+1 { [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/polynomial.rs:755:32 [INFO] [stderr] | [INFO] [stderr] 755 | let diff = self_degree - other_degree; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] error: Suspicious use of binary operator in `Div` impl [INFO] [stderr] --> src/polynomial.rs:758:30 [INFO] [stderr] | [INFO] [stderr] 758 | d.coefficients[idx + diff] = coefficient; [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#suspicious_arithmetic_impl [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:850:26 [INFO] [stderr] | [INFO] [stderr] 850 | other.coefficients[0 .. self_degree+1] == self.coefficients[0 .. self_degree+1] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/polynomial.rs:850:67 [INFO] [stderr] | [INFO] [stderr] 850 | other.coefficients[0 .. self_degree+1] == self.coefficients[0 .. self_degree+1] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: use: `0..=self_degree` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/polynomial.rs:878:37 [INFO] [stderr] | [INFO] [stderr] 878 | assert_eq!(Polynomial::constant(3.14).coefficients.to_vec(), &[3.14]); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::approx_constant)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/polynomial.rs:878:68 [INFO] [stderr] | [INFO] [stderr] 878 | assert_eq!(Polynomial::constant(3.14).coefficients.to_vec(), &[3.14]); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/polynomial.rs:894:37 [INFO] [stderr] | [INFO] [stderr] 894 | assert_eq!(Polynomial::constant(3.14).as_f64(), Ok(3.14)); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly [INFO] [stderr] --> src/polynomial.rs:894:56 [INFO] [stderr] | [INFO] [stderr] 894 | assert_eq!(Polynomial::constant(3.14).as_f64(), Ok(3.14)); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:915:5 [INFO] [stderr] | [INFO] [stderr] 915 | assert_eq!(Polynomial::zero()[0], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:915:5 [INFO] [stderr] | [INFO] [stderr] 915 | assert_eq!(Polynomial::zero()[0], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:916:5 [INFO] [stderr] | [INFO] [stderr] 916 | assert_eq!(Polynomial::linear(0.0, 1.0)[1], 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:916:5 [INFO] [stderr] | [INFO] [stderr] 916 | assert_eq!(Polynomial::linear(0.0, 1.0)[1], 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:920:5 [INFO] [stderr] | [INFO] [stderr] 920 | assert_eq!(x[0], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:920:5 [INFO] [stderr] | [INFO] [stderr] 920 | assert_eq!(x[0], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:921:5 [INFO] [stderr] | [INFO] [stderr] 921 | assert_eq!(x[1], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:921:5 [INFO] [stderr] | [INFO] [stderr] 921 | assert_eq!(x[1], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:927:5 [INFO] [stderr] | [INFO] [stderr] 927 | assert_eq!(Polynomial::zero()[1], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:927:5 [INFO] [stderr] | [INFO] [stderr] 927 | assert_eq!(Polynomial::zero()[1], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:945:5 [INFO] [stderr] | [INFO] [stderr] 945 | assert_eq!(a[0], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:945:5 [INFO] [stderr] | [INFO] [stderr] 945 | assert_eq!(a[0], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:946:5 [INFO] [stderr] | [INFO] [stderr] 946 | assert_eq!(a[1], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:946:5 [INFO] [stderr] | [INFO] [stderr] 946 | assert_eq!(a[1], 2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:947:5 [INFO] [stderr] | [INFO] [stderr] 947 | assert_eq!(a[2], 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:947:5 [INFO] [stderr] | [INFO] [stderr] 947 | assert_eq!(a[2], 3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:956:5 [INFO] [stderr] | [INFO] [stderr] 956 | assert_eq!(a[0], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:956:5 [INFO] [stderr] | [INFO] [stderr] 956 | assert_eq!(a[0], 0.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:957:5 [INFO] [stderr] | [INFO] [stderr] 957 | assert_eq!(a[1], -2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:957:5 [INFO] [stderr] | [INFO] [stderr] 957 | assert_eq!(a[1], -2.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:958:5 [INFO] [stderr] | [INFO] [stderr] 958 | assert_eq!(a[2], -3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:958:5 [INFO] [stderr] | [INFO] [stderr] 958 | assert_eq!(a[2], -3.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:968:5 [INFO] [stderr] | [INFO] [stderr] 968 | assert_eq!(a[0], 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:968:5 [INFO] [stderr] | [INFO] [stderr] 968 | assert_eq!(a[0], 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:969:5 [INFO] [stderr] | [INFO] [stderr] 969 | assert_eq!(a[1], 10.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:969:5 [INFO] [stderr] | [INFO] [stderr] 969 | assert_eq!(a[1], 10.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:970:5 [INFO] [stderr] | [INFO] [stderr] 970 | assert_eq!(a[2], 30.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:970:5 [INFO] [stderr] | [INFO] [stderr] 970 | assert_eq!(a[2], 30.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:971:5 [INFO] [stderr] | [INFO] [stderr] 971 | assert_eq!(a[3], 26.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:971:5 [INFO] [stderr] | [INFO] [stderr] 971 | assert_eq!(a[3], 26.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:972:5 [INFO] [stderr] | [INFO] [stderr] 972 | assert_eq!(a[4], 52.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:972:5 [INFO] [stderr] | [INFO] [stderr] 972 | assert_eq!(a[4], 52.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:973:5 [INFO] [stderr] | [INFO] [stderr] 973 | assert_eq!(a[5], 24.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:973:5 [INFO] [stderr] | [INFO] [stderr] 973 | assert_eq!(a[5], 24.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:986:5 [INFO] [stderr] | [INFO] [stderr] 986 | assert_eq!(a[0], 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:986:5 [INFO] [stderr] | [INFO] [stderr] 986 | assert_eq!(a[0], 5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:987:5 [INFO] [stderr] | [INFO] [stderr] 987 | assert_eq!(a[1], 10.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:987:5 [INFO] [stderr] | [INFO] [stderr] 987 | assert_eq!(a[1], 10.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:998:5 [INFO] [stderr] | [INFO] [stderr] 998 | assert_eq!(a[0], -5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:998:5 [INFO] [stderr] | [INFO] [stderr] 998 | assert_eq!(a[0], -5.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/polynomial.rs:999:5 [INFO] [stderr] | [INFO] [stderr] 999 | assert_eq!(a[1], 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/polynomial.rs:999:5 [INFO] [stderr] | [INFO] [stderr] 999 | assert_eq!(a[1], 1.0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/tokenizer.rs:291:16 [INFO] [stderr] | [INFO] [stderr] 291 | assert_eq!(tokenizer.process("2+2").tokens.iter().skip(1).next(), Some(&(1, Token::Operator('+')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_skip_next)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/tokenizer.rs:292:16 [INFO] [stderr] | [INFO] [stderr] 292 | assert_eq!(tokenizer.process("2-2").tokens.iter().skip(1).next(), Some(&(1, Token::Operator('-')))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/tokenizer.rs:356:16 [INFO] [stderr] | [INFO] [stderr] 356 | assert_eq!(tokenizer.process("(-2)").tokens.iter().skip(1).next(), Some(&(1, Token::Number(-2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/tokenizer.rs:357:16 [INFO] [stderr] | [INFO] [stderr] 357 | assert_eq!(tokenizer.process("( -2)").tokens.iter().skip(1).next(), Some(&(1, Token::Number(-2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/tokenizer.rs:358:16 [INFO] [stderr] | [INFO] [stderr] 358 | assert_eq!(tokenizer.process("(+2)").tokens.iter().skip(1).next(), Some(&(1, Token::Number(2.0)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/parser.rs:227:18 [INFO] [stderr] | [INFO] [stderr] 227 | if let Some(_) = self.operators.get(&name) { [INFO] [stderr] | ___________- ^^^^^^^ [INFO] [stderr] 228 | | stack.push((position, token.clone())); [INFO] [stderr] 229 | | } else { [INFO] [stderr] 230 | | return Err(ParsingError::UnknownOperator(name, position)); [INFO] [stderr] 231 | | } [INFO] [stderr] | |___________- help: try this: `if self.operators.get(&name).is_some()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parser.rs:313:32 [INFO] [stderr] | [INFO] [stderr] 313 | Token::Operator(name) => self.operators.get(&name).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.operators[&name]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a BTreeMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/parser.rs:319:32 [INFO] [stderr] | [INFO] [stderr] 319 | Token::Operator(name) => self.operators.get(&name).unwrap(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.operators[&name]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/parser.rs:366:16 [INFO] [stderr] | [INFO] [stderr] 366 | assert_eq!(parser.process(tokenize_ref!("2+2+2")).unwrap().tokens.iter().rev().skip(1).next().unwrap(), &(4, Token::Number(2.0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `skip(x).next()` on an iterator. This is more succinctly expressed by calling `nth(x)` [INFO] [stderr] --> src/parser.rs:367:16 [INFO] [stderr] | [INFO] [stderr] 367 | assert_eq!(parser.process(tokenize_ref!("2^2^2")).unwrap().tokens.iter().rev().skip(1).next().unwrap(), &(3, Token::Operator('^'))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_skip_next [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a Vec. Using `[]` is more clear and more concise [INFO] [stderr] --> src/evaluator.rs:254:19 [INFO] [stderr] | [INFO] [stderr] 254 | let x = tokens.identifiers.get(idx).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `tokens.identifiers[idx]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/evaluator.rs:344:12 [INFO] [stderr] | [INFO] [stderr] 344 | if let Some(_) = self.constants.get(name) { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 345 | | return Err(EvaluationError::ConflictingName(name.to_string())); [INFO] [stderr] 346 | | } [INFO] [stderr] | |_____- help: try this: `if self.constants.get(name).is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_some()` [INFO] [stderr] --> src/evaluator.rs:404:12 [INFO] [stderr] | [INFO] [stderr] 404 | if let Some(_) = self.functions.get(name) { [INFO] [stderr] | _____- ^^^^^^^ [INFO] [stderr] 405 | | return Err(EvaluationError::ConflictingName(name.to_string())); [INFO] [stderr] 406 | | } [INFO] [stderr] | |_____- help: try this: `if self.functions.get(name).is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/evaluator.rs:412:33 [INFO] [stderr] | [INFO] [stderr] 412 | fn call_function(&self, name: &String, position: usize, stack: &mut Vec) -> Result { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 412 | fn call_function(&self, name: &str, position: usize, stack: &mut Vec) -> Result { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 415 | Err(EvaluationError::ArgumentMissing(name.to_string(), function.arity, position)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 423 | Err(EvaluationError::UnknownSymbol(name.to_string(), position)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: equal expressions as operands to `/` [INFO] [stderr] --> src/polynomial_calculator.rs:126:61 [INFO] [stderr] | [INFO] [stderr] 126 | evaluator.register_constant("nan", Polynomial::constant(0.0f64 / 0.0f64)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::eq_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eq_op [INFO] [stderr] [INFO] [stderr] warning: constant division of 0.0 with 0.0 will always result in NaN [INFO] [stderr] --> src/polynomial_calculator.rs:126:61 [INFO] [stderr] | [INFO] [stderr] 126 | evaluator.register_constant("nan", Polynomial::constant(0.0f64 / 0.0f64)).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::zero_divided_by_zero)] on by default [INFO] [stderr] = help: Consider using `std::f64::NAN` if you would like a constant representing NaN [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#zero_divided_by_zero [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:235:61 [INFO] [stderr] | [INFO] [stderr] 235 | pub fn push_identifier(&mut self, position: usize, value: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: aborting due to 37 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `xxcalc`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "d91ec6b93f3819d4f3737850a94d1ce728294f5df241e42c7eb34f4c36ad2a8d"` [INFO] running `"docker" "rm" "-f" "d91ec6b93f3819d4f3737850a94d1ce728294f5df241e42c7eb34f4c36ad2a8d"` [INFO] [stdout] d91ec6b93f3819d4f3737850a94d1ce728294f5df241e42c7eb34f4c36ad2a8d