[INFO] updating cached repository cheezgi/juggle [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/cheezgi/juggle [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/cheezgi/juggle" "work/ex/clippy-test-run/sources/stable/gh/cheezgi/juggle"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/cheezgi/juggle'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/cheezgi/juggle" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/cheezgi/juggle"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/cheezgi/juggle'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] cd7b5bee2499eb0bb591de4369d3e047fccc4a0b [INFO] sha for GitHub repo cheezgi/juggle: cd7b5bee2499eb0bb591de4369d3e047fccc4a0b [INFO] validating manifest of cheezgi/juggle 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 cheezgi/juggle 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 cheezgi/juggle [INFO] finished frobbing cheezgi/juggle [INFO] frobbed toml for cheezgi/juggle written to work/ex/clippy-test-run/sources/stable/gh/cheezgi/juggle/Cargo.toml [INFO] started frobbing cheezgi/juggle [INFO] finished frobbing cheezgi/juggle [INFO] frobbed toml for cheezgi/juggle written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/cheezgi/juggle/Cargo.toml [INFO] crate cheezgi/juggle 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 cheezgi/juggle 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-1/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/cheezgi/juggle:/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] d90240e86058329e922f6277422e78a96ed44f5f42ae4596daef4accd3b3ef53 [INFO] running `"docker" "start" "-a" "d90240e86058329e922f6277422e78a96ed44f5f42ae4596daef4accd3b3ef53"` [INFO] [stderr] Checking rustyline v1.0.0 [INFO] [stderr] Checking juggle v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | which: which, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `which` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | which: which, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `which` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frame.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | is_exec: is_exec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_exec` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frame.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | is_exec: is_exec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_exec` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:47:13 [INFO] [stderr] | [INFO] [stderr] 47 | which: which, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `which` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/token.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:23:13 [INFO] [stderr] | [INFO] [stderr] 23 | which: which, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `which` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | message: message, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/error.rs:25:13 [INFO] [stderr] | [INFO] [stderr] 25 | line: line, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `line` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frame.rs:10:13 [INFO] [stderr] | [INFO] [stderr] 10 | is_exec: is_exec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_exec` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/frame.rs:17:13 [INFO] [stderr] | [INFO] [stderr] 17 | is_exec: is_exec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `is_exec` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 69 | | &Value::Number(n) => n, [INFO] [stderr] 70 | | _ => panic!("called get_number on non-number") [INFO] [stderr] 71 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:84:19 [INFO] [stderr] | [INFO] [stderr] 84 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 85 | | &Value::Bool(b) => b, [INFO] [stderr] 86 | | _ => panic!("called get_bool on non-bool") [INFO] [stderr] 87 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:72:9 [INFO] [stderr] | [INFO] [stderr] 72 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 69 | | &Value::Number(n) => n, [INFO] [stderr] 70 | | _ => panic!("called get_number on non-number") [INFO] [stderr] 71 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/value.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/value.rs:84:19 [INFO] [stderr] | [INFO] [stderr] 84 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 85 | | &Value::Bool(b) => b, [INFO] [stderr] 86 | | _ => panic!("called get_bool on non-bool") [INFO] [stderr] 87 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse.rs:20:30 [INFO] [stderr] | [INFO] [stderr] 20 | if !line.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/parse.rs:70:12 [INFO] [stderr] | [INFO] [stderr] 70 | }, line)); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::eval_order_dependence)] on by default [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/parse.rs:60:17 [INFO] [stderr] | [INFO] [stderr] 60 | line += 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match self { [INFO] [stderr] 41 | | &Value::Number(_) => true, [INFO] [stderr] 42 | | _ => false [INFO] [stderr] 43 | | } [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] 40 | match *self { [INFO] [stderr] 41 | Value::Number(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / match self { [INFO] [stderr] 48 | | &Value::Array(_) => true, [INFO] [stderr] 49 | | _ => false [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] 47 | match *self { [INFO] [stderr] 48 | Value::Array(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &Value::Bool(_) => true, [INFO] [stderr] 56 | | _ => false [INFO] [stderr] 57 | | } [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] 54 | match *self { [INFO] [stderr] 55 | Value::Bool(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match self { [INFO] [stderr] 62 | | &Value::Null => true, [INFO] [stderr] 63 | | _ => false [INFO] [stderr] 64 | | } [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] 61 | match *self { [INFO] [stderr] 62 | Value::Null => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 69 | | &Value::Number(n) => n, [INFO] [stderr] 70 | | _ => panic!("called get_number on non-number") [INFO] [stderr] 71 | | }; [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] 68 | let res = match *self { [INFO] [stderr] 69 | Value::Number(n) => n, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:76:19 [INFO] [stderr] | [INFO] [stderr] 76 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 77 | | &Value::Array(ref a) => a, [INFO] [stderr] 78 | | _ => panic!("called get_array on non-array") [INFO] [stderr] 79 | | }; [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] 76 | let res = match *self { [INFO] [stderr] 77 | Value::Array(ref a) => a, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:84:19 [INFO] [stderr] | [INFO] [stderr] 84 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 85 | | &Value::Bool(b) => b, [INFO] [stderr] 86 | | _ => panic!("called get_bool on non-bool") [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] 84 | let res = match *self { [INFO] [stderr] 85 | Value::Bool(b) => b, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `air::Air` [INFO] [stderr] --> src/air.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new() -> Air { [INFO] [stderr] 11 | | Air { [INFO] [stderr] 12 | | stack: Vec::new(), [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [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] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse.rs:20:30 [INFO] [stderr] | [INFO] [stderr] 20 | if !line.starts_with("#") { [INFO] [stderr] | ^^^ help: try using a char instead: `'#'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: unsequenced read of a variable [INFO] [stderr] --> src/parse.rs:70:12 [INFO] [stderr] | [INFO] [stderr] 70 | }, line)); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::eval_order_dependence)] on by default [INFO] [stderr] note: whether read occurs before this write depends on evaluation order [INFO] [stderr] --> src/parse.rs:60:17 [INFO] [stderr] | [INFO] [stderr] 60 | line += 1; [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#eval_order_dependence [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:40:9 [INFO] [stderr] | [INFO] [stderr] 40 | / match self { [INFO] [stderr] 41 | | &Value::Number(_) => true, [INFO] [stderr] 42 | | _ => false [INFO] [stderr] 43 | | } [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] 40 | match *self { [INFO] [stderr] 41 | Value::Number(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | / match self { [INFO] [stderr] 48 | | &Value::Array(_) => true, [INFO] [stderr] 49 | | _ => false [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] 47 | match *self { [INFO] [stderr] 48 | Value::Array(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:54:9 [INFO] [stderr] | [INFO] [stderr] 54 | / match self { [INFO] [stderr] 55 | | &Value::Bool(_) => true, [INFO] [stderr] 56 | | _ => false [INFO] [stderr] 57 | | } [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] 54 | match *self { [INFO] [stderr] 55 | Value::Bool(_) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:61:9 [INFO] [stderr] | [INFO] [stderr] 61 | / match self { [INFO] [stderr] 62 | | &Value::Null => true, [INFO] [stderr] 63 | | _ => false [INFO] [stderr] 64 | | } [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] 61 | match *self { [INFO] [stderr] 62 | Value::Null => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:68:19 [INFO] [stderr] | [INFO] [stderr] 68 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 69 | | &Value::Number(n) => n, [INFO] [stderr] 70 | | _ => panic!("called get_number on non-number") [INFO] [stderr] 71 | | }; [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] 68 | let res = match *self { [INFO] [stderr] 69 | Value::Number(n) => n, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:76:19 [INFO] [stderr] | [INFO] [stderr] 76 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 77 | | &Value::Array(ref a) => a, [INFO] [stderr] 78 | | _ => panic!("called get_array on non-array") [INFO] [stderr] 79 | | }; [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] 76 | let res = match *self { [INFO] [stderr] 77 | Value::Array(ref a) => a, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/value.rs:84:19 [INFO] [stderr] | [INFO] [stderr] 84 | let res = match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 85 | | &Value::Bool(b) => b, [INFO] [stderr] 86 | | _ => panic!("called get_bool on non-bool") [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] 84 | let res = match *self { [INFO] [stderr] 85 | Value::Bool(b) => b, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `air::Air` [INFO] [stderr] --> src/air.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | / pub fn new() -> Air { [INFO] [stderr] 11 | | Air { [INFO] [stderr] 12 | | stack: Vec::new(), [INFO] [stderr] 13 | | } [INFO] [stderr] 14 | | } [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] 5 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:101:17 [INFO] [stderr] | [INFO] [stderr] 101 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/main.rs:101:17 [INFO] [stderr] | [INFO] [stderr] 101 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:533:17 [INFO] [stderr] | [INFO] [stderr] 533 | / if frames[current_frame].is_exec { [INFO] [stderr] 534 | | if hands.pop().is_none() { [INFO] [stderr] 535 | | return Err(Error::new(ErrorType::HandsUnderflowError, "Hands underflowed when dropping value (drop)".into(), tok.line)); [INFO] [stderr] 536 | | } [INFO] [stderr] 537 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 533 | if frames[current_frame].is_exec && hands.pop().is_none() { [INFO] [stderr] 534 | return Err(Error::new(ErrorType::HandsUnderflowError, "Hands underflowed when dropping value (drop)".into(), tok.line)); [INFO] [stderr] 535 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 47 [INFO] [stderr] --> src/main.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | / fn eval(prog: Vec, air: &mut Air, hands: &mut Hands, routines: &mut HashMap>) -> Result<(), Error> { [INFO] [stderr] 79 | | let mut rl = Editor::<()>::new(); [INFO] [stderr] 80 | | [INFO] [stderr] 81 | | let mut frames = vec![Frame::new(true)]; [INFO] [stderr] ... | [INFO] [stderr] 607 | | Ok(()) [INFO] [stderr] 608 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | let ref tok = prog[k]; [INFO] [stderr] | ----^^^^^^^----------- help: try: `let tok = &prog[k];` [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: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:500:65 [INFO] [stderr] | [INFO] [stderr] 500 | .map(|x| Value::Number(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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: this if statement can be collapsed [INFO] [stderr] --> src/main.rs:533:17 [INFO] [stderr] | [INFO] [stderr] 533 | / if frames[current_frame].is_exec { [INFO] [stderr] 534 | | if hands.pop().is_none() { [INFO] [stderr] 535 | | return Err(Error::new(ErrorType::HandsUnderflowError, "Hands underflowed when dropping value (drop)".into(), tok.line)); [INFO] [stderr] 536 | | } [INFO] [stderr] 537 | | } [INFO] [stderr] | |_________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 533 | if frames[current_frame].is_exec && hands.pop().is_none() { [INFO] [stderr] 534 | return Err(Error::new(ErrorType::HandsUnderflowError, "Hands underflowed when dropping value (drop)".into(), tok.line)); [INFO] [stderr] 535 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 47 [INFO] [stderr] --> src/main.rs:78:1 [INFO] [stderr] | [INFO] [stderr] 78 | / fn eval(prog: Vec, air: &mut Air, hands: &mut Hands, routines: &mut HashMap>) -> Result<(), Error> { [INFO] [stderr] 79 | | let mut rl = Editor::<()>::new(); [INFO] [stderr] 80 | | [INFO] [stderr] 81 | | let mut frames = vec![Frame::new(true)]; [INFO] [stderr] ... | [INFO] [stderr] 607 | | Ok(()) [INFO] [stderr] 608 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/main.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | let ref tok = prog[k]; [INFO] [stderr] | ----^^^^^^^----------- help: try: `let tok = &prog[k];` [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: casting u8 to i64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:500:65 [INFO] [stderr] | [INFO] [stderr] 500 | .map(|x| Value::Number(x as i64)) [INFO] [stderr] | ^^^^^^^^ help: try: `i64::from(x)` [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] Finished dev [unoptimized + debuginfo] target(s) in 4.19s [INFO] running `"docker" "inspect" "d90240e86058329e922f6277422e78a96ed44f5f42ae4596daef4accd3b3ef53"` [INFO] running `"docker" "rm" "-f" "d90240e86058329e922f6277422e78a96ed44f5f42ae4596daef4accd3b3ef53"` [INFO] [stdout] d90240e86058329e922f6277422e78a96ed44f5f42ae4596daef4accd3b3ef53