[INFO] crate shunting 0.0.3 is already in cache [INFO] extracting crate shunting 0.0.3 into work/ex/clippy-test-run/sources/stable/reg/shunting/0.0.3 [INFO] extracting crate shunting 0.0.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/shunting/0.0.3 [INFO] validating manifest of shunting-0.0.3 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 shunting-0.0.3 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 shunting-0.0.3 [INFO] removed path dependency lexers from shunting-0.0.3 [INFO] finished frobbing shunting-0.0.3 [INFO] frobbed toml for shunting-0.0.3 written to work/ex/clippy-test-run/sources/stable/reg/shunting/0.0.3/Cargo.toml [INFO] started frobbing shunting-0.0.3 [INFO] removed path dependency lexers from shunting-0.0.3 [INFO] finished frobbing shunting-0.0.3 [INFO] frobbed toml for shunting-0.0.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/shunting/0.0.3/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 shunting-0.0.3 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-0/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/shunting/0.0.3:/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] 2b0a05bb5c2c6bb7402478bee9b2154e3775e2d970d21bbc461b3e8ffbe667fe [INFO] running `"docker" "start" "-a" "2b0a05bb5c2c6bb7402478bee9b2154e3775e2d970d21bbc461b3e8ffbe667fe"` [INFO] [stderr] Checking lexers v0.0.5 [INFO] [stderr] Checking dylib v0.0.2 [INFO] [stderr] Checking shunting v0.0.3 (/opt/crater/workdir) [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/parser.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | while let Some(token) = lex.next() { [INFO] [stderr] | ^^^^^^^^^^ help: try: `for token in lex { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `rpneval::MathContext` [INFO] [stderr] --> src/rpneval.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> MathContext { [INFO] [stderr] 27 | | use std::f64::consts; [INFO] [stderr] 28 | | let mut cx = HashMap::new(); [INFO] [stderr] 29 | | cx.insert(format!("pi"), consts::PI); [INFO] [stderr] 30 | | cx.insert(format!("e"), consts::E); [INFO] [stderr] 31 | | MathContext(cx) [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpneval.rs:29:19 [INFO] [stderr] | [INFO] [stderr] 29 | cx.insert(format!("pi"), consts::PI); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"pi".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] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpneval.rs:30:19 [INFO] [stderr] | [INFO] [stderr] 30 | cx.insert(format!("e"), consts::E); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"e".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rpneval.rs:94:31 [INFO] [stderr] | [INFO] [stderr] 94 | "max" => nargs!(args.len() > 0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rpneval.rs:96:31 [INFO] [stderr] | [INFO] [stderr] 96 | "min" => nargs!(args.len() > 0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/rpnprint.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / fn build_ast<'a>(&'a self) -> AST<'a> { [INFO] [stderr] 13 | | let mut ops = Vec::new(); [INFO] [stderr] 14 | | for token in self.0.iter() { [INFO] [stderr] 15 | | match *token { [INFO] [stderr] ... | [INFO] [stderr] 36 | | ops.pop().unwrap() [INFO] [stderr] 37 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rpnprint.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | / match root { [INFO] [stderr] 45 | | &AST::Leaf(ref token) => { [INFO] [stderr] 46 | | match *token { [INFO] [stderr] 47 | | &MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] ... | [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 44 | match *root { [INFO] [stderr] 45 | AST::Leaf(ref token) => { [INFO] [stderr] 46 | match *token { [INFO] [stderr] 47 | &MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 48 | &MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 49 | _ => unreachable!() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rpnprint.rs:46:21 [INFO] [stderr] | [INFO] [stderr] 46 | / match *token { [INFO] [stderr] 47 | | &MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 48 | | &MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 49 | | _ => unreachable!() [INFO] [stderr] 50 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 46 | match *(*token) { [INFO] [stderr] 47 | MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 48 | MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpnprint.rs:48:57 [INFO] [stderr] | [INFO] [stderr] 48 | &MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `x.to_string()` [INFO] [stderr] | [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rpnprint.rs:53:21 [INFO] [stderr] | [INFO] [stderr] 53 | / match *token { [INFO] [stderr] 54 | | &MathToken::UOp(ref op) => { [INFO] [stderr] 55 | | let subtree = printer(&args[0]); [INFO] [stderr] 56 | | let (prec, assoc) = precedence(token); [INFO] [stderr] ... | [INFO] [stderr] 92 | | _ => unreachable!() [INFO] [stderr] 93 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 53 | match *(*token) { [INFO] [stderr] 54 | MathToken::UOp(ref op) => { [INFO] [stderr] 55 | let subtree = printer(&args[0]); [INFO] [stderr] 56 | let (prec, assoc) = precedence(token); [INFO] [stderr] 57 | // TODO: distinguish perfix/postfix operators [INFO] [stderr] 58 | if prec > (subtree.1).0 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpnprint.rs:72:33 [INFO] [stderr] | [INFO] [stderr] 72 | format!("{}", lhs.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `lhs.0.to_string()` [INFO] [stderr] | [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] warning: useless use of `format!` [INFO] [stderr] --> src/rpnprint.rs:78:33 [INFO] [stderr] | [INFO] [stderr] 78 | format!("{}", rhs.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rhs.0.to_string()` [INFO] [stderr] | [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] warning: long literal lacking separators [INFO] [stderr] --> src/rpneval_test.rs:11:56 [INFO] [stderr] | [INFO] [stderr] 11 | fuzzy_eq!(MathContext::new().eval(&expr).unwrap(), 2.99987792969); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider: `2.999_877_929_69` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/rpneval_test.rs:17:56 [INFO] [stderr] | [INFO] [stderr] 17 | fuzzy_eq!(MathContext::new().eval(&expr).unwrap(), 0.058889727457341); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: consider: `0.058_889_727_457_341` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/rpneval_test.rs:23:56 [INFO] [stderr] | [INFO] [stderr] 23 | fuzzy_eq!(MathContext::new().eval(&expr).unwrap(), 1.470429244187615496759); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `1.470_429_244_187_615_496_759` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/rpneval_test.rs:35:57 [INFO] [stderr] | [INFO] [stderr] 35 | fuzzy_eq!(MathContext::new().eval(&expr).unwrap(), -0.4505495340698074); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0.450_549_534_069_807_4` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `for` loop [INFO] [stderr] --> src/parser.rs:53:33 [INFO] [stderr] | [INFO] [stderr] 53 | while let Some(token) = lex.next() { [INFO] [stderr] | ^^^^^^^^^^ help: try: `for token in lex { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_on_iterator)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_on_iterator [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `rpneval::MathContext` [INFO] [stderr] --> src/rpneval.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / pub fn new() -> MathContext { [INFO] [stderr] 27 | | use std::f64::consts; [INFO] [stderr] 28 | | let mut cx = HashMap::new(); [INFO] [stderr] 29 | | cx.insert(format!("pi"), consts::PI); [INFO] [stderr] 30 | | cx.insert(format!("e"), consts::E); [INFO] [stderr] 31 | | MathContext(cx) [INFO] [stderr] 32 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 23 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpneval.rs:29:19 [INFO] [stderr] | [INFO] [stderr] 29 | cx.insert(format!("pi"), consts::PI); [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using .to_string(): `"pi".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] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpneval.rs:30:19 [INFO] [stderr] | [INFO] [stderr] 30 | cx.insert(format!("e"), consts::E); [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"e".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rpneval.rs:94:31 [INFO] [stderr] | [INFO] [stderr] 94 | "max" => nargs!(args.len() > 0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/rpneval.rs:96:31 [INFO] [stderr] | [INFO] [stderr] 96 | "min" => nargs!(args.len() > 0, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!args.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/rpnprint.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | / fn build_ast<'a>(&'a self) -> AST<'a> { [INFO] [stderr] 13 | | let mut ops = Vec::new(); [INFO] [stderr] 14 | | for token in self.0.iter() { [INFO] [stderr] 15 | | match *token { [INFO] [stderr] ... | [INFO] [stderr] 36 | | ops.pop().unwrap() [INFO] [stderr] 37 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rpnprint.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | / match root { [INFO] [stderr] 45 | | &AST::Leaf(ref token) => { [INFO] [stderr] 46 | | match *token { [INFO] [stderr] 47 | | &MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] ... | [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 44 | match *root { [INFO] [stderr] 45 | AST::Leaf(ref token) => { [INFO] [stderr] 46 | match *token { [INFO] [stderr] 47 | &MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 48 | &MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 49 | _ => unreachable!() [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rpnprint.rs:46:21 [INFO] [stderr] | [INFO] [stderr] 46 | / match *token { [INFO] [stderr] 47 | | &MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 48 | | &MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 49 | | _ => unreachable!() [INFO] [stderr] 50 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 46 | match *(*token) { [INFO] [stderr] 47 | MathToken::Number(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] 48 | MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpnprint.rs:48:57 [INFO] [stderr] | [INFO] [stderr] 48 | &MathToken::Variable(ref x) => (format!("{}", x), precedence(token)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: consider using .to_string(): `x.to_string()` [INFO] [stderr] | [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/rpnprint.rs:53:21 [INFO] [stderr] | [INFO] [stderr] 53 | / match *token { [INFO] [stderr] 54 | | &MathToken::UOp(ref op) => { [INFO] [stderr] 55 | | let subtree = printer(&args[0]); [INFO] [stderr] 56 | | let (prec, assoc) = precedence(token); [INFO] [stderr] ... | [INFO] [stderr] 92 | | _ => unreachable!() [INFO] [stderr] 93 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 53 | match *(*token) { [INFO] [stderr] 54 | MathToken::UOp(ref op) => { [INFO] [stderr] 55 | let subtree = printer(&args[0]); [INFO] [stderr] 56 | let (prec, assoc) = precedence(token); [INFO] [stderr] 57 | // TODO: distinguish perfix/postfix operators [INFO] [stderr] 58 | if prec > (subtree.1).0 { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/rpnprint.rs:72:33 [INFO] [stderr] | [INFO] [stderr] 72 | format!("{}", lhs.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `lhs.0.to_string()` [INFO] [stderr] | [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] warning: useless use of `format!` [INFO] [stderr] --> src/rpnprint.rs:78:33 [INFO] [stderr] | [INFO] [stderr] 78 | format!("{}", rhs.0) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `rhs.0.to_string()` [INFO] [stderr] | [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] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:11:24 [INFO] [stderr] | [INFO] [stderr] 11 | MathToken::BOp(format!("*")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"*".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:14:24 [INFO] [stderr] | [INFO] [stderr] 14 | MathToken::BOp(format!("-")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"-".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:17:24 [INFO] [stderr] | [INFO] [stderr] 17 | MathToken::BOp(format!("^")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"^".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:18:24 [INFO] [stderr] | [INFO] [stderr] 18 | MathToken::BOp(format!("^")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"^".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:19:24 [INFO] [stderr] | [INFO] [stderr] 19 | MathToken::UOp(format!("-")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"-".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:20:24 [INFO] [stderr] | [INFO] [stderr] 20 | MathToken::BOp(format!("/")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"/".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:21:24 [INFO] [stderr] | [INFO] [stderr] 21 | MathToken::BOp(format!("+")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"+".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:30:29 [INFO] [stderr] | [INFO] [stderr] 30 | MathToken::Variable(format!("x")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"x".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:31:29 [INFO] [stderr] | [INFO] [stderr] 31 | MathToken::Function(format!("sin"), 1), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"sin".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:32:24 [INFO] [stderr] | [INFO] [stderr] 32 | MathToken::BOp(format!("*")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"*".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:34:24 [INFO] [stderr] | [INFO] [stderr] 34 | MathToken::UOp(format!("!")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"!".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:36:24 [INFO] [stderr] | [INFO] [stderr] 36 | MathToken::UOp(format!("-")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"-".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:37:24 [INFO] [stderr] | [INFO] [stderr] 37 | MathToken::BOp(format!("%")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"%".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:38:24 [INFO] [stderr] | [INFO] [stderr] 38 | MathToken::BOp(format!("/")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"/".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:40:29 [INFO] [stderr] | [INFO] [stderr] 40 | MathToken::Variable(format!("x")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"x".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:41:29 [INFO] [stderr] | [INFO] [stderr] 41 | MathToken::Function(format!("max"), 2), [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider using .to_string(): `"max".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:42:24 [INFO] [stderr] | [INFO] [stderr] 42 | MathToken::BOp(format!("*")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"*".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:52:29 [INFO] [stderr] | [INFO] [stderr] 52 | MathToken::Variable(format!("x")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"x".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:54:24 [INFO] [stderr] | [INFO] [stderr] 54 | MathToken::BOp(format!("^")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"^".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:55:24 [INFO] [stderr] | [INFO] [stderr] 55 | MathToken::BOp(format!("-")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"-".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:56:24 [INFO] [stderr] | [INFO] [stderr] 56 | MathToken::UOp(format!("-")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"-".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:58:29 [INFO] [stderr] | [INFO] [stderr] 58 | MathToken::Variable(format!("x")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"x".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:60:24 [INFO] [stderr] | [INFO] [stderr] 60 | MathToken::BOp(format!("^")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"^".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:61:24 [INFO] [stderr] | [INFO] [stderr] 61 | MathToken::BOp(format!("+")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"+".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:62:24 [INFO] [stderr] | [INFO] [stderr] 62 | MathToken::BOp(format!("/")), [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"/".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/parser_test.rs:63:29 [INFO] [stderr] | [INFO] [stderr] 63 | MathToken::Function(format!("sqrt"), 1), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider using .to_string(): `"sqrt".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/parser_test.rs:93:9 [INFO] [stderr] | [INFO] [stderr] 93 | / match *token { [INFO] [stderr] 94 | | MathToken::Function(ref func, arity) => { [INFO] [stderr] 95 | | let expected_arity = expect.get(&func[..]); [INFO] [stderr] 96 | | assert_eq!(*expected_arity.unwrap(), arity); [INFO] [stderr] 97 | | }, [INFO] [stderr] 98 | | _ => () [INFO] [stderr] 99 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 93 | if let MathToken::Function(ref func, arity) = *token { [INFO] [stderr] 94 | let expected_arity = expect.get(&func[..]); [INFO] [stderr] 95 | assert_eq!(*expected_arity.unwrap(), arity); [INFO] [stderr] 96 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/rpneval_test.rs:23:56 [INFO] [stderr] | [INFO] [stderr] 23 | fuzzy_eq!(MathContext::new().eval(&expr).unwrap(), 1.470429244187615496759); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `1.470_429_244_187_615_4` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::excessive_precision)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#excessive_precision [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/bin/tox.rs:56:24 [INFO] [stderr] | [INFO] [stderr] 56 | let histpath = env::home_dir().map(|h| h.join(".tox_history")).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/bin/tox.rs:25:40 [INFO] [stderr] | [INFO] [stderr] 25 | if assig == MathToken::BOp(format!("=")) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"=".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] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/bin/tox.rs:58:16 [INFO] [stderr] | [INFO] [stderr] 58 | if let Err(_) = rl.load_history(&histpath) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 59 | | println!("No history yet"); [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________- help: try this: `if rl.load_history(&histpath).is_err()` [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: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/bin/tox.rs:56:24 [INFO] [stderr] | [INFO] [stderr] 56 | let histpath = env::home_dir().map(|h| h.join(".tox_history")).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/bin/tox.rs:25:40 [INFO] [stderr] | [INFO] [stderr] 25 | if assig == MathToken::BOp(format!("=")) { [INFO] [stderr] | ^^^^^^^^^^^^ help: consider using .to_string(): `"=".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] [INFO] [stderr] warning: redundant pattern matching, consider using `is_err()` [INFO] [stderr] --> src/bin/tox.rs:58:16 [INFO] [stderr] | [INFO] [stderr] 58 | if let Err(_) = rl.load_history(&histpath) { [INFO] [stderr] | _________- ^^^^^^ [INFO] [stderr] 59 | | println!("No history yet"); [INFO] [stderr] 60 | | } [INFO] [stderr] | |_________- help: try this: `if rl.load_history(&histpath).is_err()` [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] Finished dev [unoptimized + debuginfo] target(s) in 3.47s [INFO] running `"docker" "inspect" "2b0a05bb5c2c6bb7402478bee9b2154e3775e2d970d21bbc461b3e8ffbe667fe"` [INFO] running `"docker" "rm" "-f" "2b0a05bb5c2c6bb7402478bee9b2154e3775e2d970d21bbc461b3e8ffbe667fe"` [INFO] [stdout] 2b0a05bb5c2c6bb7402478bee9b2154e3775e2d970d21bbc461b3e8ffbe667fe