[INFO] updating cached repository semahawk/hc [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/semahawk/hc [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/semahawk/hc" "work/ex/clippy-test-run/sources/stable/gh/semahawk/hc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/semahawk/hc'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/semahawk/hc" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/semahawk/hc"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/semahawk/hc'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] c1a38b4588aa97170dc801eccbd64bc07fa6e7df [INFO] sha for GitHub repo semahawk/hc: c1a38b4588aa97170dc801eccbd64bc07fa6e7df [INFO] validating manifest of semahawk/hc 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 semahawk/hc 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 semahawk/hc [INFO] finished frobbing semahawk/hc [INFO] frobbed toml for semahawk/hc written to work/ex/clippy-test-run/sources/stable/gh/semahawk/hc/Cargo.toml [INFO] started frobbing semahawk/hc [INFO] finished frobbing semahawk/hc [INFO] frobbed toml for semahawk/hc written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/semahawk/hc/Cargo.toml [INFO] crate semahawk/hc has a lockfile. skipping [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 semahawk/hc against stable+rustflags=-Dclippy::into_iter_on_array for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/semahawk/hc:/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 -Dclippy::into_iter_on_array" "-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] 796d8fc7c579722a31af83c5c2165c21fb8b680aeea6a090618a7d15e21764a7 [INFO] running `"docker" "start" "-a" "796d8fc7c579722a31af83c5c2165c21fb8b680aeea6a090618a7d15e21764a7"` [INFO] [stderr] Checking nix v0.5.1 [INFO] [stderr] Checking rustyline v1.0.0 [INFO] [stderr] Checking hc v0.1.2 (/opt/crater/workdir) [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/lexer.rs:124:3 [INFO] [stderr] | [INFO] [stderr] 124 | return Ok(tokens); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tokens)` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/executor.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | return bits; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `bits` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:22:23 [INFO] [stderr] | [INFO] [stderr] 22 | const LOG_10_2: f64 = 0.301029995663981195213738894724493026768189881462108541310; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0.301_029_995_663_981_195_213_738_894_724_493_026_768_189_881_462_108_541_310` [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: unneeded return statement [INFO] [stderr] --> src/lexer.rs:124:3 [INFO] [stderr] | [INFO] [stderr] 124 | return Ok(tokens); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(tokens)` [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] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/executor.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | return bits; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `bits` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/main.rs:22:23 [INFO] [stderr] | [INFO] [stderr] 22 | const LOG_10_2: f64 = 0.301029995663981195213738894724493026768189881462108541310; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider: `0.301_029_995_663_981_195_213_738_894_724_493_026_768_189_881_462_108_541_310` [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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/lexer.rs:62:28 [INFO] [stderr] | [INFO] [stderr] 62 | let mut value: i64 = c.to_digit(base).unwrap() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(c.to_digit(base).unwrap())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/lexer.rs:65:18 [INFO] [stderr] | [INFO] [stderr] 65 | value *= base as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(base)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/lexer.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | value += p.to_digit(base).unwrap() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(p.to_digit(base).unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:69:3 [INFO] [stderr] | [INFO] [stderr] 69 | / if tokens.peek().is_none() { [INFO] [stderr] 70 | | return None; [INFO] [stderr] 71 | | } [INFO] [stderr] | |___^ help: replace_it_with: `tokens.peek()?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | / match token { [INFO] [stderr] 77 | | &&Token::Integer(_) | &&Token::Ident(_) | &&Token::LeftParen => (), [INFO] [stderr] 78 | | _ => return None, [INFO] [stderr] 79 | | }; [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] 76 | match *token { [INFO] [stderr] 77 | &Token::Integer(_) | &Token::Ident(_) | &Token::LeftParen => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:84:3 [INFO] [stderr] | [INFO] [stderr] 84 | / match token { [INFO] [stderr] 85 | | &Token::Integer(i) => Some(Expr::Number(i)), [INFO] [stderr] 86 | | &Token::Ident(ref i) => Some(Expr::Ident(i.clone())), [INFO] [stderr] 87 | | &Token::LeftParen => { [INFO] [stderr] ... | [INFO] [stderr] 101 | | _ => None, [INFO] [stderr] 102 | | } [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] 84 | match *token { [INFO] [stderr] 85 | Token::Integer(i) => Some(Expr::Number(i)), [INFO] [stderr] 86 | Token::Ident(ref i) => Some(Expr::Ident(i.clone())), [INFO] [stderr] 87 | Token::LeftParen => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:94:24 [INFO] [stderr] | [INFO] [stderr] 94 | Some(token) => match token { [INFO] [stderr] | ________________________^ [INFO] [stderr] 95 | | &Token::RightParen => Some(expr), [INFO] [stderr] 96 | | _ => None, [INFO] [stderr] 97 | | }, [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] 94 | Some(token) => match *token { [INFO] [stderr] 95 | Token::RightParen => Some(expr), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:121:22 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn parse(tokens: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/executor.rs:18:19 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn bits_set(&self) -> Vec { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / match self { [INFO] [stderr] 22 | | &Value::Number(v) => { [INFO] [stderr] 23 | | for bit in 0..64 { [INFO] [stderr] 24 | | if (v & (1 << bit)) != 0 { [INFO] [stderr] ... | [INFO] [stderr] 28 | | }, [INFO] [stderr] 29 | | } [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] 21 | match *self { [INFO] [stderr] 22 | Value::Number(v) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/executor.rs:34:23 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn to_nice_unit(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | / match self { [INFO] [stderr] 39 | | &Value::Number(orig_value) => { [INFO] [stderr] 40 | | let mut value = orig_value as f64; [INFO] [stderr] 41 | | 'a: while value >= 1024f64 { [INFO] [stderr] ... | [INFO] [stderr] 51 | | }, [INFO] [stderr] 52 | | } [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] 38 | match *self { [INFO] [stderr] 39 | Value::Number(orig_value) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / match self { [INFO] [stderr] 59 | | &Value::Number(n) => { [INFO] [stderr] 60 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 61 | | write!(f, "{:0width$}", n, width = width) [INFO] [stderr] 62 | | }, [INFO] [stderr] 63 | | } [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] 58 | match *self { [INFO] [stderr] 59 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Value::Number(n) => { [INFO] [stderr] 72 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 73 | | write!(f, "{:0width$b}", n, width = width) [INFO] [stderr] 74 | | }, [INFO] [stderr] 75 | | } [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] 70 | match *self { [INFO] [stderr] 71 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | / match self { [INFO] [stderr] 83 | | &Value::Number(n) => { [INFO] [stderr] 84 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 85 | | write!(f, "{:0width$o}", n, width = width) [INFO] [stderr] 86 | | } [INFO] [stderr] 87 | | } [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] 82 | match *self { [INFO] [stderr] 83 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / match self { [INFO] [stderr] 95 | | &Value::Number(n) => { [INFO] [stderr] 96 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 97 | | write!(f, "{:0width$x}", n, width = width) [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [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] 94 | match *self { [INFO] [stderr] 95 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:104:3 [INFO] [stderr] | [INFO] [stderr] 104 | / match expr { [INFO] [stderr] 105 | | &Expr::Number(i) => { [INFO] [stderr] 106 | | Ok(Value::Number(i)) [INFO] [stderr] 107 | | }, [INFO] [stderr] ... | [INFO] [stderr] 244 | | }, [INFO] [stderr] 245 | | } [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] 104 | match *expr { [INFO] [stderr] 105 | Expr::Number(i) => { [INFO] [stderr] 106 | Ok(Value::Number(i)) [INFO] [stderr] 107 | }, [INFO] [stderr] 108 | Expr::Ident(ref varname) => { [INFO] [stderr] 109 | match ctx.lookup_variable(varname.clone()) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/executor.rs:230:11 [INFO] [stderr] | [INFO] [stderr] 230 | let ref lhs = **l; [INFO] [stderr] | ----^^^^^^^------- help: try: `let lhs = &(**l);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:232:21 [INFO] [stderr] | [INFO] [stderr] 232 | let varname = match lhs { [INFO] [stderr] | _____________________^ [INFO] [stderr] 233 | | &Expr::Ident(ref varname) => varname.clone(), [INFO] [stderr] 234 | | _ => return Err(String::from("Can only assign to an identifier!")), [INFO] [stderr] 235 | | }; [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] 232 | let varname = match *lhs { [INFO] [stderr] 233 | Expr::Ident(ref varname) => varname.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/main.rs:22:23 [INFO] [stderr] | [INFO] [stderr] 22 | const LOG_10_2: f64 = 0.301029995663981195213738894724493026768189881462108541310; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `0.301_029_995_663_981_2` [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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/lexer.rs:62:28 [INFO] [stderr] | [INFO] [stderr] 62 | let mut value: i64 = c.to_digit(base).unwrap() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(c.to_digit(base).unwrap())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/lexer.rs:65:18 [INFO] [stderr] | [INFO] [stderr] 65 | value *= base as i64; [INFO] [stderr] | ^^^^^^^^^^^ help: try: `i64::from(base)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/lexer.rs:66:18 [INFO] [stderr] | [INFO] [stderr] 66 | value += p.to_digit(base).unwrap() as i64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(p.to_digit(base).unwrap())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:69:3 [INFO] [stderr] | [INFO] [stderr] 69 | / if tokens.peek().is_none() { [INFO] [stderr] 70 | | return None; [INFO] [stderr] 71 | | } [INFO] [stderr] | |___^ help: replace_it_with: `tokens.peek()?;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::question_mark)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:76:5 [INFO] [stderr] | [INFO] [stderr] 76 | / match token { [INFO] [stderr] 77 | | &&Token::Integer(_) | &&Token::Ident(_) | &&Token::LeftParen => (), [INFO] [stderr] 78 | | _ => return None, [INFO] [stderr] 79 | | }; [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] 76 | match *token { [INFO] [stderr] 77 | &Token::Integer(_) | &Token::Ident(_) | &Token::LeftParen => (), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:84:3 [INFO] [stderr] | [INFO] [stderr] 84 | / match token { [INFO] [stderr] 85 | | &Token::Integer(i) => Some(Expr::Number(i)), [INFO] [stderr] 86 | | &Token::Ident(ref i) => Some(Expr::Ident(i.clone())), [INFO] [stderr] 87 | | &Token::LeftParen => { [INFO] [stderr] ... | [INFO] [stderr] 101 | | _ => None, [INFO] [stderr] 102 | | } [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] 84 | match *token { [INFO] [stderr] 85 | Token::Integer(i) => Some(Expr::Number(i)), [INFO] [stderr] 86 | Token::Ident(ref i) => Some(Expr::Ident(i.clone())), [INFO] [stderr] 87 | Token::LeftParen => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:94:24 [INFO] [stderr] | [INFO] [stderr] 94 | Some(token) => match token { [INFO] [stderr] | ________________________^ [INFO] [stderr] 95 | | &Token::RightParen => Some(expr), [INFO] [stderr] 96 | | _ => None, [INFO] [stderr] 97 | | }, [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] 94 | Some(token) => match *token { [INFO] [stderr] 95 | Token::RightParen => Some(expr), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 105 | generate_binop!(primary before bitwise_set, Apostrophe -> BitwiseSetBit, Dot -> BitwiseUnsetBit); [INFO] [stderr] | ------------------------------------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 106 | generate_binop!(bitwise_set before mul, Star -> Mul, Slash -> Div); [INFO] [stderr] | ------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 107 | generate_binop!(mul before add, Plus -> Add, Minus -> Sub); [INFO] [stderr] | ----------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 108 | generate_binop!(add before bitwise_shift, DoubleLt -> BitwiseShl, DoubleGt -> BitwiseShr); [INFO] [stderr] | ------------------------------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 109 | generate_binop!(bitwise_shift before bitwise_and, And -> BitwiseAnd); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 110 | generate_binop!(bitwise_and before bitwise_xor, Caret -> BitwiseXor); [INFO] [stderr] | --------------------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 111 | generate_binop!(bitwise_xor before bitwise_or, Pipe -> BitwiseOr); [INFO] [stderr] | ------------------------------------------------------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:35:7 [INFO] [stderr] | [INFO] [stderr] 35 | / if lhs.is_none() { [INFO] [stderr] 36 | | return None; [INFO] [stderr] 37 | | } [INFO] [stderr] | |_______^ help: replace_it_with: `lhs?;` [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:39:58 [INFO] [stderr] | [INFO] [stderr] 39 | while let Some(op) = tokens.peeking_take_while(|t| match t { [INFO] [stderr] | __________________________________________________________^ [INFO] [stderr] 40 | | $( [INFO] [stderr] 41 | | &&Token::$op => true, [INFO] [stderr] 42 | | )+ [INFO] [stderr] 43 | | _ => false [INFO] [stderr] 44 | | }).next() { [INFO] [stderr] | |_______^ [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: this block may be rewritten with the `?` operator [INFO] [stderr] --> src/parser.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / if rhs.is_none() { [INFO] [stderr] 48 | | return None; [INFO] [stderr] 49 | | } [INFO] [stderr] | |_________^ help: replace_it_with: `rhs?;` [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#question_mark [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/parser.rs:51:15 [INFO] [stderr] | [INFO] [stderr] 51 | lhs = match op { [INFO] [stderr] | _______________^ [INFO] [stderr] 52 | | $( [INFO] [stderr] 53 | | &Token::$op => { [INFO] [stderr] 54 | | Some(Expr::$expr(Box::new(lhs.unwrap()), Box::new(rhs.unwrap()))) [INFO] [stderr] ... | [INFO] [stderr] 59 | | }, [INFO] [stderr] 60 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] ... [INFO] [stderr] 112 | generate_binop!(bitwise_or before assign, Eq -> Assign); [INFO] [stderr] | -------------------------------------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parser.rs:121:22 [INFO] [stderr] | [INFO] [stderr] 121 | pub fn parse(tokens: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Token]` [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] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/executor.rs:18:19 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn bits_set(&self) -> Vec { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::trivially_copy_pass_by_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:21:5 [INFO] [stderr] | [INFO] [stderr] 21 | / match self { [INFO] [stderr] 22 | | &Value::Number(v) => { [INFO] [stderr] 23 | | for bit in 0..64 { [INFO] [stderr] 24 | | if (v & (1 << bit)) != 0 { [INFO] [stderr] ... | [INFO] [stderr] 28 | | }, [INFO] [stderr] 29 | | } [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] 21 | match *self { [INFO] [stderr] 22 | Value::Number(v) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this argument is passed by reference, but would be more efficient if passed by value [INFO] [stderr] --> src/executor.rs:34:23 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn to_nice_unit(&self) -> String { [INFO] [stderr] | ^^^^^ help: consider passing by value instead: `self` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#trivially_copy_pass_by_ref [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:38:5 [INFO] [stderr] | [INFO] [stderr] 38 | / match self { [INFO] [stderr] 39 | | &Value::Number(orig_value) => { [INFO] [stderr] 40 | | let mut value = orig_value as f64; [INFO] [stderr] 41 | | 'a: while value >= 1024f64 { [INFO] [stderr] ... | [INFO] [stderr] 51 | | }, [INFO] [stderr] 52 | | } [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] 38 | match *self { [INFO] [stderr] 39 | Value::Number(orig_value) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:58:5 [INFO] [stderr] | [INFO] [stderr] 58 | / match self { [INFO] [stderr] 59 | | &Value::Number(n) => { [INFO] [stderr] 60 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 61 | | write!(f, "{:0width$}", n, width = width) [INFO] [stderr] 62 | | }, [INFO] [stderr] 63 | | } [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] 58 | match *self { [INFO] [stderr] 59 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:70:5 [INFO] [stderr] | [INFO] [stderr] 70 | / match self { [INFO] [stderr] 71 | | &Value::Number(n) => { [INFO] [stderr] 72 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 73 | | write!(f, "{:0width$b}", n, width = width) [INFO] [stderr] 74 | | }, [INFO] [stderr] 75 | | } [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] 70 | match *self { [INFO] [stderr] 71 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 82 | / match self { [INFO] [stderr] 83 | | &Value::Number(n) => { [INFO] [stderr] 84 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 85 | | write!(f, "{:0width$o}", n, width = width) [INFO] [stderr] 86 | | } [INFO] [stderr] 87 | | } [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] 82 | match *self { [INFO] [stderr] 83 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:94:5 [INFO] [stderr] | [INFO] [stderr] 94 | / match self { [INFO] [stderr] 95 | | &Value::Number(n) => { [INFO] [stderr] 96 | | let width = f.width().unwrap_or(0); [INFO] [stderr] 97 | | write!(f, "{:0width$x}", n, width = width) [INFO] [stderr] 98 | | } [INFO] [stderr] 99 | | } [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] 94 | match *self { [INFO] [stderr] 95 | Value::Number(n) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:104:3 [INFO] [stderr] | [INFO] [stderr] 104 | / match expr { [INFO] [stderr] 105 | | &Expr::Number(i) => { [INFO] [stderr] 106 | | Ok(Value::Number(i)) [INFO] [stderr] 107 | | }, [INFO] [stderr] ... | [INFO] [stderr] 244 | | }, [INFO] [stderr] 245 | | } [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] 104 | match *expr { [INFO] [stderr] 105 | Expr::Number(i) => { [INFO] [stderr] 106 | Ok(Value::Number(i)) [INFO] [stderr] 107 | }, [INFO] [stderr] 108 | Expr::Ident(ref varname) => { [INFO] [stderr] 109 | match ctx.lookup_variable(varname.clone()) { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/executor.rs:230:11 [INFO] [stderr] | [INFO] [stderr] 230 | let ref lhs = **l; [INFO] [stderr] | ----^^^^^^^------- help: try: `let lhs = &(**l);` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/executor.rs:232:21 [INFO] [stderr] | [INFO] [stderr] 232 | let varname = match lhs { [INFO] [stderr] | _____________________^ [INFO] [stderr] 233 | | &Expr::Ident(ref varname) => varname.clone(), [INFO] [stderr] 234 | | _ => return Err(String::from("Can only assign to an identifier!")), [INFO] [stderr] 235 | | }; [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] 232 | let varname = match *lhs { [INFO] [stderr] 233 | Expr::Ident(ref varname) => varname.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: float has excessive precision [INFO] [stderr] --> src/main.rs:22:23 [INFO] [stderr] | [INFO] [stderr] 22 | const LOG_10_2: f64 = 0.301029995663981195213738894724493026768189881462108541310; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider changing the type or truncating it to: `0.301_029_995_663_981_2` [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] Finished dev [unoptimized + debuginfo] target(s) in 6.60s [INFO] running `"docker" "inspect" "796d8fc7c579722a31af83c5c2165c21fb8b680aeea6a090618a7d15e21764a7"` [INFO] running `"docker" "rm" "-f" "796d8fc7c579722a31af83c5c2165c21fb8b680aeea6a090618a7d15e21764a7"` [INFO] [stdout] 796d8fc7c579722a31af83c5c2165c21fb8b680aeea6a090618a7d15e21764a7