[INFO] crate jsonpath 0.1.1 is already in cache [INFO] extracting crate jsonpath 0.1.1 into work/ex/clippy-test-run/sources/stable/reg/jsonpath/0.1.1 [INFO] extracting crate jsonpath 0.1.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/jsonpath/0.1.1 [INFO] validating manifest of jsonpath-0.1.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of jsonpath-0.1.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing jsonpath-0.1.1 [INFO] finished frobbing jsonpath-0.1.1 [INFO] frobbed toml for jsonpath-0.1.1 written to work/ex/clippy-test-run/sources/stable/reg/jsonpath/0.1.1/Cargo.toml [INFO] started frobbing jsonpath-0.1.1 [INFO] finished frobbing jsonpath-0.1.1 [INFO] frobbed toml for jsonpath-0.1.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/jsonpath/0.1.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting jsonpath-0.1.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/jsonpath/0.1.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 3c45829a2291ea9d1f197ccb575d0af7cf58c23cb2b1bd2acfa81738893c03b5 [INFO] running `"docker" "start" "-a" "3c45829a2291ea9d1f197ccb575d0af7cf58c23cb2b1bd2acfa81738893c03b5"` [INFO] [stderr] Checking jsonpath v0.1.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/iter.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | criteria: criteria, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `criteria` [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/iter.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | current: current, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `current` [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/iter.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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/iter.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | criteria: criteria, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `criteria` [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/iter.rs:74:13 [INFO] [stderr] | [INFO] [stderr] 74 | current: current, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `current` [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/iter.rs:75:13 [INFO] [stderr] | [INFO] [stderr] 75 | root: root, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `root` [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: unneeded return statement [INFO] [stderr] --> src/filter/mod.rs:56:28 [INFO] [stderr] | [INFO] [stderr] 56 | Some(value) => return value, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `value` [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/filter/mod.rs:56:28 [INFO] [stderr] | [INFO] [stderr] 56 | Some(value) => return value, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `value` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / match $next.item.value { [INFO] [stderr] 8 | | &Value::Number(ref source) => { [INFO] [stderr] 9 | | match source.as_f64() { [INFO] [stderr] 10 | | Some(ref float_value) => Some(*float_value $operator *$value as f64), [INFO] [stderr] ... | [INFO] [stderr] 19 | | _ => None, [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 49 | numbers!(integer => next, <, value) [INFO] [stderr] | ----------------------------------- in this macro invocation [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] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / match $next.item.value { [INFO] [stderr] 8 | | &Value::Number(ref source) => { [INFO] [stderr] 9 | | match source.as_f64() { [INFO] [stderr] 10 | | Some(ref float_value) => Some(*float_value $operator *$value as f64), [INFO] [stderr] ... | [INFO] [stderr] 19 | | _ => None, [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 52 | numbers!(integer => next, >, value) [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match $next.item.value { [INFO] [stderr] 24 | | &Value::Number(ref source) => { [INFO] [stderr] 25 | | match source.as_f64() { [INFO] [stderr] 26 | | Some(ref float_value) => Some(float_value $operator ($value)), [INFO] [stderr] ... | [INFO] [stderr] 35 | | _ => None, [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 55 | numbers!(float => next, <, value) [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match $next.item.value { [INFO] [stderr] 24 | | &Value::Number(ref source) => { [INFO] [stderr] 25 | | match source.as_f64() { [INFO] [stderr] 26 | | Some(ref float_value) => Some(float_value $operator ($value)), [INFO] [stderr] ... | [INFO] [stderr] 35 | | _ => None, [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 58 | numbers!(float => next, >, value) [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/filter/comparison.rs:64:67 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn vec_filter(pattern: &Criterion, value: &Criterion, values: &Vec<&Value>) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[&Value]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/comparison.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match *v { [INFO] [stderr] 69 | | &Value::String(ref string_content) => { [INFO] [stderr] 70 | | if string_content != content { [INFO] [stderr] 71 | | return Some(false); [INFO] [stderr] ... | [INFO] [stderr] 74 | | _ => {}, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 68 | if let &Value::String(ref string_content) = *v { [INFO] [stderr] 69 | if string_content != content { [INFO] [stderr] 70 | return Some(false); [INFO] [stderr] 71 | } [INFO] [stderr] 72 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match *v { [INFO] [stderr] 69 | | &Value::String(ref string_content) => { [INFO] [stderr] 70 | | if string_content != content { [INFO] [stderr] 71 | | return Some(false); [INFO] [stderr] ... | [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] 68 | match *(*v) { [INFO] [stderr] 69 | Value::String(ref string_content) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/comparison.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | / match *v { [INFO] [stderr] 82 | | &Value::String(ref string_content) => { [INFO] [stderr] 83 | | if string_content == content { [INFO] [stderr] 84 | | return Some(false); [INFO] [stderr] ... | [INFO] [stderr] 87 | | _ => {}, [INFO] [stderr] 88 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 81 | if let &Value::String(ref string_content) = *v { [INFO] [stderr] 82 | if string_content == content { [INFO] [stderr] 83 | return Some(false); [INFO] [stderr] 84 | } [INFO] [stderr] 85 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | / match *v { [INFO] [stderr] 82 | | &Value::String(ref string_content) => { [INFO] [stderr] 83 | | if string_content == content { [INFO] [stderr] 84 | | return Some(false); [INFO] [stderr] ... | [INFO] [stderr] 87 | | _ => {}, [INFO] [stderr] 88 | | } [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] 81 | match *(*v) { [INFO] [stderr] 82 | Value::String(ref string_content) => { [INFO] [stderr] | [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/filter/mod.rs:8:56 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn process_filter<'a>(stack: &mut StackItem, path: &Vec, root: &StackItem<'a>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 8 | pub fn process_filter<'a>(stack: &mut StackItem, path: &[Criterion], root: &StackItem<'a>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] help: change `path.clone()` to [INFO] [stderr] | [INFO] [stderr] 46| None => (path.to_owned(), vec![]), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/mod.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | / match next.step { [INFO] [stderr] 15 | | Step::Key(key) => { [INFO] [stderr] 16 | | if child_name == key { [INFO] [stderr] 17 | | match comparison::filter(&path[2], &path[3], &next) { [INFO] [stderr] ... | [INFO] [stderr] 23 | | _ => {}, [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 14 | if let Step::Key(key) = next.step { [INFO] [stderr] 15 | if child_name == key { [INFO] [stderr] 16 | match comparison::filter(&path[2], &path[3], &next) { [INFO] [stderr] 17 | Some(value) => return value, [INFO] [stderr] 18 | None => {}, [INFO] [stderr] 19 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/mod.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | / match comparison::filter(&path[2], &path[3], &next) { [INFO] [stderr] 18 | | Some(value) => return value, [INFO] [stderr] 19 | | None => {}, [INFO] [stderr] 20 | | } [INFO] [stderr] | |___________________^ help: try this: `if let Some(value) = comparison::filter(&path[2], &path[3], &next) { return value }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/iter.rs:65:43 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn new(root: &'a Value, criteria: &'b Vec) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Criterion]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/parser/mod.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / for root in pairs.take(1) { [INFO] [stderr] 18 | | let criteria = parse_tokens(root)?; [INFO] [stderr] 19 | | return Ok(criteria); [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parser/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | / fn parse_tokens<'i>(element: Pair<'i, Rule>) -> Result> { [INFO] [stderr] 25 | | let mut criteria: Vec = vec![]; [INFO] [stderr] 26 | | for token in element.into_inner() { [INFO] [stderr] 27 | | match token.as_rule() { [INFO] [stderr] ... | [INFO] [stderr] 89 | | Ok(criteria) [INFO] [stderr] 90 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/structs.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | / match criterion { [INFO] [stderr] 55 | | &Criterion::Root => { [INFO] [stderr] 56 | | match step { [INFO] [stderr] 57 | | Step::Root => true, [INFO] [stderr] ... | [INFO] [stderr] 114 | | } [INFO] [stderr] 115 | | } [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 *criterion { [INFO] [stderr] 55 | Criterion::Root => { [INFO] [stderr] 56 | match step { [INFO] [stderr] 57 | Step::Root => true, [INFO] [stderr] 58 | _ => false [INFO] [stderr] 59 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/structs.rs:130:20 [INFO] [stderr] | [INFO] [stderr] 130 | let iter = match value { [INFO] [stderr] | ____________________^ [INFO] [stderr] 131 | | &Value::Array(ref vec) => Some(ItemIter::Array(vec.iter().enumerate())), [INFO] [stderr] 132 | | &Value::Object(ref map) => Some(ItemIter::Object(map.iter())), [INFO] [stderr] 133 | | _ => None [INFO] [stderr] 134 | | }; [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] 130 | let iter = match *value { [INFO] [stderr] 131 | Value::Array(ref vec) => Some(ItemIter::Array(vec.iter().enumerate())), [INFO] [stderr] 132 | Value::Object(ref map) => Some(ItemIter::Object(map.iter())), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/structs.rs:141:17 [INFO] [stderr] | [INFO] [stderr] 141 | / match item_iter { [INFO] [stderr] 142 | | &mut ItemIter::Array(ref mut iter) => { [INFO] [stderr] 143 | | match iter.next() { [INFO] [stderr] 144 | | Some((index, val)) => { [INFO] [stderr] ... | [INFO] [stderr] 161 | | } [INFO] [stderr] 162 | | } [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] 141 | match *item_iter { [INFO] [stderr] 142 | ItemIter::Array(ref mut iter) => { [INFO] [stderr] 143 | match iter.next() { [INFO] [stderr] 144 | Some((index, val)) => { [INFO] [stderr] 145 | let sub_item = Item::new(val); [INFO] [stderr] 146 | let step = Step::Index(index); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `jsonpath`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / match $next.item.value { [INFO] [stderr] 8 | | &Value::Number(ref source) => { [INFO] [stderr] 9 | | match source.as_f64() { [INFO] [stderr] 10 | | Some(ref float_value) => Some(*float_value $operator *$value as f64), [INFO] [stderr] ... | [INFO] [stderr] 19 | | _ => None, [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 49 | numbers!(integer => next, <, value) [INFO] [stderr] | ----------------------------------- in this macro invocation [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] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | / match $next.item.value { [INFO] [stderr] 8 | | &Value::Number(ref source) => { [INFO] [stderr] 9 | | match source.as_f64() { [INFO] [stderr] 10 | | Some(ref float_value) => Some(*float_value $operator *$value as f64), [INFO] [stderr] ... | [INFO] [stderr] 19 | | _ => None, [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 52 | numbers!(integer => next, >, value) [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match $next.item.value { [INFO] [stderr] 24 | | &Value::Number(ref source) => { [INFO] [stderr] 25 | | match source.as_f64() { [INFO] [stderr] 26 | | Some(ref float_value) => Some(float_value $operator ($value)), [INFO] [stderr] ... | [INFO] [stderr] 35 | | _ => None, [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 55 | numbers!(float => next, <, value) [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match $next.item.value { [INFO] [stderr] 24 | | &Value::Number(ref source) => { [INFO] [stderr] 25 | | match source.as_f64() { [INFO] [stderr] 26 | | Some(ref float_value) => Some(float_value $operator ($value)), [INFO] [stderr] ... | [INFO] [stderr] 35 | | _ => None, [INFO] [stderr] 36 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] ... [INFO] [stderr] 58 | numbers!(float => next, >, value) [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/filter/comparison.rs:64:67 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn vec_filter(pattern: &Criterion, value: &Criterion, values: &Vec<&Value>) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[&Value]` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/comparison.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match *v { [INFO] [stderr] 69 | | &Value::String(ref string_content) => { [INFO] [stderr] 70 | | if string_content != content { [INFO] [stderr] 71 | | return Some(false); [INFO] [stderr] ... | [INFO] [stderr] 74 | | _ => {}, [INFO] [stderr] 75 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 68 | if let &Value::String(ref string_content) = *v { [INFO] [stderr] 69 | if string_content != content { [INFO] [stderr] 70 | return Some(false); [INFO] [stderr] 71 | } [INFO] [stderr] 72 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:68:9 [INFO] [stderr] | [INFO] [stderr] 68 | / match *v { [INFO] [stderr] 69 | | &Value::String(ref string_content) => { [INFO] [stderr] 70 | | if string_content != content { [INFO] [stderr] 71 | | return Some(false); [INFO] [stderr] ... | [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] 68 | match *(*v) { [INFO] [stderr] 69 | Value::String(ref string_content) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/comparison.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | / match *v { [INFO] [stderr] 82 | | &Value::String(ref string_content) => { [INFO] [stderr] 83 | | if string_content == content { [INFO] [stderr] 84 | | return Some(false); [INFO] [stderr] ... | [INFO] [stderr] 87 | | _ => {}, [INFO] [stderr] 88 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 81 | if let &Value::String(ref string_content) = *v { [INFO] [stderr] 82 | if string_content == content { [INFO] [stderr] 83 | return Some(false); [INFO] [stderr] 84 | } [INFO] [stderr] 85 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/filter/comparison.rs:81:9 [INFO] [stderr] | [INFO] [stderr] 81 | / match *v { [INFO] [stderr] 82 | | &Value::String(ref string_content) => { [INFO] [stderr] 83 | | if string_content == content { [INFO] [stderr] 84 | | return Some(false); [INFO] [stderr] ... | [INFO] [stderr] 87 | | _ => {}, [INFO] [stderr] 88 | | } [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] 81 | match *(*v) { [INFO] [stderr] 82 | Value::String(ref string_content) => { [INFO] [stderr] | [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/filter/mod.rs:8:56 [INFO] [stderr] | [INFO] [stderr] 8 | pub fn process_filter<'a>(stack: &mut StackItem, path: &Vec, root: &StackItem<'a>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 8 | pub fn process_filter<'a>(stack: &mut StackItem, path: &[Criterion], root: &StackItem<'a>) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] help: change `path.clone()` to [INFO] [stderr] | [INFO] [stderr] 46| None => (path.to_owned(), vec![]), [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/mod.rs:14:13 [INFO] [stderr] | [INFO] [stderr] 14 | / match next.step { [INFO] [stderr] 15 | | Step::Key(key) => { [INFO] [stderr] 16 | | if child_name == key { [INFO] [stderr] 17 | | match comparison::filter(&path[2], &path[3], &next) { [INFO] [stderr] ... | [INFO] [stderr] 23 | | _ => {}, [INFO] [stderr] 24 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 14 | if let Step::Key(key) = next.step { [INFO] [stderr] 15 | if child_name == key { [INFO] [stderr] 16 | match comparison::filter(&path[2], &path[3], &next) { [INFO] [stderr] 17 | Some(value) => return value, [INFO] [stderr] 18 | None => {}, [INFO] [stderr] 19 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/filter/mod.rs:17:19 [INFO] [stderr] | [INFO] [stderr] 17 | / match comparison::filter(&path[2], &path[3], &next) { [INFO] [stderr] 18 | | Some(value) => return value, [INFO] [stderr] 19 | | None => {}, [INFO] [stderr] 20 | | } [INFO] [stderr] | |___________________^ help: try this: `if let Some(value) = comparison::filter(&path[2], &path[3], &next) { return value }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [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/iter.rs:65:43 [INFO] [stderr] | [INFO] [stderr] 65 | pub fn new(root: &'a Value, criteria: &'b Vec) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: change this to: `&[Criterion]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this loop never actually loops [INFO] [stderr] --> src/parser/mod.rs:17:5 [INFO] [stderr] | [INFO] [stderr] 17 | / for root in pairs.take(1) { [INFO] [stderr] 18 | | let criteria = parse_tokens(root)?; [INFO] [stderr] 19 | | return Ok(criteria); [INFO] [stderr] 20 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::never_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#never_loop [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/parser/mod.rs:24:1 [INFO] [stderr] | [INFO] [stderr] 24 | / fn parse_tokens<'i>(element: Pair<'i, Rule>) -> Result> { [INFO] [stderr] 25 | | let mut criteria: Vec = vec![]; [INFO] [stderr] 26 | | for token in element.into_inner() { [INFO] [stderr] 27 | | match token.as_rule() { [INFO] [stderr] ... | [INFO] [stderr] 89 | | Ok(criteria) [INFO] [stderr] 90 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/structs.rs:54:5 [INFO] [stderr] | [INFO] [stderr] 54 | / match criterion { [INFO] [stderr] 55 | | &Criterion::Root => { [INFO] [stderr] 56 | | match step { [INFO] [stderr] 57 | | Step::Root => true, [INFO] [stderr] ... | [INFO] [stderr] 114 | | } [INFO] [stderr] 115 | | } [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 *criterion { [INFO] [stderr] 55 | Criterion::Root => { [INFO] [stderr] 56 | match step { [INFO] [stderr] 57 | Step::Root => true, [INFO] [stderr] 58 | _ => false [INFO] [stderr] 59 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/structs.rs:130:20 [INFO] [stderr] | [INFO] [stderr] 130 | let iter = match value { [INFO] [stderr] | ____________________^ [INFO] [stderr] 131 | | &Value::Array(ref vec) => Some(ItemIter::Array(vec.iter().enumerate())), [INFO] [stderr] 132 | | &Value::Object(ref map) => Some(ItemIter::Object(map.iter())), [INFO] [stderr] 133 | | _ => None [INFO] [stderr] 134 | | }; [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] 130 | let iter = match *value { [INFO] [stderr] 131 | Value::Array(ref vec) => Some(ItemIter::Array(vec.iter().enumerate())), [INFO] [stderr] 132 | Value::Object(ref map) => Some(ItemIter::Object(map.iter())), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/structs.rs:141:17 [INFO] [stderr] | [INFO] [stderr] 141 | / match item_iter { [INFO] [stderr] 142 | | &mut ItemIter::Array(ref mut iter) => { [INFO] [stderr] 143 | | match iter.next() { [INFO] [stderr] 144 | | Some((index, val)) => { [INFO] [stderr] ... | [INFO] [stderr] 161 | | } [INFO] [stderr] 162 | | } [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] 141 | match *item_iter { [INFO] [stderr] 142 | ItemIter::Array(ref mut iter) => { [INFO] [stderr] 143 | match iter.next() { [INFO] [stderr] 144 | Some((index, val)) => { [INFO] [stderr] 145 | let sub_item = Item::new(val); [INFO] [stderr] 146 | let step = Step::Index(index); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `jsonpath`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3c45829a2291ea9d1f197ccb575d0af7cf58c23cb2b1bd2acfa81738893c03b5"` [INFO] running `"docker" "rm" "-f" "3c45829a2291ea9d1f197ccb575d0af7cf58c23cb2b1bd2acfa81738893c03b5"` [INFO] [stdout] 3c45829a2291ea9d1f197ccb575d0af7cf58c23cb2b1bd2acfa81738893c03b5