[INFO] crate pact_matching 0.4.5 is already in cache [INFO] extracting crate pact_matching 0.4.5 into work/ex/clippy-test-run/sources/stable/reg/pact_matching/0.4.5 [INFO] extracting crate pact_matching 0.4.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pact_matching/0.4.5 [INFO] validating manifest of pact_matching-0.4.5 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 pact_matching-0.4.5 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 pact_matching-0.4.5 [INFO] finished frobbing pact_matching-0.4.5 [INFO] frobbed toml for pact_matching-0.4.5 written to work/ex/clippy-test-run/sources/stable/reg/pact_matching/0.4.5/Cargo.toml [INFO] started frobbing pact_matching-0.4.5 [INFO] finished frobbing pact_matching-0.4.5 [INFO] frobbed toml for pact_matching-0.4.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pact_matching/0.4.5/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 pact_matching-0.4.5 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/pact_matching/0.4.5:/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] 77a74a782a4a79af62d4e30d3566a8e1ae427c895859461b1d71d297cf50edd1 [INFO] running `"docker" "start" "-a" "77a74a782a4a79af62d4e30d3566a8e1ae427c895859461b1d71d297cf50edd1"` [INFO] [stderr] Checking indextree v1.3.0 [INFO] [stderr] Checking p-macro v0.2.0 [INFO] [stderr] Checking sxd-document v0.2.6 [INFO] [stderr] Checking expectest v0.9.2 [INFO] [stderr] Checking pact_matching v0.4.5 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/models/provider_states.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | params: params [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/models/message.rs:69:22 [INFO] [stderr] | [INFO] [stderr] 69 | description: description, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `description` [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/models/message.rs:70:22 [INFO] [stderr] | [INFO] [stderr] 70 | provider_state: provider_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `provider_state` [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/models/message.rs:73:22 [INFO] [stderr] | [INFO] [stderr] 73 | metadata: metadata [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `metadata` [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/lib.rs:633:52 [INFO] [stderr] | [INFO] [stderr] 633 | mismatches.push(Mismatch::MethodMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `expected` [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/lib.rs:633:72 [INFO] [stderr] | [INFO] [stderr] 633 | mismatches.push(Mismatch::MethodMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `actual` [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/lib.rs:929:52 [INFO] [stderr] | [INFO] [stderr] 929 | mismatches.push(Mismatch::StatusMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `expected` [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/lib.rs:929:72 [INFO] [stderr] | [INFO] [stderr] 929 | mismatches.push(Mismatch::StatusMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `actual` [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/models/provider_states.rs:52:13 [INFO] [stderr] | [INFO] [stderr] 52 | params: params [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `params` [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/models/message.rs:69:22 [INFO] [stderr] | [INFO] [stderr] 69 | description: description, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `description` [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/models/message.rs:70:22 [INFO] [stderr] | [INFO] [stderr] 70 | provider_state: provider_state, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `provider_state` [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/models/message.rs:73:22 [INFO] [stderr] | [INFO] [stderr] 73 | metadata: metadata [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `metadata` [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/lib.rs:633:52 [INFO] [stderr] | [INFO] [stderr] 633 | mismatches.push(Mismatch::MethodMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `expected` [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/lib.rs:633:72 [INFO] [stderr] | [INFO] [stderr] 633 | mismatches.push(Mismatch::MethodMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `actual` [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/lib.rs:929:52 [INFO] [stderr] | [INFO] [stderr] 929 | mismatches.push(Mismatch::StatusMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `expected` [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/lib.rs:929:72 [INFO] [stderr] | [INFO] [stderr] 929 | mismatches.push(Mismatch::StatusMismatch { expected: expected, actual: actual }); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `actual` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/models/generators.rs:114:25 [INFO] [stderr] | [INFO] [stderr] 114 | const DIGIT_CHARSET: &'static [u8] = b"0123456789"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/models/generators.rs:120:23 [INFO] [stderr] | [INFO] [stderr] 120 | const HEX_CHARSET: &'static [u8] = b"0123456789ABCDEF"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/json.rs:375:12 [INFO] [stderr] | [INFO] [stderr] 375 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 376 | | if expected.is_empty() && !actual.is_empty() { [INFO] [stderr] 377 | | mismatches.push(Mismatch::BodyMismatch { path: spath, [INFO] [stderr] 378 | | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] ... | [INFO] [stderr] 390 | | } [INFO] [stderr] 391 | | } [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] 375 | } else if expected.is_empty() && !actual.is_empty() { [INFO] [stderr] 376 | mismatches.push(Mismatch::BodyMismatch { path: spath, [INFO] [stderr] 377 | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] 378 | actual: Some(value_of(&json!(actual)).into()), [INFO] [stderr] 379 | mismatch: format!("Expected an empty List but received {}", value_of(&json!(actual)))}); [INFO] [stderr] 380 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/xml.rs:200:12 [INFO] [stderr] | [INFO] [stderr] 200 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 201 | | if expected_children.is_empty() && !actual_children.is_empty() && config == DiffConfig::NoUnexpectedKeys { [INFO] [stderr] 202 | | mismatches.push(Mismatch::BodyMismatch { path: path_to_string(path), [INFO] [stderr] 203 | | expected: Some(desc_children(&expected_children).into()), [INFO] [stderr] ... | [INFO] [stderr] 221 | | } [INFO] [stderr] 222 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 200 | } else if expected_children.is_empty() && !actual_children.is_empty() && config == DiffConfig::NoUnexpectedKeys { [INFO] [stderr] 201 | mismatches.push(Mismatch::BodyMismatch { path: path_to_string(path), [INFO] [stderr] 202 | expected: Some(desc_children(&expected_children).into()), [INFO] [stderr] 203 | actual: Some(desc_children(&actual_children).into()), [INFO] [stderr] 204 | mismatch: format!("Expected an empty List but received [{}]", desc_children(&actual_children))}); [INFO] [stderr] 205 | } else if expected_children.len() != actual_children.len() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:583:73 [INFO] [stderr] | [INFO] [stderr] 583 | (&Mismatch::PathMismatch{ expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: Try with `PathMismatch { expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:584:76 [INFO] [stderr] | [INFO] [stderr] 584 | &Mismatch::PathMismatch{ expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `PathMismatch { expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:595:93 [INFO] [stderr] | [INFO] [stderr] 595 | (&Mismatch::QueryMismatch{ parameter: ref p1, expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `QueryMismatch { parameter: ref p1, expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:596:96 [INFO] [stderr] | [INFO] [stderr] 596 | &Mismatch::QueryMismatch{ parameter: ref p2, expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `QueryMismatch { parameter: ref p2, expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:599:88 [INFO] [stderr] | [INFO] [stderr] 599 | (&Mismatch::HeaderMismatch{ key: ref p1, expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `HeaderMismatch { key: ref p1, expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:600:91 [INFO] [stderr] | [INFO] [stderr] 600 | &Mismatch::HeaderMismatch{ key: ref p2, expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `HeaderMismatch { key: ref p2, expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:603:87 [INFO] [stderr] | [INFO] [stderr] 603 | (&Mismatch::BodyMismatch{ path: ref p1, expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `BodyMismatch { path: ref p1, expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:604:90 [INFO] [stderr] | [INFO] [stderr] 604 | &Mismatch::BodyMismatch{ path: ref p2, expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `BodyMismatch { path: ref p2, expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 867 | let matchers = matchingrules!{}; [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 867 | let matchers = matchingrules!{}; [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 902 | let matchers = matchingrules!{}; [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 902 | let matchers = matchingrules!{}; [INFO] [stderr] | ---------------- in this macro invocation [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/models/generators.rs:114:25 [INFO] [stderr] | [INFO] [stderr] 114 | const DIGIT_CHARSET: &'static [u8] = b"0123456789"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/models/generators.rs:120:23 [INFO] [stderr] | [INFO] [stderr] 120 | const HEX_CHARSET: &'static [u8] = b"0123456789ABCDEF"; [INFO] [stderr] | -^^^^^^^----- help: consider removing `'static`: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/models/generators.rs:616:5 [INFO] [stderr] | [INFO] [stderr] 616 | _generators [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 674 | expect!(generators!{}).to(be_equal_to(Generators::default())); [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/generators.rs:607:27 [INFO] [stderr] | [INFO] [stderr] 607 | let mut _generators = $crate::models::generators::Generators::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 674 | expect!(generators!{}).to(be_equal_to(Generators::default())); [INFO] [stderr] | ------------- in this macro invocation [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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/json.rs:375:12 [INFO] [stderr] | [INFO] [stderr] 375 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 376 | | if expected.is_empty() && !actual.is_empty() { [INFO] [stderr] 377 | | mismatches.push(Mismatch::BodyMismatch { path: spath, [INFO] [stderr] 378 | | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] ... | [INFO] [stderr] 390 | | } [INFO] [stderr] 391 | | } [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] 375 | } else if expected.is_empty() && !actual.is_empty() { [INFO] [stderr] 376 | mismatches.push(Mismatch::BodyMismatch { path: spath, [INFO] [stderr] 377 | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] 378 | actual: Some(value_of(&json!(actual)).into()), [INFO] [stderr] 379 | mismatch: format!("Expected an empty List but received {}", value_of(&json!(actual)))}); [INFO] [stderr] 380 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/json.rs:468:38 [INFO] [stderr] | [INFO] [stderr] 468 | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unneeded_field_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/json.rs:468:47 [INFO] [stderr] | [INFO] [stderr] 468 | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/json.rs:468:60 [INFO] [stderr] | [INFO] [stderr] 468 | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `BodyMismatch { mismatch: ref m, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/xml.rs:200:12 [INFO] [stderr] | [INFO] [stderr] 200 | } else { [INFO] [stderr] | ____________^ [INFO] [stderr] 201 | | if expected_children.is_empty() && !actual_children.is_empty() && config == DiffConfig::NoUnexpectedKeys { [INFO] [stderr] 202 | | mismatches.push(Mismatch::BodyMismatch { path: path_to_string(path), [INFO] [stderr] 203 | | expected: Some(desc_children(&expected_children).into()), [INFO] [stderr] ... | [INFO] [stderr] 221 | | } [INFO] [stderr] 222 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 200 | } else if expected_children.is_empty() && !actual_children.is_empty() && config == DiffConfig::NoUnexpectedKeys { [INFO] [stderr] 201 | mismatches.push(Mismatch::BodyMismatch { path: path_to_string(path), [INFO] [stderr] 202 | expected: Some(desc_children(&expected_children).into()), [INFO] [stderr] 203 | actual: Some(desc_children(&actual_children).into()), [INFO] [stderr] 204 | mismatch: format!("Expected an empty List but received [{}]", desc_children(&actual_children))}); [INFO] [stderr] 205 | } else if expected_children.len() != actual_children.len() { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/xml.rs:336:38 [INFO] [stderr] | [INFO] [stderr] 336 | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/xml.rs:336:47 [INFO] [stderr] | [INFO] [stderr] 336 | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/xml.rs:336:60 [INFO] [stderr] | [INFO] [stderr] 336 | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `BodyMismatch { mismatch: ref m, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:583:73 [INFO] [stderr] | [INFO] [stderr] 583 | (&Mismatch::PathMismatch{ expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `PathMismatch { expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:584:76 [INFO] [stderr] | [INFO] [stderr] 584 | &Mismatch::PathMismatch{ expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `PathMismatch { expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:595:93 [INFO] [stderr] | [INFO] [stderr] 595 | (&Mismatch::QueryMismatch{ parameter: ref p1, expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `QueryMismatch { parameter: ref p1, expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:596:96 [INFO] [stderr] | [INFO] [stderr] 596 | &Mismatch::QueryMismatch{ parameter: ref p2, expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `QueryMismatch { parameter: ref p2, expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:599:88 [INFO] [stderr] | [INFO] [stderr] 599 | (&Mismatch::HeaderMismatch{ key: ref p1, expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `HeaderMismatch { key: ref p1, expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:600:91 [INFO] [stderr] | [INFO] [stderr] 600 | &Mismatch::HeaderMismatch{ key: ref p2, expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `HeaderMismatch { key: ref p2, expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:603:87 [INFO] [stderr] | [INFO] [stderr] 603 | (&Mismatch::BodyMismatch{ path: ref p1, expected: ref e1, actual: ref a1, mismatch: _ }, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `BodyMismatch { path: ref p1, expected: ref e1, actual: ref a1, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: You matched a field with a wildcard pattern. Consider using `..` instead [INFO] [stderr] --> src/lib.rs:604:90 [INFO] [stderr] | [INFO] [stderr] 604 | &Mismatch::BodyMismatch{ path: ref p2, expected: ref e2, actual: ref a2, mismatch: _ }) => { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Try with `BodyMismatch { path: ref p2, expected: ref e2, actual: ref a2, .. }` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unneeded_field_pattern [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:49:53 [INFO] [stderr] | [INFO] [stderr] 49 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:49:53 [INFO] [stderr] | [INFO] [stderr] 49 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:72:53 [INFO] [stderr] | [INFO] [stderr] 72 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:72:53 [INFO] [stderr] | [INFO] [stderr] 72 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:86:53 [INFO] [stderr] | [INFO] [stderr] 86 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:86:53 [INFO] [stderr] | [INFO] [stderr] 86 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:103:53 [INFO] [stderr] | [INFO] [stderr] 103 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:103:53 [INFO] [stderr] | [INFO] [stderr] 103 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:120:53 [INFO] [stderr] | [INFO] [stderr] 120 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:120:53 [INFO] [stderr] | [INFO] [stderr] 120 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:138:53 [INFO] [stderr] | [INFO] [stderr] 138 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:138:53 [INFO] [stderr] | [INFO] [stderr] 138 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:156:53 [INFO] [stderr] | [INFO] [stderr] 156 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:156:53 [INFO] [stderr] | [INFO] [stderr] 156 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:175:53 [INFO] [stderr] | [INFO] [stderr] 175 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:175:53 [INFO] [stderr] | [INFO] [stderr] 175 | match_query(expected, actual, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:186:27 [INFO] [stderr] | [INFO] [stderr] 186 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:186:27 [INFO] [stderr] | [INFO] [stderr] 186 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:194:27 [INFO] [stderr] | [INFO] [stderr] 194 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:205:42 [INFO] [stderr] | [INFO] [stderr] 205 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:205:42 [INFO] [stderr] | [INFO] [stderr] 205 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:218:53 [INFO] [stderr] | [INFO] [stderr] 218 | &s!("HEADER1,HEADER2,3"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:218:53 [INFO] [stderr] | [INFO] [stderr] 218 | &s!("HEADER1,HEADER2,3"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:226:55 [INFO] [stderr] | [INFO] [stderr] 226 | &s!("HEADER 1,HEADER 2,3"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:226:55 [INFO] [stderr] | [INFO] [stderr] 226 | &s!("HEADER 1,HEADER 2,3"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:234:67 [INFO] [stderr] | [INFO] [stderr] 234 | &s!("application/json; charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:234:67 [INFO] [stderr] | [INFO] [stderr] 234 | &s!("application/json; charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:242:66 [INFO] [stderr] | [INFO] [stderr] 242 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:242:66 [INFO] [stderr] | [INFO] [stderr] 242 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:250:66 [INFO] [stderr] | [INFO] [stderr] 250 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:250:66 [INFO] [stderr] | [INFO] [stderr] 250 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:258:36 [INFO] [stderr] | [INFO] [stderr] 258 | &s!(""), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:258:36 [INFO] [stderr] | [INFO] [stderr] 258 | &s!(""), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:266:67 [INFO] [stderr] | [INFO] [stderr] 266 | &s!("application/json;charset=UTF-16"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:266:67 [INFO] [stderr] | [INFO] [stderr] 266 | &s!("application/json;charset=UTF-16"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:274:66 [INFO] [stderr] | [INFO] [stderr] 274 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:274:66 [INFO] [stderr] | [INFO] [stderr] 274 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:282:66 [INFO] [stderr] | [INFO] [stderr] 282 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:282:66 [INFO] [stderr] | [INFO] [stderr] 282 | &s!("application/json;charset=UTF-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:290:42 [INFO] [stderr] | [INFO] [stderr] 290 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:290:42 [INFO] [stderr] | [INFO] [stderr] 290 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:303:85 [INFO] [stderr] | [INFO] [stderr] 303 | &s!("application/hal+json;charset=utf-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:303:85 [INFO] [stderr] | [INFO] [stderr] 303 | &s!("application/hal+json;charset=utf-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:311:51 [INFO] [stderr] | [INFO] [stderr] 311 | &s!(""), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:311:51 [INFO] [stderr] | [INFO] [stderr] 311 | &s!(""), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:319:70 [INFO] [stderr] | [INFO] [stderr] 319 | &s!("application/hal+json;charset=utf-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:319:70 [INFO] [stderr] | [INFO] [stderr] 319 | &s!("application/hal+json;charset=utf-8"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:327:71 [INFO] [stderr] | [INFO] [stderr] 327 | &s!("application/hal+json;charset=utf-16"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:327:71 [INFO] [stderr] | [INFO] [stderr] 327 | &s!("application/hal+json;charset=utf-16"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:335:42 [INFO] [stderr] | [INFO] [stderr] 335 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:335:42 [INFO] [stderr] | [INFO] [stderr] 335 | &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:352:84 [INFO] [stderr] | [INFO] [stderr] 352 | match_body(&expected, &actual, DiffConfig::NoUnexpectedKeys, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:352:84 [INFO] [stderr] | [INFO] [stderr] 352 | match_body(&expected, &actual, DiffConfig::NoUnexpectedKeys, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:367:84 [INFO] [stderr] | [INFO] [stderr] 367 | match_body(&expected, &actual, DiffConfig::NoUnexpectedKeys, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:367:84 [INFO] [stderr] | [INFO] [stderr] 367 | match_body(&expected, &actual, DiffConfig::NoUnexpectedKeys, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:380:84 [INFO] [stderr] | [INFO] [stderr] 380 | match_body(&expected, &actual, DiffConfig::NoUnexpectedKeys, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:380:84 [INFO] [stderr] | [INFO] [stderr] 380 | match_body(&expected, &actual, DiffConfig::NoUnexpectedKeys, &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:548:68 [INFO] [stderr] | [INFO] [stderr] 548 | match_path(s!("/path/one"), s!("/path/one"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:548:68 [INFO] [stderr] | [INFO] [stderr] 548 | match_path(s!("/path/one"), s!("/path/one"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/matchingrules.rs:606:9 [INFO] [stderr] | [INFO] [stderr] 606 | _rules [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:555:68 [INFO] [stderr] | [INFO] [stderr] 555 | match_path(s!("/path/one"), s!("/path/two"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/matchingrules.rs:597:26 [INFO] [stderr] | [INFO] [stderr] 597 | let mut _rules = $crate::models::matchingrules::MatchingRules::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/tests.rs:555:68 [INFO] [stderr] | [INFO] [stderr] 555 | match_path(s!("/path/one"), s!("/path/two"), &mut mismatches, &matchingrules!{}); [INFO] [stderr] | ---------------- in this macro invocation [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/models/generators.rs:616:5 [INFO] [stderr] | [INFO] [stderr] 616 | _generators [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/generator_tests.rs:136:20 [INFO] [stderr] | [INFO] [stderr] 136 | let generators = generators!{}; [INFO] [stderr] | ------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/models/generators.rs:607:27 [INFO] [stderr] | [INFO] [stderr] 607 | let mut _generators = $crate::models::generators::Generators::default(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] ::: src/generator_tests.rs:136:20 [INFO] [stderr] | [INFO] [stderr] 136 | let generators = generators!{}; [INFO] [stderr] | ------------- in this macro invocation [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/json_utils.rs:15:20 [INFO] [stderr] | [INFO] [stderr] 15 | Some(val) => match val { [INFO] [stderr] | ____________________^ [INFO] [stderr] 16 | | &Value::Number(ref num) => match num.as_i64() { [INFO] [stderr] 17 | | Some(num) => num as i32, [INFO] [stderr] 18 | | None => default [INFO] [stderr] 19 | | }, [INFO] [stderr] 20 | | _ => default [INFO] [stderr] 21 | | }, [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] 15 | Some(val) => match *val { [INFO] [stderr] 16 | Value::Number(ref num) => match num.as_i64() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/json_utils.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | Some(val) => match val { [INFO] [stderr] | ____________________^ [INFO] [stderr] 31 | | &Value::Number(ref num) => match num.as_u64() { [INFO] [stderr] 32 | | Some(num) => num as u16, [INFO] [stderr] 33 | | None => default [INFO] [stderr] 34 | | }, [INFO] [stderr] 35 | | _ => default [INFO] [stderr] 36 | | }, [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] 30 | Some(val) => match *val { [INFO] [stderr] 31 | Value::Number(ref num) => match num.as_u64() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/json_utils.rs:44:3 [INFO] [stderr] | [INFO] [stderr] 44 | / match value { [INFO] [stderr] 45 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 46 | | _ => value.to_string() [INFO] [stderr] 47 | | } [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] 44 | match *value { [INFO] [stderr] 45 | Value::String(ref s) => s.clone(), [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/models/xml_utils.rs:7:27 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn parse_bytes(bytes: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:14:33 [INFO] [stderr] | [INFO] [stderr] 14 | fn matches_token(path_fragment: &String, path_token: &PathToken) -> usize { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:31:45 [INFO] [stderr] | [INFO] [stderr] 31 | fn calc_path_weight(path_exp: String, path: &Vec) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / match value { [INFO] [stderr] 99 | | &Value::Object(ref m) => match m.get("match") { [INFO] [stderr] 100 | | Some(value) => { [INFO] [stderr] 101 | | let val = json_to_string(value); [INFO] [stderr] ... | [INFO] [stderr] 162 | | _ => None [INFO] [stderr] 163 | | } [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] 98 | match *value { [INFO] [stderr] 99 | Value::Object(ref m) => match m.get("match") { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | / match self { [INFO] [stderr] 169 | | &MatchingRule::Equality => json!({ "match": Value::String(s!("equality")) }), [INFO] [stderr] 170 | | &MatchingRule::Regex(ref r) => json!({ "match": Value::String(s!("regex")), [INFO] [stderr] 171 | | "regex": Value::String(r.clone()) }), [INFO] [stderr] ... | [INFO] [stderr] 190 | | &MatchingRule::Null => json!({ "match": Value::String(s!("null")) }) [INFO] [stderr] 191 | | } [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] 168 | match *self { [INFO] [stderr] 169 | MatchingRule::Equality => json!({ "match": Value::String(s!("equality")) }), [INFO] [stderr] 170 | MatchingRule::Regex(ref r) => json!({ "match": Value::String(s!("regex")), [INFO] [stderr] 171 | "regex": Value::String(r.clone()) }), [INFO] [stderr] 172 | MatchingRule::Type => json!({ "match": Value::String(s!("type")) }), [INFO] [stderr] 173 | MatchingRule::MinType(min) => json!({ "match": Value::String(s!("type")), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:208:19 [INFO] [stderr] | [INFO] [stderr] 208 | Value::String(match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 209 | | &RuleLogic::And => s!("AND"), [INFO] [stderr] 210 | | &RuleLogic::Or => s!("OR") [INFO] [stderr] 211 | | }) [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] 208 | Value::String(match *self { [INFO] [stderr] 209 | RuleLogic::And => s!("AND"), [INFO] [stderr] 210 | RuleLogic::Or => s!("OR") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:291:41 [INFO] [stderr] | [INFO] [stderr] 291 | pub fn rule_from_json(&mut self, key: &String, matcher_json: &Value, rule_logic: &RuleLogic) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/matchingrules.rs:294:51 [INFO] [stderr] | [INFO] [stderr] 294 | let rules = self.rules.entry(key.clone()).or_insert(RuleList::default(rule_logic)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| RuleList::default(rule_logic))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:302:35 [INFO] [stderr] | [INFO] [stderr] 302 | pub fn add_rule(&mut self, key: &String, matcher: MatchingRule, rule_logic: &RuleLogic) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/matchingrules.rs:303:47 [INFO] [stderr] | [INFO] [stderr] 303 | let rules = self.rules.entry(key.clone()).or_insert(RuleList::default(rule_logic)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| RuleList::default(rule_logic))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [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/models/matchingrules.rs:317:31 [INFO] [stderr] | [INFO] [stderr] 317 | fn max_by_path(&self, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/matchingrules.rs:351:1 [INFO] [stderr] | [INFO] [stderr] 351 | / impl Hash for Category { [INFO] [stderr] 352 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 353 | | self.name.hash(state); [INFO] [stderr] 354 | | for (k, v) in self.rules.clone() { [INFO] [stderr] ... | [INFO] [stderr] 358 | | } [INFO] [stderr] 359 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/matchingrules.rs:260:34 [INFO] [stderr] | [INFO] [stderr] 260 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:404:48 [INFO] [stderr] | [INFO] [stderr] 404 | pub fn rules_for_category(&self, category: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:409:60 [INFO] [stderr] | [INFO] [stderr] 409 | pub fn matcher_is_defined(&self, category: &str, path: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:417:69 [INFO] [stderr] | [INFO] [stderr] 417 | pub fn wildcard_matcher_is_defined(&self, category: &str, path: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:425:58 [INFO] [stderr] | [INFO] [stderr] 425 | pub fn resolve_matchers(&self, category: &str, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:436:55 [INFO] [stderr] | [INFO] [stderr] 436 | pub fn resolve_body_matchers_by_path(&self, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:443:63 [INFO] [stderr] | [INFO] [stderr] 443 | fn resolve_wildcard_matchers(&self, category: &str, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:480:44 [INFO] [stderr] | [INFO] [stderr] 480 | fn add_rules(&mut self, category_name: &String, rules: &Value) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/matchingrules.rs:491:9 [INFO] [stderr] | [INFO] [stderr] 491 | / match rules.get("matchers") { [INFO] [stderr] 492 | | Some(matchers) => match matchers { [INFO] [stderr] 493 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 494 | | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] ... | [INFO] [stderr] 498 | | None => () [INFO] [stderr] 499 | | } [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] 491 | if let Some(matchers) = rules.get("matchers") { match matchers { [INFO] [stderr] 492 | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 493 | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 494 | }, [INFO] [stderr] 495 | _ => () [INFO] [stderr] 496 | } } [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/models/matchingrules.rs:492:29 [INFO] [stderr] | [INFO] [stderr] 492 | Some(matchers) => match matchers { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 493 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 494 | | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 495 | | }, [INFO] [stderr] 496 | | _ => () [INFO] [stderr] 497 | | }, [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] 492 | Some(matchers) => if let &Value::Array(ref array) = matchers for matcher in array { [INFO] [stderr] 493 | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 494 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:492:29 [INFO] [stderr] | [INFO] [stderr] 492 | Some(matchers) => match matchers { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 493 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 494 | | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 495 | | }, [INFO] [stderr] 496 | | _ => () [INFO] [stderr] 497 | | }, [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] 492 | Some(matchers) => match *matchers { [INFO] [stderr] 493 | Value::Array(ref array) => for matcher in array { [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/models/matchingrules.rs:501:9 [INFO] [stderr] | [INFO] [stderr] 501 | / match rules { [INFO] [stderr] 502 | | &Value::Object(ref m) => { [INFO] [stderr] 503 | | for (k, v) in m { [INFO] [stderr] 504 | | let rule_logic = match v.get("combine") { [INFO] [stderr] ... | [INFO] [stderr] 523 | | _ => () [INFO] [stderr] 524 | | } [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] 501 | if let &Value::Object(ref m) = rules { [INFO] [stderr] 502 | for (k, v) in m { [INFO] [stderr] 503 | let rule_logic = match v.get("combine") { [INFO] [stderr] 504 | Some(val) => if json_to_string(val).to_uppercase() == "OR" { [INFO] [stderr] 505 | RuleLogic::Or [INFO] [stderr] 506 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:501:9 [INFO] [stderr] | [INFO] [stderr] 501 | / match rules { [INFO] [stderr] 502 | | &Value::Object(ref m) => { [INFO] [stderr] 503 | | for (k, v) in m { [INFO] [stderr] 504 | | let rule_logic = match v.get("combine") { [INFO] [stderr] ... | [INFO] [stderr] 523 | | _ => () [INFO] [stderr] 524 | | } [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] 501 | match *rules { [INFO] [stderr] 502 | Value::Object(ref m) => { [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/models/matchingrules.rs:512:15 [INFO] [stderr] | [INFO] [stderr] 512 | / match v.get("matchers") { [INFO] [stderr] 513 | | Some(matchers) => match matchers { [INFO] [stderr] 514 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 515 | | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] ... | [INFO] [stderr] 519 | | None => () [INFO] [stderr] 520 | | } [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] 512 | if let Some(matchers) = v.get("matchers") { match matchers { [INFO] [stderr] 513 | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 514 | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 515 | }, [INFO] [stderr] 516 | _ => () [INFO] [stderr] 517 | } } [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/models/matchingrules.rs:513:35 [INFO] [stderr] | [INFO] [stderr] 513 | Some(matchers) => match matchers { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 514 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 515 | | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 516 | | }, [INFO] [stderr] 517 | | _ => () [INFO] [stderr] 518 | | }, [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] 513 | Some(matchers) => if let &Value::Array(ref array) = matchers for matcher in array { [INFO] [stderr] 514 | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 515 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:513:35 [INFO] [stderr] | [INFO] [stderr] 513 | Some(matchers) => match matchers { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 514 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 515 | | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 516 | | }, [INFO] [stderr] 517 | | _ => () [INFO] [stderr] 518 | | }, [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] 513 | Some(matchers) => match *matchers { [INFO] [stderr] 514 | Value::Array(ref array) => for matcher in array { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/matchingrules.rs:550:1 [INFO] [stderr] | [INFO] [stderr] 550 | / impl Hash for MatchingRules { [INFO] [stderr] 551 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 552 | | for (k, v) in self.rules.iter() { [INFO] [stderr] 553 | | k.hash(state); [INFO] [stderr] ... | [INFO] [stderr] 556 | | } [INFO] [stderr] 557 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/matchingrules.rs:362:34 [INFO] [stderr] | [INFO] [stderr] 362 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [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/models/matchingrules.rs:568:3 [INFO] [stderr] | [INFO] [stderr] 568 | / match matchers_json { [INFO] [stderr] 569 | | Some(value) => match value { [INFO] [stderr] 570 | | &Value::Object(ref m) => { [INFO] [stderr] 571 | | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] ... | [INFO] [stderr] 579 | | None => () [INFO] [stderr] 580 | | } [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] 568 | if let Some(value) = matchers_json { match value { [INFO] [stderr] 569 | &Value::Object(ref m) => { [INFO] [stderr] 570 | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 571 | matching_rules.load_from_v2_map(m) [INFO] [stderr] 572 | } else { [INFO] [stderr] 573 | matching_rules.load_from_v3_map(m) [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/models/matchingrules.rs:569:22 [INFO] [stderr] | [INFO] [stderr] 569 | Some(value) => match value { [INFO] [stderr] | ______________________^ [INFO] [stderr] 570 | | &Value::Object(ref m) => { [INFO] [stderr] 571 | | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 572 | | matching_rules.load_from_v2_map(m) [INFO] [stderr] ... | [INFO] [stderr] 577 | | _ => () [INFO] [stderr] 578 | | }, [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] 569 | Some(value) => if let &Value::Object(ref m) = value { [INFO] [stderr] 570 | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 571 | matching_rules.load_from_v2_map(m) [INFO] [stderr] 572 | } else { [INFO] [stderr] 573 | matching_rules.load_from_v3_map(m) [INFO] [stderr] 574 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:569:22 [INFO] [stderr] | [INFO] [stderr] 569 | Some(value) => match value { [INFO] [stderr] | ______________________^ [INFO] [stderr] 570 | | &Value::Object(ref m) => { [INFO] [stderr] 571 | | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 572 | | matching_rules.load_from_v2_map(m) [INFO] [stderr] ... | [INFO] [stderr] 577 | | _ => () [INFO] [stderr] 578 | | }, [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] 569 | Some(value) => match *value { [INFO] [stderr] 570 | Value::Object(ref m) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/models/matchingrules.rs:571:63 [INFO] [stderr] | [INFO] [stderr] 571 | if m.keys().next().unwrap_or(&s!("")).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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:586:4 [INFO] [stderr] | [INFO] [stderr] 586 | / match spec_version { [INFO] [stderr] 587 | | &PactSpecification::V3 => matchers.to_v3_json(), [INFO] [stderr] 588 | | _ => matchers.to_v2_json() [INFO] [stderr] 589 | | } [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] 586 | match *spec_version { [INFO] [stderr] 587 | PactSpecification::V3 => matchers.to_v3_json(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | / match self { [INFO] [stderr] 50 | | &Generator::RandomInt(min, max) => json!({ "type": "RandomInt", "min": min, "max": max }), [INFO] [stderr] 51 | | &Generator::Uuid => json!({ "type": "Uuid" }), [INFO] [stderr] 52 | | &Generator::RandomDecimal(digits) => json!({ "type": "RandomDecimal", "digits": digits }), [INFO] [stderr] ... | [INFO] [stderr] 68 | | &Generator::RandomBoolean => json!({ "type": "RandomBoolean" }) [INFO] [stderr] 69 | | } [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] 49 | match *self { [INFO] [stderr] 50 | Generator::RandomInt(min, max) => json!({ "type": "RandomInt", "min": min, "max": max }), [INFO] [stderr] 51 | Generator::Uuid => json!({ "type": "Uuid" }), [INFO] [stderr] 52 | Generator::RandomDecimal(digits) => json!({ "type": "RandomDecimal", "digits": digits }), [INFO] [stderr] 53 | Generator::RandomHexadecimal(digits) => json!({ "type": "RandomHexadecimal", "digits": digits }), [INFO] [stderr] 54 | Generator::RandomString(size) => json!({ "type": "RandomString", "size": size }), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | &Generator::Date(ref format) => match format { [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 57 | | &Some(ref format) => json!({ "type": "Date", "format": format }), [INFO] [stderr] 58 | | &None => json!({ "type": "Date" }) [INFO] [stderr] 59 | | }, [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] 56 | &Generator::Date(ref format) => match *format { [INFO] [stderr] 57 | Some(ref format) => json!({ "type": "Date", "format": format }), [INFO] [stderr] 58 | None => json!({ "type": "Date" }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:60:39 [INFO] [stderr] | [INFO] [stderr] 60 | &Generator::Time(ref format) => match format { [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 61 | | &Some(ref format) => json!({ "type": "Time", "format": format }), [INFO] [stderr] 62 | | &None => json!({ "type": "Time" }) [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] 60 | &Generator::Time(ref format) => match *format { [INFO] [stderr] 61 | Some(ref format) => json!({ "type": "Time", "format": format }), [INFO] [stderr] 62 | None => json!({ "type": "Time" }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:64:44 [INFO] [stderr] | [INFO] [stderr] 64 | &Generator::Timestamp(ref format) => match format { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 65 | | &Some(ref format) => json!({ "type": "Timestamp", "format": format }), [INFO] [stderr] 66 | | &None => json!({ "type": "Timestamp" }) [INFO] [stderr] 67 | | }, [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] 64 | &Generator::Timestamp(ref format) => match *format { [INFO] [stderr] 65 | Some(ref format) => json!({ "type": "Timestamp", "format": format }), [INFO] [stderr] 66 | None => json!({ "type": "Timestamp" }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/generators.rs:73:29 [INFO] [stderr] | [INFO] [stderr] 73 | pub fn from_map(gen_type: &String, map: &serde_json::Map) -> Option { [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] 73 | pub fn from_map(gen_type: &str, map: &serde_json::Map) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `gen_type.as_str()` to [INFO] [stderr] | [INFO] [stderr] 74 | match gen_type { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / match self { [INFO] [stderr] 107 | | &Generator::RandomInt(min, max) => Some(rand::thread_rng().gen_range(min as u16, max as u16 + 1)), [INFO] [stderr] 108 | | _ => None [INFO] [stderr] 109 | | } [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] 106 | match *self { [INFO] [stderr] 107 | Generator::RandomInt(min, max) => Some(rand::thread_rng().gen_range(min as u16, max as u16 + 1)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | / match self { [INFO] [stderr] 133 | | &Generator::RandomInt(min, max) => Some(format!("{}", rnd.gen_range(min, max + 1))), [INFO] [stderr] 134 | | &Generator::Uuid => Some(Uuid::new_v4().simple().to_string()), [INFO] [stderr] 135 | | &Generator::RandomDecimal(digits) => Some(generate_decimal(digits as usize)), [INFO] [stderr] ... | [INFO] [stderr] 154 | | &Generator::RandomBoolean => Some(format!("{}", rnd.gen::())) [INFO] [stderr] 155 | | } [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] 132 | match *self { [INFO] [stderr] 133 | Generator::RandomInt(min, max) => Some(format!("{}", rnd.gen_range(min, max + 1))), [INFO] [stderr] 134 | Generator::Uuid => Some(Uuid::new_v4().simple().to_string()), [INFO] [stderr] 135 | Generator::RandomDecimal(digits) => Some(generate_decimal(digits as usize)), [INFO] [stderr] 136 | Generator::RandomHexadecimal(digits) => Some(generate_hexadecimal(digits as usize)), [INFO] [stderr] 137 | Generator::RandomString(size) => Some(generate_ascii_string(size as usize)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | / match self { [INFO] [stderr] 162 | | &Generator::RandomInt(min, max) => { [INFO] [stderr] 163 | | let rand_int = rand::thread_rng().gen_range(min, max + 1); [INFO] [stderr] 164 | | match value { [INFO] [stderr] ... | [INFO] [stderr] 206 | | &Generator::RandomBoolean => Some(json!(rand::thread_rng().gen::())) [INFO] [stderr] 207 | | } [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] 161 | match *self { [INFO] [stderr] 162 | Generator::RandomInt(min, max) => { [INFO] [stderr] 163 | let rand_int = rand::thread_rng().gen_range(min, max + 1); [INFO] [stderr] 164 | match value { [INFO] [stderr] 165 | &Value::String(_) => Some(json!(format!("{}", rand_int))), [INFO] [stderr] 166 | &Value::Number(_) => Some(json!(rand_int)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / match value { [INFO] [stderr] 165 | | &Value::String(_) => Some(json!(format!("{}", rand_int))), [INFO] [stderr] 166 | | &Value::Number(_) => Some(json!(rand_int)), [INFO] [stderr] 167 | | _ => None [INFO] [stderr] 168 | | } [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] 164 | match *value { [INFO] [stderr] 165 | Value::String(_) => Some(json!(format!("{}", rand_int))), [INFO] [stderr] 166 | Value::Number(_) => Some(json!(rand_int)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:170:27 [INFO] [stderr] | [INFO] [stderr] 170 | &Generator::Uuid => match value { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 171 | | &Value::String(_) => Some(json!(Uuid::new_v4().simple().to_string())), [INFO] [stderr] 172 | | _ => None [INFO] [stderr] 173 | | }, [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] 170 | &Generator::Uuid => match *value { [INFO] [stderr] 171 | Value::String(_) => Some(json!(Uuid::new_v4().simple().to_string())), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:174:44 [INFO] [stderr] | [INFO] [stderr] 174 | &Generator::RandomDecimal(digits) => match value { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 175 | | &Value::String(_) => Some(json!(generate_decimal(digits as usize))), [INFO] [stderr] 176 | | &Value::Number(_) => match generate_decimal(digits as usize).parse::() { [INFO] [stderr] 177 | | Ok(val) => Some(json!(val)), [INFO] [stderr] ... | [INFO] [stderr] 180 | | _ => None [INFO] [stderr] 181 | | }, [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] 174 | &Generator::RandomDecimal(digits) => match *value { [INFO] [stderr] 175 | Value::String(_) => Some(json!(generate_decimal(digits as usize))), [INFO] [stderr] 176 | Value::Number(_) => match generate_decimal(digits as usize).parse::() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:182:48 [INFO] [stderr] | [INFO] [stderr] 182 | &Generator::RandomHexadecimal(digits) => match value { [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 183 | | &Value::String(_) => Some(json!(generate_hexadecimal(digits as usize))), [INFO] [stderr] 184 | | _ => None [INFO] [stderr] 185 | | }, [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] 182 | &Generator::RandomHexadecimal(digits) => match *value { [INFO] [stderr] 183 | Value::String(_) => Some(json!(generate_hexadecimal(digits as usize))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:186:41 [INFO] [stderr] | [INFO] [stderr] 186 | &Generator::RandomString(size) => match value { [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 187 | | &Value::String(_) => Some(json!(generate_ascii_string(size as usize))), [INFO] [stderr] 188 | | _ => None [INFO] [stderr] 189 | | }, [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] 186 | &Generator::RandomString(size) => match *value { [INFO] [stderr] 187 | Value::String(_) => Some(json!(generate_ascii_string(size as usize))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/generators.rs:269:32 [INFO] [stderr] | [INFO] [stderr] 269 | fn apply_key(&mut self, key: &String, generator: &Generator); [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/generators.rs:279:42 [INFO] [stderr] | [INFO] [stderr] 279 | fn query_object_graph(&self, path_exp: &Vec, tree: &mut Arena, root: NodeId, body: Value) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[PathToken]` [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] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/models/generators.rs:283:5 [INFO] [stderr] | [INFO] [stderr] 283 | / loop { [INFO] [stderr] 284 | | match it.next() { [INFO] [stderr] 285 | | Some(token) => { [INFO] [stderr] 286 | | p!(token); [INFO] [stderr] ... | [INFO] [stderr] 349 | | } [INFO] [stderr] 350 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(token) = it.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:289:11 [INFO] [stderr] | [INFO] [stderr] 289 | / match token { [INFO] [stderr] 290 | | &PathToken::Field(ref name) => { [INFO] [stderr] 291 | | match body_cursor.clone().as_object() { [INFO] [stderr] 292 | | Some(map) => match map.get(name) { [INFO] [stderr] ... | [INFO] [stderr] 345 | | _ => () [INFO] [stderr] 346 | | } [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] 289 | match *token { [INFO] [stderr] 290 | PathToken::Field(ref name) => { [INFO] [stderr] 291 | match body_cursor.clone().as_object() { [INFO] [stderr] 292 | Some(map) => match map.get(name) { [INFO] [stderr] 293 | Some(val) => { [INFO] [stderr] 294 | let mut node = tree.new_node(name.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/models/generators.rs:371:70 [INFO] [stderr] | [INFO] [stderr] 371 | let path: Vec = node_id.ancestors(&tree).map(|n| format!("{}", tree.index(n).data)).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `tree.index(n).data.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/generators.rs:381:13 [INFO] [stderr] | [INFO] [stderr] 381 | / match self.value.pointer_mut(&pointer_str) { [INFO] [stderr] 382 | | Some(json_value) => match generator.generate_value(&json_value.clone()) { [INFO] [stderr] 383 | | Some(new_value) => *json_value = new_value, [INFO] [stderr] 384 | | None => () [INFO] [stderr] 385 | | }, [INFO] [stderr] 386 | | None => () [INFO] [stderr] 387 | | } [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] 381 | if let Some(json_value) = self.value.pointer_mut(&pointer_str) { match generator.generate_value(&json_value.clone()) { [INFO] [stderr] 382 | Some(new_value) => *json_value = new_value, [INFO] [stderr] 383 | None => () [INFO] [stderr] 384 | } } [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/models/generators.rs:382:35 [INFO] [stderr] | [INFO] [stderr] 382 | Some(json_value) => match generator.generate_value(&json_value.clone()) { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 383 | | Some(new_value) => *json_value = new_value, [INFO] [stderr] 384 | | None => () [INFO] [stderr] 385 | | }, [INFO] [stderr] | |_______________^ help: try this: `if let Some(new_value) = generator.generate_value(&json_value.clone()) { *json_value = new_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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/generators.rs:390:11 [INFO] [stderr] | [INFO] [stderr] 390 | / match generator.generate_value(&self.value.clone()) { [INFO] [stderr] 391 | | Some(new_value) => self.value = new_value, [INFO] [stderr] 392 | | None => () [INFO] [stderr] 393 | | } [INFO] [stderr] | |___________^ help: try this: `if let Some(new_value) = generator.generate_value(&self.value.clone()) { self.value = new_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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:445:7 [INFO] [stderr] | [INFO] [stderr] 445 | / match v { [INFO] [stderr] 446 | | &Value::Object(ref map) => match GeneratorCategory::from_str(k) { [INFO] [stderr] 447 | | Ok(ref category) => match category { [INFO] [stderr] 448 | | &GeneratorCategory::PATH | &GeneratorCategory::METHOD | &GeneratorCategory::STATUS => { [INFO] [stderr] ... | [INFO] [stderr] 460 | | _ => warn!("Ignoring invalid generator JSON '{}' -> {:?}", k, v) [INFO] [stderr] 461 | | } [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] 445 | match *v { [INFO] [stderr] 446 | Value::Object(ref map) => match GeneratorCategory::from_str(k) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:447:31 [INFO] [stderr] | [INFO] [stderr] 447 | Ok(ref category) => match category { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 448 | | &GeneratorCategory::PATH | &GeneratorCategory::METHOD | &GeneratorCategory::STATUS => { [INFO] [stderr] 449 | | self.parse_generator_from_map(category, map, None); [INFO] [stderr] 450 | | }, [INFO] [stderr] ... | [INFO] [stderr] 456 | | } [INFO] [stderr] 457 | | }, [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] 447 | Ok(ref category) => match *category { [INFO] [stderr] 448 | GeneratorCategory::PATH | GeneratorCategory::METHOD | GeneratorCategory::STATUS => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:452:15 [INFO] [stderr] | [INFO] [stderr] 452 | / match sub_v { [INFO] [stderr] 453 | | &Value::Object(ref map) => self.parse_generator_from_map(category, map, Some(sub_k.clone())), [INFO] [stderr] 454 | | _ => warn!("Ignoring invalid generator JSON '{}' -> {:?}", sub_k, sub_v) [INFO] [stderr] 455 | | } [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] 452 | match *sub_v { [INFO] [stderr] 453 | Value::Object(ref map) => self.parse_generator_from_map(category, map, Some(sub_k.clone())), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:468:25 [INFO] [stderr] | [INFO] [stderr] 468 | Some(gen_type) => match gen_type { [INFO] [stderr] | _________________________^ [INFO] [stderr] 469 | | &Value::String(ref gen_type) => match Generator::from_map(gen_type, map) { [INFO] [stderr] 470 | | Some(generator) => match subcat { [INFO] [stderr] 471 | | Some(s) => self.add_generator_with_subcategory(category, s, generator), [INFO] [stderr] ... | [INFO] [stderr] 476 | | _ => warn!("Ignoring invalid generator JSON '{:?}' with invalid type attribute -> {:?}", category, map) [INFO] [stderr] 477 | | }, [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] 468 | Some(gen_type) => match *gen_type { [INFO] [stderr] 469 | Value::String(ref gen_type) => match Generator::from_map(gen_type, map) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:485:7 [INFO] [stderr] | [INFO] [stderr] 485 | / match name { [INFO] [stderr] 486 | | &GeneratorCategory::PATH | &GeneratorCategory::METHOD | &GeneratorCategory::STATUS => { [INFO] [stderr] 487 | | match category.get("") { [INFO] [stderr] 488 | | Some(generator) => { [INFO] [stderr] ... | [INFO] [stderr] 498 | | } [INFO] [stderr] 499 | | } [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] 485 | match *name { [INFO] [stderr] 486 | GeneratorCategory::PATH | GeneratorCategory::METHOD | GeneratorCategory::STATUS => { [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/models/generators.rs:487:11 [INFO] [stderr] | [INFO] [stderr] 487 | / match category.get("") { [INFO] [stderr] 488 | | Some(generator) => { [INFO] [stderr] 489 | | map.insert(cat.clone(), generator.to_json()); [INFO] [stderr] 490 | | }, [INFO] [stderr] 491 | | None => () [INFO] [stderr] 492 | | } [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] 487 | if let Some(generator) = category.get("") { [INFO] [stderr] 488 | map.insert(cat.clone(), generator.to_json()); [INFO] [stderr] 489 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/generators.rs:512:64 [INFO] [stderr] | [INFO] [stderr] 512 | let category_map = self.categories.entry(category.clone()).or_insert(HashMap::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashMap::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/generators.rs:564:1 [INFO] [stderr] | [INFO] [stderr] 564 | / impl Hash for Generators { [INFO] [stderr] 565 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 566 | | for (k, v) in self.categories.iter() { [INFO] [stderr] 567 | | k.hash(state); [INFO] [stderr] ... | [INFO] [stderr] 573 | | } [INFO] [stderr] 574 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/generators.rs:418:34 [INFO] [stderr] | [INFO] [stderr] 418 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [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/models/generators.rs:579:3 [INFO] [stderr] | [INFO] [stderr] 579 | / match value { [INFO] [stderr] 580 | | &Value::Object(ref m) => match m.get("generators") { [INFO] [stderr] 581 | | Some(gen_val) => match gen_val { [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] ... | [INFO] [stderr] 587 | | _ => () [INFO] [stderr] 588 | | } [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] 579 | if let &Value::Object(ref m) = value { match m.get("generators") { [INFO] [stderr] 580 | Some(gen_val) => match gen_val { [INFO] [stderr] 581 | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 582 | _ => () [INFO] [stderr] 583 | }, [INFO] [stderr] 584 | None => () [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:579:3 [INFO] [stderr] | [INFO] [stderr] 579 | / match value { [INFO] [stderr] 580 | | &Value::Object(ref m) => match m.get("generators") { [INFO] [stderr] 581 | | Some(gen_val) => match gen_val { [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] ... | [INFO] [stderr] 587 | | _ => () [INFO] [stderr] 588 | | } [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] 579 | match *value { [INFO] [stderr] 580 | Value::Object(ref m) => match m.get("generators") { [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/models/generators.rs:580:30 [INFO] [stderr] | [INFO] [stderr] 580 | &Value::Object(ref m) => match m.get("generators") { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 581 | | Some(gen_val) => match gen_val { [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 583 | | _ => () [INFO] [stderr] 584 | | }, [INFO] [stderr] 585 | | None => () [INFO] [stderr] 586 | | }, [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] 580 | &Value::Object(ref m) => if let Some(gen_val) = m.get("generators") { match gen_val { [INFO] [stderr] 581 | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 582 | _ => () [INFO] [stderr] 583 | } }, [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/models/generators.rs:581:24 [INFO] [stderr] | [INFO] [stderr] 581 | Some(gen_val) => match gen_val { [INFO] [stderr] | ________________________^ [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 583 | | _ => () [INFO] [stderr] 584 | | }, [INFO] [stderr] | |_______^ help: try this: `if let &Value::Object(ref m) = gen_val { generators.load_from_map(m) }` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:581:24 [INFO] [stderr] | [INFO] [stderr] 581 | Some(gen_val) => match gen_val { [INFO] [stderr] | ________________________^ [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 583 | | _ => () [INFO] [stderr] 584 | | }, [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] 581 | Some(gen_val) => match *gen_val { [INFO] [stderr] 582 | Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:594:3 [INFO] [stderr] | [INFO] [stderr] 594 | / match spec_version { [INFO] [stderr] 595 | | &PactSpecification::V3 => generators.to_json(), [INFO] [stderr] 596 | | _ => Value::Null [INFO] [stderr] 597 | | } [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] 594 | match *spec_version { [INFO] [stderr] 595 | PactSpecification::V3 => generators.to_json(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:295:39 [INFO] [stderr] | [INFO] [stderr] 295 | fn has_header(&self, header_name: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:300:48 [INFO] [stderr] | [INFO] [stderr] 300 | fn lookup_header_value(&self, header_name: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/mod.rs:347:1 [INFO] [stderr] | [INFO] [stderr] 347 | / impl Hash for Request { [INFO] [stderr] 348 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 349 | | self.method.hash(state); [INFO] [stderr] 350 | | self.path.hash(state); [INFO] [stderr] ... | [INFO] [stderr] 366 | | } [INFO] [stderr] 367 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/mod.rs:311:34 [INFO] [stderr] | [INFO] [stderr] 311 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:373:17 [INFO] [stderr] | [INFO] [stderr] 373 | / match val { [INFO] [stderr] 374 | | &Value::String(ref s) => (key.clone(), s.clone()), [INFO] [stderr] 375 | | _ => (key.clone(), val.to_string()) [INFO] [stderr] 376 | | } [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] 373 | match *val { [INFO] [stderr] 374 | Value::String(ref s) => (key.clone(), s.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:399:24 [INFO] [stderr] | [INFO] [stderr] 399 | let content_type = match headers { [INFO] [stderr] | ________________________^ [INFO] [stderr] 400 | | &Some(ref h) => match h.iter().find(|kv| kv.0.to_lowercase() == s!("content-type")) { [INFO] [stderr] 401 | | Some(kv) => { [INFO] [stderr] 402 | | match strip_whitespace::>(&kv.1, ";").first() { [INFO] [stderr] ... | [INFO] [stderr] 409 | | &None => None [INFO] [stderr] 410 | | }; [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] 399 | let content_type = match *headers { [INFO] [stderr] 400 | Some(ref h) => match h.iter().find(|kv| kv.0.to_lowercase() == s!("content-type")) { [INFO] [stderr] 401 | Some(kv) => { [INFO] [stderr] 402 | match strip_whitespace::>(&kv.1, ";").first() { [INFO] [stderr] 403 | Some(v) => Some(v.to_lowercase()), [INFO] [stderr] 404 | None => None [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:349:19 [INFO] [stderr] | [INFO] [stderr] 349 | ($e:expr) => ($e.to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `"content-type"` [INFO] [stderr] | [INFO] [stderr] ::: src/models/mod.rs:400:73 [INFO] [stderr] | [INFO] [stderr] 400 | &Some(ref h) => match h.iter().find(|kv| kv.0.to_lowercase() == s!("content-type")) { [INFO] [stderr] | ------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/mod.rs:418:51 [INFO] [stderr] | [INFO] [stderr] 418 | let content_type = content_type.unwrap_or(s!("text/plain")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| s!("text/plain"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/models/mod.rs:442:34 [INFO] [stderr] | [INFO] [stderr] 442 | pub fn build_query_string(query: HashMap>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 442 | pub fn build_query_string(query: HashMap, S>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:455:5 [INFO] [stderr] | [INFO] [stderr] 455 | / match query_json { [INFO] [stderr] 456 | | &Value::String(ref s) => parse_query_string(s), [INFO] [stderr] 457 | | _ => { [INFO] [stderr] 458 | | warn!("Only string versions of request query strings are supported with specification version {}, ignoring.", [INFO] [stderr] ... | [INFO] [stderr] 461 | | } [INFO] [stderr] 462 | | } [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] 455 | match *query_json { [INFO] [stderr] 456 | Value::String(ref s) => parse_query_string(s), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:466:5 [INFO] [stderr] | [INFO] [stderr] 466 | / match query_json { [INFO] [stderr] 467 | | &Value::String(ref s) => parse_query_string(s), [INFO] [stderr] 468 | | &Value::Object(ref map) => Some(map.iter().map(|(k, v)| { [INFO] [stderr] 469 | | (k.clone(), match v { [INFO] [stderr] ... | [INFO] [stderr] 485 | | } [INFO] [stderr] 486 | | } [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] 466 | match *query_json { [INFO] [stderr] 467 | Value::String(ref s) => parse_query_string(s), [INFO] [stderr] 468 | Value::Object(ref map) => Some(map.iter().map(|(k, v)| { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:469:25 [INFO] [stderr] | [INFO] [stderr] 469 | (k.clone(), match v { [INFO] [stderr] | _________________________^ [INFO] [stderr] 470 | | &Value::String(ref s) => vec![s.clone()], [INFO] [stderr] 471 | | &Value::Array(ref array) => array.iter().map(|item| match item { [INFO] [stderr] 472 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] ... | [INFO] [stderr] 478 | | } [INFO] [stderr] 479 | | }) [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] 469 | (k.clone(), match *v { [INFO] [stderr] 470 | Value::String(ref s) => vec![s.clone()], [INFO] [stderr] 471 | Value::Array(ref array) => array.iter().map(|item| match item { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:471:69 [INFO] [stderr] | [INFO] [stderr] 471 | &Value::Array(ref array) => array.iter().map(|item| match item { [INFO] [stderr] | _____________________________________________________________________^ [INFO] [stderr] 472 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 473 | | _ => v.to_string() [INFO] [stderr] 474 | | }).collect(), [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] 471 | &Value::Array(ref array) => array.iter().map(|item| match *item { [INFO] [stderr] 472 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:490:5 [INFO] [stderr] | [INFO] [stderr] 490 | / match spec_version { [INFO] [stderr] 491 | | &PactSpecification::V3 => Value::Object(query.iter().map(|(k, v)| { [INFO] [stderr] 492 | | (k.clone(), Value::Array(v.iter().map(|q| Value::String(q.clone())).collect()))} [INFO] [stderr] 493 | | ).collect()), [INFO] [stderr] 494 | | _ => Value::String(build_query_string(query)) [INFO] [stderr] 495 | | } [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] 490 | match *spec_version { [INFO] [stderr] 491 | PactSpecification::V3 => Value::Object(query.iter().map(|(k, v)| { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:516:24 [INFO] [stderr] | [INFO] [stderr] 516 | Some(v) => match spec_version { [INFO] [stderr] | ________________________^ [INFO] [stderr] 517 | | &PactSpecification::V3 => v3_query_from_json(v, spec_version), [INFO] [stderr] 518 | | _ => query_from_json(v, spec_version) [INFO] [stderr] 519 | | }, [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] 516 | Some(v) => match *spec_version { [INFO] [stderr] 517 | PactSpecification::V3 => v3_query_from_json(v, spec_version), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/mod.rs:744:1 [INFO] [stderr] | [INFO] [stderr] 744 | / impl Hash for Response { [INFO] [stderr] 745 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 746 | | self.status.hash(state); [INFO] [stderr] 747 | | if self.headers.is_some() { [INFO] [stderr] ... | [INFO] [stderr] 756 | | } [INFO] [stderr] 757 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/mod.rs:620:10 [INFO] [stderr] | [INFO] [stderr] 620 | #[derive(PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/provider_states.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn default(name: &String) -> ProviderState { [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] 21 | pub fn default(name: &str) -> ProviderState { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 23 | name: name.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/models/provider_states.rs:63:58 [INFO] [stderr] | [INFO] [stderr] 63 | None => match pact_json.get("providerState").or(pact_json.get("provider_state")) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| pact_json.get("provider_state"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/provider_states.rs:93:1 [INFO] [stderr] | [INFO] [stderr] 93 | / impl Hash for ProviderState { [INFO] [stderr] 94 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 95 | | self.name.hash(state); [INFO] [stderr] 96 | | for (k, v) in self.params.clone() { [INFO] [stderr] ... | [INFO] [stderr] 111 | | } [INFO] [stderr] 112 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/provider_states.rs:10:48 [INFO] [stderr] | [INFO] [stderr] 10 | #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:820:13 [INFO] [stderr] | [INFO] [stderr] 820 | / match spec_version { [INFO] [stderr] 821 | | &PactSpecification::V3 => map.insert(s!("providerStates"), [INFO] [stderr] 822 | | Value::Array(self.provider_states.iter().map(|p| p.to_json()).collect())), [INFO] [stderr] 823 | | _ => map.insert(s!("providerState"), Value::String( [INFO] [stderr] 824 | | self.provider_states.first().unwrap().name.clone())) [INFO] [stderr] 825 | | }; [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] 820 | match *spec_version { [INFO] [stderr] 821 | PactSpecification::V3 => map.insert(s!("providerStates"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/message.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match spec_version { [INFO] [stderr] 39 | | &PactSpecification::V3 => { [INFO] [stderr] 40 | | let description = match json.get("description") { [INFO] [stderr] 41 | | Some(v) => match *v { [INFO] [stderr] ... | [INFO] [stderr] 76 | | _ => Err(s!("Messages require Pact Specification version 3 or later")) [INFO] [stderr] 77 | | } [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 *spec_version { [INFO] [stderr] 39 | PactSpecification::V3 => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/message.rs:61:37 [INFO] [stderr] | [INFO] [stderr] 61 | (k.clone(), match v { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 62 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 63 | | _ => v.to_string() [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 | (k.clone(), match *v { [INFO] [stderr] 62 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:921:33 [INFO] [stderr] | [INFO] [stderr] 921 | fn determine_spec_version(file: &String, metadata: &BTreeMap>) -> PactSpecification { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:970:28 [INFO] [stderr] | [INFO] [stderr] 970 | pub fn from_json(file: &String, pact_json: &Value) -> Pact { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:1085:26 [INFO] [stderr] | [INFO] [stderr] 1085 | pub fn from_url(url: &String) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/models/mod.rs:1111:36 [INFO] [stderr] | [INFO] [stderr] 1111 | file.write_all(format!("{}", serde_json::to_string_pretty(&merged_pact.to_json(pact_spec)).unwrap()).as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `serde_json::to_string_pretty(&merged_pact.to_json(pact_spec)).unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/models/mod.rs:1118:28 [INFO] [stderr] | [INFO] [stderr] 1118 | file.write_all(format!("{}", serde_json::to_string_pretty(&self.to_json(pact_spec)).unwrap()).as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `serde_json::to_string_pretty(&self.to_json(pact_spec)).unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:1206:34 [INFO] [stderr] | [INFO] [stderr] 1206 | pub fn parse_query_string(query: &String) -> Option>> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/models/mod.rs:1208:26 [INFO] [stderr] | [INFO] [stderr] 1208 | Some(query.split("&").map(|kv| { [INFO] [stderr] | ^^^ help: try using a char instead: `'&'` [INFO] [stderr] | [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: single-character string constant used as pattern [INFO] [stderr] --> src/models/mod.rs:1211:35 [INFO] [stderr] | [INFO] [stderr] 1211 | } else if kv.contains("=") { [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [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: single-character string constant used as pattern [INFO] [stderr] --> src/models/mod.rs:1212:30 [INFO] [stderr] | [INFO] [stderr] 1212 | kv.splitn(2, "=").collect::>() [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/mod.rs:1224:33 [INFO] [stderr] | [INFO] [stderr] 1224 | map.entry(name).or_insert(vec![]).push(value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/path_exp.rs:13:29 [INFO] [stderr] | [INFO] [stderr] 13 | chars.peek().map(|tup| (tup.0.clone(), tup.1.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `tup.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/path_exp.rs:13:44 [INFO] [stderr] | [INFO] [stderr] 13 | chars.peek().map(|tup| (tup.0.clone(), tup.1.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `tup.1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:17:88 [INFO] [stderr] | [INFO] [stderr] 17 | fn identifier(ch: char, chars: &mut Peekable, tokens: &mut Vec, path: &String)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:40:83 [INFO] [stderr] | [INFO] [stderr] 40 | fn path_identifier(chars: &mut Peekable, tokens: &mut Vec, path: &String, index: usize)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:61:79 [INFO] [stderr] | [INFO] [stderr] 61 | fn string_path(chars: &mut Peekable, tokens: &mut Vec, path: &String, index: usize)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:91:78 [INFO] [stderr] | [INFO] [stderr] 91 | fn index_path(chars: &mut Peekable, tokens: &mut Vec, path: &String)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:120:80 [INFO] [stderr] | [INFO] [stderr] 120 | fn bracket_path(chars: &mut Peekable, tokens: &mut Vec, path: &String, index: usize)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:159:76 [INFO] [stderr] | [INFO] [stderr] 159 | fn path_exp(chars: &mut Peekable, tokens: &mut Vec, path: &String)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/matchers.rs:194:17 [INFO] [stderr] | [INFO] [stderr] 194 | if self == actual { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self - actual).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/matchers.rs:194:17 [INFO] [stderr] | [INFO] [stderr] 194 | if self == actual { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/matchers.rs:250:46 [INFO] [stderr] | [INFO] [stderr] 250 | fn select_best_matcher(category: &str, path: &Vec, matchers: &MatchingRules) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/matchers.rs:261:49 [INFO] [stderr] | [INFO] [stderr] 261 | pub fn match_values(category: &str, path: &Vec, matchers: MatchingRules, expected: &E, actual: &A) -> Result<(), Vec> [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / match json { [INFO] [stderr] 16 | | &Value::Object(_) => s!("Map"), [INFO] [stderr] 17 | | &Value::Array(_) => s!("List"), [INFO] [stderr] 18 | | _ => s!("") [INFO] [stderr] 19 | | } [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] 15 | match *json { [INFO] [stderr] 16 | Value::Object(_) => s!("Map"), [INFO] [stderr] 17 | Value::Array(_) => s!("List"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match json { [INFO] [stderr] 24 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 25 | | _ => format!("{}", json) [INFO] [stderr] 26 | | } [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] 23 | match *json { [INFO] [stderr] 24 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:35:34 [INFO] [stderr] | [INFO] [stderr] 35 | let actual_str = match actual { [INFO] [stderr] | __________________________________^ [INFO] [stderr] 36 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 37 | | _ => actual.to_string() [INFO] [stderr] 38 | | }; [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] 35 | let actual_str = match *actual { [INFO] [stderr] 36 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:49:30 [INFO] [stderr] | [INFO] [stderr] 49 | let actual_str = match actual { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 50 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 51 | | _ => actual.to_string() [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] 49 | let actual_str = match *actual { [INFO] [stderr] 50 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:124:33 [INFO] [stderr] | [INFO] [stderr] 124 | MatchingRule::Null => match actual { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 125 | | &Value::Null => Ok(()), [INFO] [stderr] 126 | | _ => Err(format!("Expected '{}' to be a null value", value_of(actual))) [INFO] [stderr] 127 | | }, [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] 124 | MatchingRule::Null => match *actual { [INFO] [stderr] 125 | Value::Null => Ok(()), [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/json.rs:205:29 [INFO] [stderr] | [INFO] [stderr] 205 | pub fn match_json(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:205:47 [INFO] [stderr] | [INFO] [stderr] 205 | pub fn match_json(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/json.rs:211:9 [INFO] [stderr] | [INFO] [stderr] 211 | / match expected_json { [INFO] [stderr] 212 | | Err(e) => { [INFO] [stderr] 213 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 214 | | actual: Some(actual.clone().into()), [INFO] [stderr] ... | [INFO] [stderr] 217 | | _ => () [INFO] [stderr] 218 | | } [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] 211 | if let Err(e) = expected_json { [INFO] [stderr] 212 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 213 | actual: Some(actual.clone().into()), [INFO] [stderr] 214 | mismatch: format!("Failed to parse the expected body: '{}'", e)}); [INFO] [stderr] 215 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:213:88 [INFO] [stderr] | [INFO] [stderr] 213 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:214:34 [INFO] [stderr] | [INFO] [stderr] 214 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/json.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / match actual_json { [INFO] [stderr] 220 | | Err(e) => { [INFO] [stderr] 221 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 222 | | actual: Some(actual.clone().into()), [INFO] [stderr] ... | [INFO] [stderr] 225 | | _ => () [INFO] [stderr] 226 | | } [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] 219 | if let Err(e) = actual_json { [INFO] [stderr] 220 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 221 | actual: Some(actual.clone().into()), [INFO] [stderr] 222 | mismatch: format!("Failed to parse the actual body: '{}'", e)}); [INFO] [stderr] 223 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:221:88 [INFO] [stderr] | [INFO] [stderr] 221 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:222:34 [INFO] [stderr] | [INFO] [stderr] 222 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:235:20 [INFO] [stderr] | [INFO] [stderr] 235 | Some(p) => match json { [INFO] [stderr] | ____________________^ [INFO] [stderr] 236 | | &Value::Object(_) => json.get(p).map(|json| json.clone()), [INFO] [stderr] 237 | | &Value::Array(ref array) => match usize::from_str(p) { [INFO] [stderr] 238 | | Ok(index) => array.get(index).map(|json| json.clone()), [INFO] [stderr] ... | [INFO] [stderr] 241 | | _ => None [INFO] [stderr] 242 | | }, [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] 235 | Some(p) => match *json { [INFO] [stderr] 236 | Value::Object(_) => json.get(p).map(|json| json.clone()), [INFO] [stderr] 237 | Value::Array(ref array) => match usize::from_str(p) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/json.rs:236:34 [INFO] [stderr] | [INFO] [stderr] 236 | &Value::Object(_) => json.get(p).map(|json| json.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `json.get(p).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/json.rs:238:30 [INFO] [stderr] | [INFO] [stderr] 238 | Ok(index) => array.get(index).map(|json| json.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `array.get(index).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/json.rs:248:31 [INFO] [stderr] | [INFO] [stderr] 248 | pub fn display_diff(expected: &String, actual: &String, path: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/json.rs:248:48 [INFO] [stderr] | [INFO] [stderr] 248 | pub fn display_diff(expected: &String, actual: &String, path: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/json.rs:248:63 [INFO] [stderr] | [INFO] [stderr] 248 | pub fn display_diff(expected: &String, actual: &String, path: &String) -> String { [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] 248 | pub fn display_diff(expected: &String, actual: &String, path: &str) -> String { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `path.clone()` to [INFO] [stderr] | [INFO] [stderr] 252 | let expected_fragment = match walk_json(&expected_body, &mut path.to_string()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `path.clone()` to [INFO] [stderr] | [INFO] [stderr] 256 | let actual_fragment = match walk_json(&actual_body, &mut path.to_string()) { [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/json.rs:272:18 [INFO] [stderr] | [INFO] [stderr] 272 | fn compare(path: &Vec, expected: &Value, actual: &Value, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:296:23 [INFO] [stderr] | [INFO] [stderr] 296 | fn compare_maps(path: &Vec, expected: &serde_json::Map, actual: &serde_json::Map, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:304:9 [INFO] [stderr] | [INFO] [stderr] 304 | / match config { [INFO] [stderr] 305 | | &DiffConfig::AllowUnexpectedKeys if expected.len() > actual.len() => { [INFO] [stderr] 306 | | mismatches.push(Mismatch::BodyMismatch { path: path.join("."), [INFO] [stderr] 307 | | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] ... | [INFO] [stderr] 319 | | _ => () [INFO] [stderr] 320 | | } [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] 304 | match *config { [INFO] [stderr] 305 | DiffConfig::AllowUnexpectedKeys if expected.len() > actual.len() => { [INFO] [stderr] 306 | mismatches.push(Mismatch::BodyMismatch { path: path.join("."), [INFO] [stderr] 307 | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] 308 | actual: Some(value_of(&json!(&actual)).into()), [INFO] [stderr] 309 | mismatch: format!("Expected a Map with at least {} elements but received {} elements", [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/json.rs:351:24 [INFO] [stderr] | [INFO] [stderr] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:351:48 [INFO] [stderr] | [INFO] [stderr] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [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] 351 | fn compare_lists(path: &Vec, expected: &[Value], actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `expected.clone()` to [INFO] [stderr] | [INFO] [stderr] 356 | let expected_json = Value::Array(expected.to_owned()); [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/json.rs:351:69 [INFO] [stderr] | [INFO] [stderr] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [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] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &[Value], config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `actual.clone()` to [INFO] [stderr] | [INFO] [stderr] 357 | let actual_json = Value::Array(actual.to_owned()); [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/json.rs:358:9 [INFO] [stderr] | [INFO] [stderr] 358 | / match match_values("body", path, matchers.clone(), &expected_json, &actual_json) { [INFO] [stderr] 359 | | Err(messages) => { [INFO] [stderr] 360 | | for message in messages { [INFO] [stderr] 361 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 369 | | Ok(_) => () [INFO] [stderr] 370 | | } [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] 358 | if let Err(messages) = match_values("body", path, matchers.clone(), &expected_json, &actual_json) { [INFO] [stderr] 359 | for message in messages { [INFO] [stderr] 360 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 361 | path: path.join("."), [INFO] [stderr] 362 | expected: Some(expected_json.to_string().into()), [INFO] [stderr] 363 | actual: Some(actual_json.to_string().into()), [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/json.rs:394:31 [INFO] [stderr] | [INFO] [stderr] 394 | fn compare_list_content(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:394:55 [INFO] [stderr] | [INFO] [stderr] 394 | fn compare_list_content(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Value]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:394:76 [INFO] [stderr] | [INFO] [stderr] 394 | fn compare_list_content(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Value]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:412:25 [INFO] [stderr] | [INFO] [stderr] 412 | fn compare_values(path: &Vec, expected: &Value, actual: &Value, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/json.rs:420:5 [INFO] [stderr] | [INFO] [stderr] 420 | / match matcher_result { [INFO] [stderr] 421 | | Err(messages) => { [INFO] [stderr] 422 | | for message in messages { [INFO] [stderr] 423 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 431 | | Ok(_) => () [INFO] [stderr] 432 | | } [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] 420 | if let Err(messages) = matcher_result { [INFO] [stderr] 421 | for message in messages { [INFO] [stderr] 422 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 423 | path: path.join("."), [INFO] [stderr] 424 | expected: Some(format!("{}", expected).into()), [INFO] [stderr] 425 | actual: Some(format!("{}", actual).into()), [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/xml.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn match_xml(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:11:46 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn match_xml(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xml.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / match expected_result { [INFO] [stderr] 18 | | Err(e) => { [INFO] [stderr] 19 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 20 | | actual: Some(actual.clone().into()), [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] 17 | if let Err(e) = expected_result { [INFO] [stderr] 18 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 19 | actual: Some(actual.clone().into()), [INFO] [stderr] 20 | mismatch: format!("Failed to parse the expected body: '{:?}'", e)}); [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:19:88 [INFO] [stderr] | [INFO] [stderr] 19 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:20:34 [INFO] [stderr] | [INFO] [stderr] 20 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/xml.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match actual_result { [INFO] [stderr] 26 | | Err(e) => { [INFO] [stderr] 27 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 28 | | actual: Some(actual.clone().into()), [INFO] [stderr] ... | [INFO] [stderr] 31 | | _ => () [INFO] [stderr] 32 | | } [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] 25 | if let Err(e) = actual_result { [INFO] [stderr] 26 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 27 | actual: Some(actual.clone().into()), [INFO] [stderr] 28 | mismatch: format!("Failed to parse the actual body: '{:?}'", e)}); [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:27:88 [INFO] [stderr] | [INFO] [stderr] 27 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:28:34 [INFO] [stderr] | [INFO] [stderr] 28 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/xml.rs:98:25 [INFO] [stderr] | [INFO] [stderr] 98 | fn path_to_string(path: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: single-character string constant used as pattern [INFO] [stderr] --> src/xml.rs:100:36 [INFO] [stderr] | [INFO] [stderr] 100 | if i > 0 && !p.starts_with("[") { [INFO] [stderr] | ^^^ help: try using a char instead: `'['` [INFO] [stderr] | [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:108:26 [INFO] [stderr] | [INFO] [stderr] 108 | fn compare_element(path: &Vec, expected: &Element, actual: &Element, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:138:29 [INFO] [stderr] | [INFO] [stderr] 138 | fn compare_attributes(path: &Vec, expected: &Element, actual: &Element, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:187:32 [INFO] [stderr] | [INFO] [stderr] 187 | fn desc_children<'a>(children: &Vec>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ChildOfElement<'a>]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:191:27 [INFO] [stderr] | [INFO] [stderr] 191 | fn compare_children(path: &Vec, expected: &Element, actual: &Element, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/xml.rs:197:36 [INFO] [stderr] | [INFO] [stderr] 197 | let expected_example = expected_children[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `expected_children[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [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/xml.rs:233:23 [INFO] [stderr] | [INFO] [stderr] 233 | fn compare_text(path: &Vec, expected: &Element, actual: &Element, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xml.rs:252:5 [INFO] [stderr] | [INFO] [stderr] 252 | / match matcher_result { [INFO] [stderr] 253 | | Err(messages) => { [INFO] [stderr] 254 | | for message in messages { [INFO] [stderr] 255 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 263 | | Ok(_) => () [INFO] [stderr] 264 | | } [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] 252 | if let Err(messages) = matcher_result { [INFO] [stderr] 253 | for message in messages { [INFO] [stderr] 254 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 255 | path: path_to_string(path) + ".#text", [INFO] [stderr] 256 | expected: Some(expected_text.clone().into()), [INFO] [stderr] 257 | actual: Some(actual_text.clone().into()), [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/xml.rs:267:24 [INFO] [stderr] | [INFO] [stderr] 267 | fn compare_value(path: &Vec, expected: &String, actual: &String, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/xml.rs:267:48 [INFO] [stderr] | [INFO] [stderr] 267 | fn compare_value(path: &Vec, expected: &String, actual: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/xml.rs:267:65 [INFO] [stderr] | [INFO] [stderr] 267 | fn compare_value(path: &Vec, expected: &String, actual: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xml.rs:275:5 [INFO] [stderr] | [INFO] [stderr] 275 | / match matcher_result { [INFO] [stderr] 276 | | Err(messages) => { [INFO] [stderr] 277 | | for message in messages { [INFO] [stderr] 278 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 286 | | Ok(_) => () [INFO] [stderr] 287 | | } [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] 275 | if let Err(messages) = matcher_result { [INFO] [stderr] 276 | for message in messages { [INFO] [stderr] 277 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 278 | path: path_to_string(path), [INFO] [stderr] 279 | expected: Some(expected.clone().into()), [INFO] [stderr] 280 | actual: Some(actual.clone().into()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:369:56 [INFO] [stderr] | [INFO] [stderr] 369 | fn strip_whitespace<'a, T: FromIterator<&'a str>>(val: &'a String, split_by: &'a str) -> T { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/lib.rs:370:33 [INFO] [stderr] | [INFO] [stderr] 370 | val.split(split_by).map(|v| v.trim().clone() ).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 370 | val.split(split_by).map(|v| &(*v.trim()).clone() ).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 370 | val.split(split_by).map(|v| &str::clone(v.trim()) ).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:374:31 [INFO] [stderr] | [INFO] [stderr] 374 | static ref BODY_MATCHERS: [(Regex, fn(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | _______________________________^ [INFO] [stderr] 375 | | mismatches: &mut Vec, matchers: &MatchingRules)); 3] = [ [INFO] [stderr] | |__________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:374:31 [INFO] [stderr] | [INFO] [stderr] 374 | static ref BODY_MATCHERS: [(Regex, fn(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | _______________________________^ [INFO] [stderr] 375 | | mismatches: &mut Vec, matchers: &MatchingRules)); 3] = [ [INFO] [stderr] | |__________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:455:9 [INFO] [stderr] | [INFO] [stderr] 455 | / match self { [INFO] [stderr] 456 | | &Mismatch::MethodMismatch { expected: ref e, actual: ref a } => { [INFO] [stderr] 457 | | json!({ [INFO] [stderr] 458 | | s!("type") : json!("MethodMismatch"), [INFO] [stderr] ... | [INFO] [stderr] 517 | | } [INFO] [stderr] 518 | | } [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] 455 | match *self { [INFO] [stderr] 456 | Mismatch::MethodMismatch { expected: ref e, actual: ref a } => { [INFO] [stderr] 457 | json!({ [INFO] [stderr] 458 | s!("type") : json!("MethodMismatch"), [INFO] [stderr] 459 | s!("expected") : json!(e), [INFO] [stderr] 460 | s!("actual") : json!(a) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:507:38 [INFO] [stderr] | [INFO] [stderr] 507 | s!("expected") : match e { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 508 | | &Some(ref v) => json!(v), [INFO] [stderr] 509 | | &None => serde_json::Value::Null [INFO] [stderr] 510 | | }, [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] 507 | s!("expected") : match *e { [INFO] [stderr] 508 | Some(ref v) => json!(v), [INFO] [stderr] 509 | None => serde_json::Value::Null [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:511:36 [INFO] [stderr] | [INFO] [stderr] 511 | s!("actual") : match a { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 512 | | &Some(ref v) => json!(v), [INFO] [stderr] 513 | | &None => serde_json::Value::Null [INFO] [stderr] 514 | | }, [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] 511 | s!("actual") : match *a { [INFO] [stderr] 512 | Some(ref v) => json!(v), [INFO] [stderr] 513 | None => serde_json::Value::Null [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/lib.rs:622:29 [INFO] [stderr] | [INFO] [stderr] 622 | pub fn match_text(expected: &Vec, actual: &Vec, mismatches: &mut Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:622:47 [INFO] [stderr] | [INFO] [stderr] 622 | pub fn match_text(expected: &Vec, actual: &Vec, mismatches: &mut Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:646:5 [INFO] [stderr] | [INFO] [stderr] 646 | / match matcher_result { [INFO] [stderr] 647 | | Err(messages) => { [INFO] [stderr] 648 | | for message in messages { [INFO] [stderr] 649 | | mismatches.push(Mismatch::PathMismatch { [INFO] [stderr] ... | [INFO] [stderr] 655 | | Ok(_) => () [INFO] [stderr] 656 | | } [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] 646 | if let Err(messages) = matcher_result { [INFO] [stderr] 647 | for message in messages { [INFO] [stderr] 648 | mismatches.push(Mismatch::PathMismatch { [INFO] [stderr] 649 | expected: expected.clone(), [INFO] [stderr] 650 | actual: actual.clone(), mismatch: message.clone() [INFO] [stderr] 651 | }) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:659:39 [INFO] [stderr] | [INFO] [stderr] 659 | fn compare_query_parameter_value(key: &String, expected: &String, actual: &String, index: usize, [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] 659 | fn compare_query_parameter_value(key: &str, expected: &String, actual: &String, index: usize, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 661 | let path = vec![s!("$"), key.to_string(), format!("{}", index)]; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:659:58 [INFO] [stderr] | [INFO] [stderr] 659 | fn compare_query_parameter_value(key: &String, expected: &String, actual: &String, index: usize, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:659:75 [INFO] [stderr] | [INFO] [stderr] 659 | fn compare_query_parameter_value(key: &String, expected: &String, actual: &String, index: usize, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:667:5 [INFO] [stderr] | [INFO] [stderr] 667 | / match matcher_result { [INFO] [stderr] 668 | | Err(messages) => { [INFO] [stderr] 669 | | for message in messages { [INFO] [stderr] 670 | | mismatches.push(Mismatch::QueryMismatch { [INFO] [stderr] ... | [INFO] [stderr] 678 | | Ok(_) => () [INFO] [stderr] 679 | | } [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] 667 | if let Err(messages) = matcher_result { [INFO] [stderr] 668 | for message in messages { [INFO] [stderr] 669 | mismatches.push(Mismatch::QueryMismatch { [INFO] [stderr] 670 | parameter: key.clone(), [INFO] [stderr] 671 | expected: expected.clone(), [INFO] [stderr] 672 | actual: actual.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:682:40 [INFO] [stderr] | [INFO] [stderr] 682 | fn compare_query_parameter_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:682:59 [INFO] [stderr] | [INFO] [stderr] 682 | fn compare_query_parameter_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:682:81 [INFO] [stderr] | [INFO] [stderr] 682 | fn compare_query_parameter_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:696:28 [INFO] [stderr] | [INFO] [stderr] 696 | fn match_query_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:696:47 [INFO] [stderr] | [INFO] [stderr] 696 | fn match_query_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:696:69 [INFO] [stderr] | [INFO] [stderr] 696 | fn match_query_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:739:37 [INFO] [stderr] | [INFO] [stderr] 739 | pub fn match_query(expected: Option>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 739 | pub fn match_query(expected: Option, S>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:740:20 [INFO] [stderr] | [INFO] [stderr] 740 | actual: Option>>, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 739 | pub fn match_query(expected: Option>>, [INFO] [stderr] 740 | actual: Option, S>>, mismatches: &mut Vec, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:761:39 [INFO] [stderr] | [INFO] [stderr] 761 | parameters.iter().map(|v| v.split("=").map(|p| p.trim()).collect::>()) [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:768:37 [INFO] [stderr] | [INFO] [stderr] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:768:54 [INFO] [stderr] | [INFO] [stderr] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:768:103 [INFO] [stderr] | [INFO] [stderr] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &String) { [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] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &str) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `header.clone()` to [INFO] [stderr] | [INFO] [stderr] 773 | let header_mismatch = Mismatch::HeaderMismatch { key: header.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:774:19 [INFO] [stderr] | [INFO] [stderr] 774 | expected: format!("{}", expected), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `expected.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:775:17 [INFO] [stderr] | [INFO] [stderr] 775 | actual: format!("{}", actual), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `actual.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:784:26 [INFO] [stderr] | [INFO] [stderr] 784 | if v != *actual_parameter_map.get(&k).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&actual_parameter_map[&k]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:796:28 [INFO] [stderr] | [INFO] [stderr] 796 | fn match_header_value(key: &String, expected: &String, actual: &String, mismatches: &mut Vec, [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] 796 | fn match_header_value(key: &str, expected: &String, actual: &String, mismatches: &mut Vec, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 798 | let path = vec![s!("$"), key.to_string()]; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:796:47 [INFO] [stderr] | [INFO] [stderr] 796 | fn match_header_value(key: &String, expected: &String, actual: &String, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:796:64 [INFO] [stderr] | [INFO] [stderr] 796 | fn match_header_value(key: &String, expected: &String, actual: &String, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:810:5 [INFO] [stderr] | [INFO] [stderr] 810 | / match matcher_result { [INFO] [stderr] 811 | | Err(messages) => { [INFO] [stderr] 812 | | for message in messages { [INFO] [stderr] 813 | | mismatches.push(Mismatch::HeaderMismatch { [INFO] [stderr] ... | [INFO] [stderr] 821 | | Ok(_) => () [INFO] [stderr] 822 | | } [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] 810 | if let Err(messages) = matcher_result { [INFO] [stderr] 811 | for message in messages { [INFO] [stderr] 812 | mismatches.push(Mismatch::HeaderMismatch { [INFO] [stderr] 813 | key: key.clone(), [INFO] [stderr] 814 | expected: expected.clone(), [INFO] [stderr] 815 | actual: actual.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:825:49 [INFO] [stderr] | [INFO] [stderr] 825 | fn find_entry(map: &HashMap, key: &String) -> Option<(String, T)> where T: Clone { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:846:39 [INFO] [stderr] | [INFO] [stderr] 846 | pub fn match_headers(expected: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 846 | pub fn match_headers(expected: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:847:20 [INFO] [stderr] | [INFO] [stderr] 847 | actual: Option>, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 846 | pub fn match_headers(expected: Option>, [INFO] [stderr] 847 | actual: Option>, mismatches: &mut Vec, [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/lib.rs:862:47 [INFO] [stderr] | [INFO] [stderr] 862 | fn compare_bodies(mimetype: String, expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:862:65 [INFO] [stderr] | [INFO] [stderr] 862 | fn compare_bodies(mimetype: String, expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:971:9 [INFO] [stderr] | [INFO] [stderr] 971 | / match generator.generate_value(&request.path) { [INFO] [stderr] 972 | | Some(v) => request.path = v, [INFO] [stderr] 973 | | None => () [INFO] [stderr] 974 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(v) = generator.generate_value(&request.path) { request.path = v }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | / match request.headers { [INFO] [stderr] 978 | | Some(ref mut headers) => if headers.contains_key(key) { [INFO] [stderr] 979 | | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 980 | | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] ... | [INFO] [stderr] 984 | | None => () [INFO] [stderr] 985 | | } [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] 977 | if let Some(ref mut headers) = request.headers { if headers.contains_key(key) { [INFO] [stderr] 978 | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 979 | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] 980 | None => None [INFO] [stderr] 981 | }; [INFO] [stderr] 982 | } } [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/lib.rs:988:7 [INFO] [stderr] | [INFO] [stderr] 988 | / match request.query { [INFO] [stderr] 989 | | Some(ref mut parameters) => match parameters.get_mut(key) { [INFO] [stderr] 990 | | Some(parameter) => { [INFO] [stderr] 991 | | let mut generated = parameter.clone(); [INFO] [stderr] ... | [INFO] [stderr] 1002 | | None => () [INFO] [stderr] 1003 | | } [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] 988 | if let Some(ref mut parameters) = request.query { match parameters.get_mut(key) { [INFO] [stderr] 989 | Some(parameter) => { [INFO] [stderr] 990 | let mut generated = parameter.clone(); [INFO] [stderr] 991 | for (index, val) in parameter.iter().enumerate() { [INFO] [stderr] 992 | match generator.generate_value(val) { [INFO] [stderr] 993 | Some(v) => generated[index] = v, [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/lib.rs:989:37 [INFO] [stderr] | [INFO] [stderr] 989 | Some(ref mut parameters) => match parameters.get_mut(key) { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 990 | | Some(parameter) => { [INFO] [stderr] 991 | | let mut generated = parameter.clone(); [INFO] [stderr] 992 | | for (index, val) in parameter.iter().enumerate() { [INFO] [stderr] ... | [INFO] [stderr] 1000 | | None => () [INFO] [stderr] 1001 | | }, [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] 989 | Some(ref mut parameters) => if let Some(parameter) = parameters.get_mut(key) { [INFO] [stderr] 990 | let mut generated = parameter.clone(); [INFO] [stderr] 991 | for (index, val) in parameter.iter().enumerate() { [INFO] [stderr] 992 | match generator.generate_value(val) { [INFO] [stderr] 993 | Some(v) => generated[index] = v, [INFO] [stderr] 994 | None => () [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/lib.rs:993:15 [INFO] [stderr] | [INFO] [stderr] 993 | / match generator.generate_value(val) { [INFO] [stderr] 994 | | Some(v) => generated[index] = v, [INFO] [stderr] 995 | | None => () [INFO] [stderr] 996 | | }; [INFO] [stderr] | |_______________^ help: try this: `if let Some(v) = generator.generate_value(val) { generated[index] = v }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1014:5 [INFO] [stderr] | [INFO] [stderr] 1014 | / match generator.generate_value(&response.status) { [INFO] [stderr] 1015 | | Some(v) => response.status = v, [INFO] [stderr] 1016 | | None => () [INFO] [stderr] 1017 | | } [INFO] [stderr] | |_____^ help: try this: `if let Some(v) = generator.generate_value(&response.status) { response.status = v }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1020:5 [INFO] [stderr] | [INFO] [stderr] 1020 | / match response.headers { [INFO] [stderr] 1021 | | Some(ref mut headers) => if headers.contains_key(key) { [INFO] [stderr] 1022 | | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 1023 | | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] ... | [INFO] [stderr] 1027 | | None => () [INFO] [stderr] 1028 | | } [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] 1020 | if let Some(ref mut headers) = response.headers { if headers.contains_key(key) { [INFO] [stderr] 1021 | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 1022 | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] 1023 | None => None [INFO] [stderr] 1024 | }; [INFO] [stderr] 1025 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: aborting due to 8 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pact_matching`. [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/models/json_utils.rs:15:20 [INFO] [stderr] | [INFO] [stderr] 15 | Some(val) => match val { [INFO] [stderr] | ____________________^ [INFO] [stderr] 16 | | &Value::Number(ref num) => match num.as_i64() { [INFO] [stderr] 17 | | Some(num) => num as i32, [INFO] [stderr] 18 | | None => default [INFO] [stderr] 19 | | }, [INFO] [stderr] 20 | | _ => default [INFO] [stderr] 21 | | }, [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] 15 | Some(val) => match *val { [INFO] [stderr] 16 | Value::Number(ref num) => match num.as_i64() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/json_utils.rs:30:20 [INFO] [stderr] | [INFO] [stderr] 30 | Some(val) => match val { [INFO] [stderr] | ____________________^ [INFO] [stderr] 31 | | &Value::Number(ref num) => match num.as_u64() { [INFO] [stderr] 32 | | Some(num) => num as u16, [INFO] [stderr] 33 | | None => default [INFO] [stderr] 34 | | }, [INFO] [stderr] 35 | | _ => default [INFO] [stderr] 36 | | }, [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] 30 | Some(val) => match *val { [INFO] [stderr] 31 | Value::Number(ref num) => match num.as_u64() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/json_utils.rs:44:3 [INFO] [stderr] | [INFO] [stderr] 44 | / match value { [INFO] [stderr] 45 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 46 | | _ => value.to_string() [INFO] [stderr] 47 | | } [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] 44 | match *value { [INFO] [stderr] 45 | Value::String(ref s) => s.clone(), [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/models/xml_utils.rs:7:27 [INFO] [stderr] | [INFO] [stderr] 7 | pub fn parse_bytes(bytes: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:14:33 [INFO] [stderr] | [INFO] [stderr] 14 | fn matches_token(path_fragment: &String, path_token: &PathToken) -> usize { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:31:45 [INFO] [stderr] | [INFO] [stderr] 31 | fn calc_path_weight(path_exp: String, path: &Vec) -> usize { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:98:5 [INFO] [stderr] | [INFO] [stderr] 98 | / match value { [INFO] [stderr] 99 | | &Value::Object(ref m) => match m.get("match") { [INFO] [stderr] 100 | | Some(value) => { [INFO] [stderr] 101 | | let val = json_to_string(value); [INFO] [stderr] ... | [INFO] [stderr] 162 | | _ => None [INFO] [stderr] 163 | | } [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] 98 | match *value { [INFO] [stderr] 99 | Value::Object(ref m) => match m.get("match") { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:168:5 [INFO] [stderr] | [INFO] [stderr] 168 | / match self { [INFO] [stderr] 169 | | &MatchingRule::Equality => json!({ "match": Value::String(s!("equality")) }), [INFO] [stderr] 170 | | &MatchingRule::Regex(ref r) => json!({ "match": Value::String(s!("regex")), [INFO] [stderr] 171 | | "regex": Value::String(r.clone()) }), [INFO] [stderr] ... | [INFO] [stderr] 190 | | &MatchingRule::Null => json!({ "match": Value::String(s!("null")) }) [INFO] [stderr] 191 | | } [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] 168 | match *self { [INFO] [stderr] 169 | MatchingRule::Equality => json!({ "match": Value::String(s!("equality")) }), [INFO] [stderr] 170 | MatchingRule::Regex(ref r) => json!({ "match": Value::String(s!("regex")), [INFO] [stderr] 171 | "regex": Value::String(r.clone()) }), [INFO] [stderr] 172 | MatchingRule::Type => json!({ "match": Value::String(s!("type")) }), [INFO] [stderr] 173 | MatchingRule::MinType(min) => json!({ "match": Value::String(s!("type")), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:208:19 [INFO] [stderr] | [INFO] [stderr] 208 | Value::String(match self { [INFO] [stderr] | ___________________^ [INFO] [stderr] 209 | | &RuleLogic::And => s!("AND"), [INFO] [stderr] 210 | | &RuleLogic::Or => s!("OR") [INFO] [stderr] 211 | | }) [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] 208 | Value::String(match *self { [INFO] [stderr] 209 | RuleLogic::And => s!("AND"), [INFO] [stderr] 210 | RuleLogic::Or => s!("OR") [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:291:41 [INFO] [stderr] | [INFO] [stderr] 291 | pub fn rule_from_json(&mut self, key: &String, matcher_json: &Value, rule_logic: &RuleLogic) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/matchingrules.rs:294:51 [INFO] [stderr] | [INFO] [stderr] 294 | let rules = self.rules.entry(key.clone()).or_insert(RuleList::default(rule_logic)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| RuleList::default(rule_logic))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:302:35 [INFO] [stderr] | [INFO] [stderr] 302 | pub fn add_rule(&mut self, key: &String, matcher: MatchingRule, rule_logic: &RuleLogic) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/matchingrules.rs:303:47 [INFO] [stderr] | [INFO] [stderr] 303 | let rules = self.rules.entry(key.clone()).or_insert(RuleList::default(rule_logic)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| RuleList::default(rule_logic))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [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/models/matchingrules.rs:317:31 [INFO] [stderr] | [INFO] [stderr] 317 | fn max_by_path(&self, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/matchingrules.rs:351:1 [INFO] [stderr] | [INFO] [stderr] 351 | / impl Hash for Category { [INFO] [stderr] 352 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 353 | | self.name.hash(state); [INFO] [stderr] 354 | | for (k, v) in self.rules.clone() { [INFO] [stderr] ... | [INFO] [stderr] 358 | | } [INFO] [stderr] 359 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::derive_hash_xor_eq)] on by default [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/matchingrules.rs:260:34 [INFO] [stderr] | [INFO] [stderr] 260 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:404:48 [INFO] [stderr] | [INFO] [stderr] 404 | pub fn rules_for_category(&self, category: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:409:60 [INFO] [stderr] | [INFO] [stderr] 409 | pub fn matcher_is_defined(&self, category: &str, path: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:417:69 [INFO] [stderr] | [INFO] [stderr] 417 | pub fn wildcard_matcher_is_defined(&self, category: &str, path: &Vec) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:425:58 [INFO] [stderr] | [INFO] [stderr] 425 | pub fn resolve_matchers(&self, category: &str, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:436:55 [INFO] [stderr] | [INFO] [stderr] 436 | pub fn resolve_body_matchers_by_path(&self, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/matchingrules.rs:443:63 [INFO] [stderr] | [INFO] [stderr] 443 | fn resolve_wildcard_matchers(&self, category: &str, path: &Vec) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/matchingrules.rs:480:44 [INFO] [stderr] | [INFO] [stderr] 480 | fn add_rules(&mut self, category_name: &String, rules: &Value) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/matchingrules.rs:491:9 [INFO] [stderr] | [INFO] [stderr] 491 | / match rules.get("matchers") { [INFO] [stderr] 492 | | Some(matchers) => match matchers { [INFO] [stderr] 493 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 494 | | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] ... | [INFO] [stderr] 498 | | None => () [INFO] [stderr] 499 | | } [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] 491 | if let Some(matchers) = rules.get("matchers") { match matchers { [INFO] [stderr] 492 | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 493 | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 494 | }, [INFO] [stderr] 495 | _ => () [INFO] [stderr] 496 | } } [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/models/matchingrules.rs:492:29 [INFO] [stderr] | [INFO] [stderr] 492 | Some(matchers) => match matchers { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 493 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 494 | | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 495 | | }, [INFO] [stderr] 496 | | _ => () [INFO] [stderr] 497 | | }, [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] 492 | Some(matchers) => if let &Value::Array(ref array) = matchers for matcher in array { [INFO] [stderr] 493 | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 494 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:492:29 [INFO] [stderr] | [INFO] [stderr] 492 | Some(matchers) => match matchers { [INFO] [stderr] | _____________________________^ [INFO] [stderr] 493 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 494 | | category.rule_from_json(&s!(""), &matcher, &rule_logic) [INFO] [stderr] 495 | | }, [INFO] [stderr] 496 | | _ => () [INFO] [stderr] 497 | | }, [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] 492 | Some(matchers) => match *matchers { [INFO] [stderr] 493 | Value::Array(ref array) => for matcher in array { [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/models/matchingrules.rs:501:9 [INFO] [stderr] | [INFO] [stderr] 501 | / match rules { [INFO] [stderr] 502 | | &Value::Object(ref m) => { [INFO] [stderr] 503 | | for (k, v) in m { [INFO] [stderr] 504 | | let rule_logic = match v.get("combine") { [INFO] [stderr] ... | [INFO] [stderr] 523 | | _ => () [INFO] [stderr] 524 | | } [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] 501 | if let &Value::Object(ref m) = rules { [INFO] [stderr] 502 | for (k, v) in m { [INFO] [stderr] 503 | let rule_logic = match v.get("combine") { [INFO] [stderr] 504 | Some(val) => if json_to_string(val).to_uppercase() == "OR" { [INFO] [stderr] 505 | RuleLogic::Or [INFO] [stderr] 506 | } else { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:501:9 [INFO] [stderr] | [INFO] [stderr] 501 | / match rules { [INFO] [stderr] 502 | | &Value::Object(ref m) => { [INFO] [stderr] 503 | | for (k, v) in m { [INFO] [stderr] 504 | | let rule_logic = match v.get("combine") { [INFO] [stderr] ... | [INFO] [stderr] 523 | | _ => () [INFO] [stderr] 524 | | } [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] 501 | match *rules { [INFO] [stderr] 502 | Value::Object(ref m) => { [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/models/matchingrules.rs:512:15 [INFO] [stderr] | [INFO] [stderr] 512 | / match v.get("matchers") { [INFO] [stderr] 513 | | Some(matchers) => match matchers { [INFO] [stderr] 514 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 515 | | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] ... | [INFO] [stderr] 519 | | None => () [INFO] [stderr] 520 | | } [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] 512 | if let Some(matchers) = v.get("matchers") { match matchers { [INFO] [stderr] 513 | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 514 | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 515 | }, [INFO] [stderr] 516 | _ => () [INFO] [stderr] 517 | } } [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/models/matchingrules.rs:513:35 [INFO] [stderr] | [INFO] [stderr] 513 | Some(matchers) => match matchers { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 514 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 515 | | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 516 | | }, [INFO] [stderr] 517 | | _ => () [INFO] [stderr] 518 | | }, [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] 513 | Some(matchers) => if let &Value::Array(ref array) = matchers for matcher in array { [INFO] [stderr] 514 | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 515 | }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:513:35 [INFO] [stderr] | [INFO] [stderr] 513 | Some(matchers) => match matchers { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 514 | | &Value::Array(ref array) => for matcher in array { [INFO] [stderr] 515 | | category.rule_from_json(k, &matcher, &rule_logic) [INFO] [stderr] 516 | | }, [INFO] [stderr] 517 | | _ => () [INFO] [stderr] 518 | | }, [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] 513 | Some(matchers) => match *matchers { [INFO] [stderr] 514 | Value::Array(ref array) => for matcher in array { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/matchingrules.rs:550:1 [INFO] [stderr] | [INFO] [stderr] 550 | / impl Hash for MatchingRules { [INFO] [stderr] 551 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 552 | | for (k, v) in self.rules.iter() { [INFO] [stderr] 553 | | k.hash(state); [INFO] [stderr] ... | [INFO] [stderr] 556 | | } [INFO] [stderr] 557 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/matchingrules.rs:362:34 [INFO] [stderr] | [INFO] [stderr] 362 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [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/models/matchingrules.rs:568:3 [INFO] [stderr] | [INFO] [stderr] 568 | / match matchers_json { [INFO] [stderr] 569 | | Some(value) => match value { [INFO] [stderr] 570 | | &Value::Object(ref m) => { [INFO] [stderr] 571 | | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] ... | [INFO] [stderr] 579 | | None => () [INFO] [stderr] 580 | | } [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] 568 | if let Some(value) = matchers_json { match value { [INFO] [stderr] 569 | &Value::Object(ref m) => { [INFO] [stderr] 570 | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 571 | matching_rules.load_from_v2_map(m) [INFO] [stderr] 572 | } else { [INFO] [stderr] 573 | matching_rules.load_from_v3_map(m) [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/models/matchingrules.rs:569:22 [INFO] [stderr] | [INFO] [stderr] 569 | Some(value) => match value { [INFO] [stderr] | ______________________^ [INFO] [stderr] 570 | | &Value::Object(ref m) => { [INFO] [stderr] 571 | | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 572 | | matching_rules.load_from_v2_map(m) [INFO] [stderr] ... | [INFO] [stderr] 577 | | _ => () [INFO] [stderr] 578 | | }, [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] 569 | Some(value) => if let &Value::Object(ref m) = value { [INFO] [stderr] 570 | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 571 | matching_rules.load_from_v2_map(m) [INFO] [stderr] 572 | } else { [INFO] [stderr] 573 | matching_rules.load_from_v3_map(m) [INFO] [stderr] 574 | } [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:569:22 [INFO] [stderr] | [INFO] [stderr] 569 | Some(value) => match value { [INFO] [stderr] | ______________________^ [INFO] [stderr] 570 | | &Value::Object(ref m) => { [INFO] [stderr] 571 | | if m.keys().next().unwrap_or(&s!("")).starts_with("$") { [INFO] [stderr] 572 | | matching_rules.load_from_v2_map(m) [INFO] [stderr] ... | [INFO] [stderr] 577 | | _ => () [INFO] [stderr] 578 | | }, [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] 569 | Some(value) => match *value { [INFO] [stderr] 570 | Value::Object(ref m) => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/models/matchingrules.rs:571:63 [INFO] [stderr] | [INFO] [stderr] 571 | if m.keys().next().unwrap_or(&s!("")).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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/matchingrules.rs:586:4 [INFO] [stderr] | [INFO] [stderr] 586 | / match spec_version { [INFO] [stderr] 587 | | &PactSpecification::V3 => matchers.to_v3_json(), [INFO] [stderr] 588 | | _ => matchers.to_v2_json() [INFO] [stderr] 589 | | } [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] 586 | match *spec_version { [INFO] [stderr] 587 | PactSpecification::V3 => matchers.to_v3_json(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:49:5 [INFO] [stderr] | [INFO] [stderr] 49 | / match self { [INFO] [stderr] 50 | | &Generator::RandomInt(min, max) => json!({ "type": "RandomInt", "min": min, "max": max }), [INFO] [stderr] 51 | | &Generator::Uuid => json!({ "type": "Uuid" }), [INFO] [stderr] 52 | | &Generator::RandomDecimal(digits) => json!({ "type": "RandomDecimal", "digits": digits }), [INFO] [stderr] ... | [INFO] [stderr] 68 | | &Generator::RandomBoolean => json!({ "type": "RandomBoolean" }) [INFO] [stderr] 69 | | } [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] 49 | match *self { [INFO] [stderr] 50 | Generator::RandomInt(min, max) => json!({ "type": "RandomInt", "min": min, "max": max }), [INFO] [stderr] 51 | Generator::Uuid => json!({ "type": "Uuid" }), [INFO] [stderr] 52 | Generator::RandomDecimal(digits) => json!({ "type": "RandomDecimal", "digits": digits }), [INFO] [stderr] 53 | Generator::RandomHexadecimal(digits) => json!({ "type": "RandomHexadecimal", "digits": digits }), [INFO] [stderr] 54 | Generator::RandomString(size) => json!({ "type": "RandomString", "size": size }), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:56:39 [INFO] [stderr] | [INFO] [stderr] 56 | &Generator::Date(ref format) => match format { [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 57 | | &Some(ref format) => json!({ "type": "Date", "format": format }), [INFO] [stderr] 58 | | &None => json!({ "type": "Date" }) [INFO] [stderr] 59 | | }, [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] 56 | &Generator::Date(ref format) => match *format { [INFO] [stderr] 57 | Some(ref format) => json!({ "type": "Date", "format": format }), [INFO] [stderr] 58 | None => json!({ "type": "Date" }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:60:39 [INFO] [stderr] | [INFO] [stderr] 60 | &Generator::Time(ref format) => match format { [INFO] [stderr] | _______________________________________^ [INFO] [stderr] 61 | | &Some(ref format) => json!({ "type": "Time", "format": format }), [INFO] [stderr] 62 | | &None => json!({ "type": "Time" }) [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] 60 | &Generator::Time(ref format) => match *format { [INFO] [stderr] 61 | Some(ref format) => json!({ "type": "Time", "format": format }), [INFO] [stderr] 62 | None => json!({ "type": "Time" }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:64:44 [INFO] [stderr] | [INFO] [stderr] 64 | &Generator::Timestamp(ref format) => match format { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 65 | | &Some(ref format) => json!({ "type": "Timestamp", "format": format }), [INFO] [stderr] 66 | | &None => json!({ "type": "Timestamp" }) [INFO] [stderr] 67 | | }, [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] 64 | &Generator::Timestamp(ref format) => match *format { [INFO] [stderr] 65 | Some(ref format) => json!({ "type": "Timestamp", "format": format }), [INFO] [stderr] 66 | None => json!({ "type": "Timestamp" }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/generators.rs:73:29 [INFO] [stderr] | [INFO] [stderr] 73 | pub fn from_map(gen_type: &String, map: &serde_json::Map) -> Option { [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] 73 | pub fn from_map(gen_type: &str, map: &serde_json::Map) -> Option { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `gen_type.as_str()` to [INFO] [stderr] | [INFO] [stderr] 74 | match gen_type { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:106:5 [INFO] [stderr] | [INFO] [stderr] 106 | / match self { [INFO] [stderr] 107 | | &Generator::RandomInt(min, max) => Some(rand::thread_rng().gen_range(min as u16, max as u16 + 1)), [INFO] [stderr] 108 | | _ => None [INFO] [stderr] 109 | | } [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] 106 | match *self { [INFO] [stderr] 107 | Generator::RandomInt(min, max) => Some(rand::thread_rng().gen_range(min as u16, max as u16 + 1)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | / match self { [INFO] [stderr] 133 | | &Generator::RandomInt(min, max) => Some(format!("{}", rnd.gen_range(min, max + 1))), [INFO] [stderr] 134 | | &Generator::Uuid => Some(Uuid::new_v4().simple().to_string()), [INFO] [stderr] 135 | | &Generator::RandomDecimal(digits) => Some(generate_decimal(digits as usize)), [INFO] [stderr] ... | [INFO] [stderr] 154 | | &Generator::RandomBoolean => Some(format!("{}", rnd.gen::())) [INFO] [stderr] 155 | | } [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] 132 | match *self { [INFO] [stderr] 133 | Generator::RandomInt(min, max) => Some(format!("{}", rnd.gen_range(min, max + 1))), [INFO] [stderr] 134 | Generator::Uuid => Some(Uuid::new_v4().simple().to_string()), [INFO] [stderr] 135 | Generator::RandomDecimal(digits) => Some(generate_decimal(digits as usize)), [INFO] [stderr] 136 | Generator::RandomHexadecimal(digits) => Some(generate_hexadecimal(digits as usize)), [INFO] [stderr] 137 | Generator::RandomString(size) => Some(generate_ascii_string(size as usize)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:161:5 [INFO] [stderr] | [INFO] [stderr] 161 | / match self { [INFO] [stderr] 162 | | &Generator::RandomInt(min, max) => { [INFO] [stderr] 163 | | let rand_int = rand::thread_rng().gen_range(min, max + 1); [INFO] [stderr] 164 | | match value { [INFO] [stderr] ... | [INFO] [stderr] 206 | | &Generator::RandomBoolean => Some(json!(rand::thread_rng().gen::())) [INFO] [stderr] 207 | | } [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] 161 | match *self { [INFO] [stderr] 162 | Generator::RandomInt(min, max) => { [INFO] [stderr] 163 | let rand_int = rand::thread_rng().gen_range(min, max + 1); [INFO] [stderr] 164 | match value { [INFO] [stderr] 165 | &Value::String(_) => Some(json!(format!("{}", rand_int))), [INFO] [stderr] 166 | &Value::Number(_) => Some(json!(rand_int)), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:164:9 [INFO] [stderr] | [INFO] [stderr] 164 | / match value { [INFO] [stderr] 165 | | &Value::String(_) => Some(json!(format!("{}", rand_int))), [INFO] [stderr] 166 | | &Value::Number(_) => Some(json!(rand_int)), [INFO] [stderr] 167 | | _ => None [INFO] [stderr] 168 | | } [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] 164 | match *value { [INFO] [stderr] 165 | Value::String(_) => Some(json!(format!("{}", rand_int))), [INFO] [stderr] 166 | Value::Number(_) => Some(json!(rand_int)), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:170:27 [INFO] [stderr] | [INFO] [stderr] 170 | &Generator::Uuid => match value { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 171 | | &Value::String(_) => Some(json!(Uuid::new_v4().simple().to_string())), [INFO] [stderr] 172 | | _ => None [INFO] [stderr] 173 | | }, [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] 170 | &Generator::Uuid => match *value { [INFO] [stderr] 171 | Value::String(_) => Some(json!(Uuid::new_v4().simple().to_string())), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:174:44 [INFO] [stderr] | [INFO] [stderr] 174 | &Generator::RandomDecimal(digits) => match value { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 175 | | &Value::String(_) => Some(json!(generate_decimal(digits as usize))), [INFO] [stderr] 176 | | &Value::Number(_) => match generate_decimal(digits as usize).parse::() { [INFO] [stderr] 177 | | Ok(val) => Some(json!(val)), [INFO] [stderr] ... | [INFO] [stderr] 180 | | _ => None [INFO] [stderr] 181 | | }, [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] 174 | &Generator::RandomDecimal(digits) => match *value { [INFO] [stderr] 175 | Value::String(_) => Some(json!(generate_decimal(digits as usize))), [INFO] [stderr] 176 | Value::Number(_) => match generate_decimal(digits as usize).parse::() { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:182:48 [INFO] [stderr] | [INFO] [stderr] 182 | &Generator::RandomHexadecimal(digits) => match value { [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 183 | | &Value::String(_) => Some(json!(generate_hexadecimal(digits as usize))), [INFO] [stderr] 184 | | _ => None [INFO] [stderr] 185 | | }, [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] 182 | &Generator::RandomHexadecimal(digits) => match *value { [INFO] [stderr] 183 | Value::String(_) => Some(json!(generate_hexadecimal(digits as usize))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:186:41 [INFO] [stderr] | [INFO] [stderr] 186 | &Generator::RandomString(size) => match value { [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 187 | | &Value::String(_) => Some(json!(generate_ascii_string(size as usize))), [INFO] [stderr] 188 | | _ => None [INFO] [stderr] 189 | | }, [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] 186 | &Generator::RandomString(size) => match *value { [INFO] [stderr] 187 | Value::String(_) => Some(json!(generate_ascii_string(size as usize))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/generators.rs:269:32 [INFO] [stderr] | [INFO] [stderr] 269 | fn apply_key(&mut self, key: &String, generator: &Generator); [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/models/generators.rs:279:42 [INFO] [stderr] | [INFO] [stderr] 279 | fn query_object_graph(&self, path_exp: &Vec, tree: &mut Arena, root: NodeId, body: Value) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[PathToken]` [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] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/models/generators.rs:283:5 [INFO] [stderr] | [INFO] [stderr] 283 | / loop { [INFO] [stderr] 284 | | match it.next() { [INFO] [stderr] 285 | | Some(token) => { [INFO] [stderr] 286 | | p!(token); [INFO] [stderr] ... | [INFO] [stderr] 349 | | } [INFO] [stderr] 350 | | } [INFO] [stderr] | |_____^ help: try: `while let Some(token) = it.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:289:11 [INFO] [stderr] | [INFO] [stderr] 289 | / match token { [INFO] [stderr] 290 | | &PathToken::Field(ref name) => { [INFO] [stderr] 291 | | match body_cursor.clone().as_object() { [INFO] [stderr] 292 | | Some(map) => match map.get(name) { [INFO] [stderr] ... | [INFO] [stderr] 345 | | _ => () [INFO] [stderr] 346 | | } [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] 289 | match *token { [INFO] [stderr] 290 | PathToken::Field(ref name) => { [INFO] [stderr] 291 | match body_cursor.clone().as_object() { [INFO] [stderr] 292 | Some(map) => match map.get(name) { [INFO] [stderr] 293 | Some(val) => { [INFO] [stderr] 294 | let mut node = tree.new_node(name.clone()); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/models/generators.rs:371:70 [INFO] [stderr] | [INFO] [stderr] 371 | let path: Vec = node_id.ancestors(&tree).map(|n| format!("{}", tree.index(n).data)).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `tree.index(n).data.to_string()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_format)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/generators.rs:381:13 [INFO] [stderr] | [INFO] [stderr] 381 | / match self.value.pointer_mut(&pointer_str) { [INFO] [stderr] 382 | | Some(json_value) => match generator.generate_value(&json_value.clone()) { [INFO] [stderr] 383 | | Some(new_value) => *json_value = new_value, [INFO] [stderr] 384 | | None => () [INFO] [stderr] 385 | | }, [INFO] [stderr] 386 | | None => () [INFO] [stderr] 387 | | } [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] 381 | if let Some(json_value) = self.value.pointer_mut(&pointer_str) { match generator.generate_value(&json_value.clone()) { [INFO] [stderr] 382 | Some(new_value) => *json_value = new_value, [INFO] [stderr] 383 | None => () [INFO] [stderr] 384 | } } [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/models/generators.rs:382:35 [INFO] [stderr] | [INFO] [stderr] 382 | Some(json_value) => match generator.generate_value(&json_value.clone()) { [INFO] [stderr] | ___________________________________^ [INFO] [stderr] 383 | | Some(new_value) => *json_value = new_value, [INFO] [stderr] 384 | | None => () [INFO] [stderr] 385 | | }, [INFO] [stderr] | |_______________^ help: try this: `if let Some(new_value) = generator.generate_value(&json_value.clone()) { *json_value = new_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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/models/generators.rs:390:11 [INFO] [stderr] | [INFO] [stderr] 390 | / match generator.generate_value(&self.value.clone()) { [INFO] [stderr] 391 | | Some(new_value) => self.value = new_value, [INFO] [stderr] 392 | | None => () [INFO] [stderr] 393 | | } [INFO] [stderr] | |___________^ help: try this: `if let Some(new_value) = generator.generate_value(&self.value.clone()) { self.value = new_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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:445:7 [INFO] [stderr] | [INFO] [stderr] 445 | / match v { [INFO] [stderr] 446 | | &Value::Object(ref map) => match GeneratorCategory::from_str(k) { [INFO] [stderr] 447 | | Ok(ref category) => match category { [INFO] [stderr] 448 | | &GeneratorCategory::PATH | &GeneratorCategory::METHOD | &GeneratorCategory::STATUS => { [INFO] [stderr] ... | [INFO] [stderr] 460 | | _ => warn!("Ignoring invalid generator JSON '{}' -> {:?}", k, v) [INFO] [stderr] 461 | | } [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] 445 | match *v { [INFO] [stderr] 446 | Value::Object(ref map) => match GeneratorCategory::from_str(k) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:447:31 [INFO] [stderr] | [INFO] [stderr] 447 | Ok(ref category) => match category { [INFO] [stderr] | _______________________________^ [INFO] [stderr] 448 | | &GeneratorCategory::PATH | &GeneratorCategory::METHOD | &GeneratorCategory::STATUS => { [INFO] [stderr] 449 | | self.parse_generator_from_map(category, map, None); [INFO] [stderr] 450 | | }, [INFO] [stderr] ... | [INFO] [stderr] 456 | | } [INFO] [stderr] 457 | | }, [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] 447 | Ok(ref category) => match *category { [INFO] [stderr] 448 | GeneratorCategory::PATH | GeneratorCategory::METHOD | GeneratorCategory::STATUS => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:452:15 [INFO] [stderr] | [INFO] [stderr] 452 | / match sub_v { [INFO] [stderr] 453 | | &Value::Object(ref map) => self.parse_generator_from_map(category, map, Some(sub_k.clone())), [INFO] [stderr] 454 | | _ => warn!("Ignoring invalid generator JSON '{}' -> {:?}", sub_k, sub_v) [INFO] [stderr] 455 | | } [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] 452 | match *sub_v { [INFO] [stderr] 453 | Value::Object(ref map) => self.parse_generator_from_map(category, map, Some(sub_k.clone())), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:468:25 [INFO] [stderr] | [INFO] [stderr] 468 | Some(gen_type) => match gen_type { [INFO] [stderr] | _________________________^ [INFO] [stderr] 469 | | &Value::String(ref gen_type) => match Generator::from_map(gen_type, map) { [INFO] [stderr] 470 | | Some(generator) => match subcat { [INFO] [stderr] 471 | | Some(s) => self.add_generator_with_subcategory(category, s, generator), [INFO] [stderr] ... | [INFO] [stderr] 476 | | _ => warn!("Ignoring invalid generator JSON '{:?}' with invalid type attribute -> {:?}", category, map) [INFO] [stderr] 477 | | }, [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] 468 | Some(gen_type) => match *gen_type { [INFO] [stderr] 469 | Value::String(ref gen_type) => match Generator::from_map(gen_type, map) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:485:7 [INFO] [stderr] | [INFO] [stderr] 485 | / match name { [INFO] [stderr] 486 | | &GeneratorCategory::PATH | &GeneratorCategory::METHOD | &GeneratorCategory::STATUS => { [INFO] [stderr] 487 | | match category.get("") { [INFO] [stderr] 488 | | Some(generator) => { [INFO] [stderr] ... | [INFO] [stderr] 498 | | } [INFO] [stderr] 499 | | } [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] 485 | match *name { [INFO] [stderr] 486 | GeneratorCategory::PATH | GeneratorCategory::METHOD | GeneratorCategory::STATUS => { [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/models/generators.rs:487:11 [INFO] [stderr] | [INFO] [stderr] 487 | / match category.get("") { [INFO] [stderr] 488 | | Some(generator) => { [INFO] [stderr] 489 | | map.insert(cat.clone(), generator.to_json()); [INFO] [stderr] 490 | | }, [INFO] [stderr] 491 | | None => () [INFO] [stderr] 492 | | } [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] 487 | if let Some(generator) = category.get("") { [INFO] [stderr] 488 | map.insert(cat.clone(), generator.to_json()); [INFO] [stderr] 489 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/generators.rs:512:64 [INFO] [stderr] | [INFO] [stderr] 512 | let category_map = self.categories.entry(category.clone()).or_insert(HashMap::new()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(HashMap::new)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/generators.rs:564:1 [INFO] [stderr] | [INFO] [stderr] 564 | / impl Hash for Generators { [INFO] [stderr] 565 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 566 | | for (k, v) in self.categories.iter() { [INFO] [stderr] 567 | | k.hash(state); [INFO] [stderr] ... | [INFO] [stderr] 573 | | } [INFO] [stderr] 574 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/generators.rs:418:34 [INFO] [stderr] | [INFO] [stderr] 418 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [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/models/generators.rs:579:3 [INFO] [stderr] | [INFO] [stderr] 579 | / match value { [INFO] [stderr] 580 | | &Value::Object(ref m) => match m.get("generators") { [INFO] [stderr] 581 | | Some(gen_val) => match gen_val { [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] ... | [INFO] [stderr] 587 | | _ => () [INFO] [stderr] 588 | | } [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] 579 | if let &Value::Object(ref m) = value { match m.get("generators") { [INFO] [stderr] 580 | Some(gen_val) => match gen_val { [INFO] [stderr] 581 | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 582 | _ => () [INFO] [stderr] 583 | }, [INFO] [stderr] 584 | None => () [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:579:3 [INFO] [stderr] | [INFO] [stderr] 579 | / match value { [INFO] [stderr] 580 | | &Value::Object(ref m) => match m.get("generators") { [INFO] [stderr] 581 | | Some(gen_val) => match gen_val { [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] ... | [INFO] [stderr] 587 | | _ => () [INFO] [stderr] 588 | | } [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] 579 | match *value { [INFO] [stderr] 580 | Value::Object(ref m) => match m.get("generators") { [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/models/generators.rs:580:30 [INFO] [stderr] | [INFO] [stderr] 580 | &Value::Object(ref m) => match m.get("generators") { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 581 | | Some(gen_val) => match gen_val { [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 583 | | _ => () [INFO] [stderr] 584 | | }, [INFO] [stderr] 585 | | None => () [INFO] [stderr] 586 | | }, [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] 580 | &Value::Object(ref m) => if let Some(gen_val) = m.get("generators") { match gen_val { [INFO] [stderr] 581 | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 582 | _ => () [INFO] [stderr] 583 | } }, [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/models/generators.rs:581:24 [INFO] [stderr] | [INFO] [stderr] 581 | Some(gen_val) => match gen_val { [INFO] [stderr] | ________________________^ [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 583 | | _ => () [INFO] [stderr] 584 | | }, [INFO] [stderr] | |_______^ help: try this: `if let &Value::Object(ref m) = gen_val { generators.load_from_map(m) }` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:581:24 [INFO] [stderr] | [INFO] [stderr] 581 | Some(gen_val) => match gen_val { [INFO] [stderr] | ________________________^ [INFO] [stderr] 582 | | &Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] 583 | | _ => () [INFO] [stderr] 584 | | }, [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] 581 | Some(gen_val) => match *gen_val { [INFO] [stderr] 582 | Value::Object(ref m) => generators.load_from_map(m), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/generators.rs:594:3 [INFO] [stderr] | [INFO] [stderr] 594 | / match spec_version { [INFO] [stderr] 595 | | &PactSpecification::V3 => generators.to_json(), [INFO] [stderr] 596 | | _ => Value::Null [INFO] [stderr] 597 | | } [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] 594 | match *spec_version { [INFO] [stderr] 595 | PactSpecification::V3 => generators.to_json(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:295:39 [INFO] [stderr] | [INFO] [stderr] 295 | fn has_header(&self, header_name: &String) -> bool { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:300:48 [INFO] [stderr] | [INFO] [stderr] 300 | fn lookup_header_value(&self, header_name: &String) -> Option { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/mod.rs:347:1 [INFO] [stderr] | [INFO] [stderr] 347 | / impl Hash for Request { [INFO] [stderr] 348 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 349 | | self.method.hash(state); [INFO] [stderr] 350 | | self.path.hash(state); [INFO] [stderr] ... | [INFO] [stderr] 366 | | } [INFO] [stderr] 367 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/mod.rs:311:34 [INFO] [stderr] | [INFO] [stderr] 311 | #[derive(Serialize, Deserialize, PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:373:17 [INFO] [stderr] | [INFO] [stderr] 373 | / match val { [INFO] [stderr] 374 | | &Value::String(ref s) => (key.clone(), s.clone()), [INFO] [stderr] 375 | | _ => (key.clone(), val.to_string()) [INFO] [stderr] 376 | | } [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] 373 | match *val { [INFO] [stderr] 374 | Value::String(ref s) => (key.clone(), s.clone()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:399:24 [INFO] [stderr] | [INFO] [stderr] 399 | let content_type = match headers { [INFO] [stderr] | ________________________^ [INFO] [stderr] 400 | | &Some(ref h) => match h.iter().find(|kv| kv.0.to_lowercase() == s!("content-type")) { [INFO] [stderr] 401 | | Some(kv) => { [INFO] [stderr] 402 | | match strip_whitespace::>(&kv.1, ";").first() { [INFO] [stderr] ... | [INFO] [stderr] 409 | | &None => None [INFO] [stderr] 410 | | }; [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] 399 | let content_type = match *headers { [INFO] [stderr] 400 | Some(ref h) => match h.iter().find(|kv| kv.0.to_lowercase() == s!("content-type")) { [INFO] [stderr] 401 | Some(kv) => { [INFO] [stderr] 402 | match strip_whitespace::>(&kv.1, ";").first() { [INFO] [stderr] 403 | Some(v) => Some(v.to_lowercase()), [INFO] [stderr] 404 | None => None [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:349:19 [INFO] [stderr] | [INFO] [stderr] 349 | ($e:expr) => ($e.to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^ help: try: `"content-type"` [INFO] [stderr] | [INFO] [stderr] ::: src/models/mod.rs:400:73 [INFO] [stderr] | [INFO] [stderr] 400 | &Some(ref h) => match h.iter().find(|kv| kv.0.to_lowercase() == s!("content-type")) { [INFO] [stderr] | ------------------ in this macro invocation [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/mod.rs:418:51 [INFO] [stderr] | [INFO] [stderr] 418 | let content_type = content_type.unwrap_or(s!("text/plain")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| s!("text/plain"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/models/mod.rs:442:34 [INFO] [stderr] | [INFO] [stderr] 442 | pub fn build_query_string(query: HashMap>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::implicit_hasher)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 442 | pub fn build_query_string(query: HashMap, S>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:455:5 [INFO] [stderr] | [INFO] [stderr] 455 | / match query_json { [INFO] [stderr] 456 | | &Value::String(ref s) => parse_query_string(s), [INFO] [stderr] 457 | | _ => { [INFO] [stderr] 458 | | warn!("Only string versions of request query strings are supported with specification version {}, ignoring.", [INFO] [stderr] ... | [INFO] [stderr] 461 | | } [INFO] [stderr] 462 | | } [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] 455 | match *query_json { [INFO] [stderr] 456 | Value::String(ref s) => parse_query_string(s), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:466:5 [INFO] [stderr] | [INFO] [stderr] 466 | / match query_json { [INFO] [stderr] 467 | | &Value::String(ref s) => parse_query_string(s), [INFO] [stderr] 468 | | &Value::Object(ref map) => Some(map.iter().map(|(k, v)| { [INFO] [stderr] 469 | | (k.clone(), match v { [INFO] [stderr] ... | [INFO] [stderr] 485 | | } [INFO] [stderr] 486 | | } [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] 466 | match *query_json { [INFO] [stderr] 467 | Value::String(ref s) => parse_query_string(s), [INFO] [stderr] 468 | Value::Object(ref map) => Some(map.iter().map(|(k, v)| { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:469:25 [INFO] [stderr] | [INFO] [stderr] 469 | (k.clone(), match v { [INFO] [stderr] | _________________________^ [INFO] [stderr] 470 | | &Value::String(ref s) => vec![s.clone()], [INFO] [stderr] 471 | | &Value::Array(ref array) => array.iter().map(|item| match item { [INFO] [stderr] 472 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] ... | [INFO] [stderr] 478 | | } [INFO] [stderr] 479 | | }) [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] 469 | (k.clone(), match *v { [INFO] [stderr] 470 | Value::String(ref s) => vec![s.clone()], [INFO] [stderr] 471 | Value::Array(ref array) => array.iter().map(|item| match item { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:471:69 [INFO] [stderr] | [INFO] [stderr] 471 | &Value::Array(ref array) => array.iter().map(|item| match item { [INFO] [stderr] | _____________________________________________________________________^ [INFO] [stderr] 472 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 473 | | _ => v.to_string() [INFO] [stderr] 474 | | }).collect(), [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] 471 | &Value::Array(ref array) => array.iter().map(|item| match *item { [INFO] [stderr] 472 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:490:5 [INFO] [stderr] | [INFO] [stderr] 490 | / match spec_version { [INFO] [stderr] 491 | | &PactSpecification::V3 => Value::Object(query.iter().map(|(k, v)| { [INFO] [stderr] 492 | | (k.clone(), Value::Array(v.iter().map(|q| Value::String(q.clone())).collect()))} [INFO] [stderr] 493 | | ).collect()), [INFO] [stderr] 494 | | _ => Value::String(build_query_string(query)) [INFO] [stderr] 495 | | } [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] 490 | match *spec_version { [INFO] [stderr] 491 | PactSpecification::V3 => Value::Object(query.iter().map(|(k, v)| { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:516:24 [INFO] [stderr] | [INFO] [stderr] 516 | Some(v) => match spec_version { [INFO] [stderr] | ________________________^ [INFO] [stderr] 517 | | &PactSpecification::V3 => v3_query_from_json(v, spec_version), [INFO] [stderr] 518 | | _ => query_from_json(v, spec_version) [INFO] [stderr] 519 | | }, [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] 516 | Some(v) => match *spec_version { [INFO] [stderr] 517 | PactSpecification::V3 => v3_query_from_json(v, spec_version), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/mod.rs:744:1 [INFO] [stderr] | [INFO] [stderr] 744 | / impl Hash for Response { [INFO] [stderr] 745 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 746 | | self.status.hash(state); [INFO] [stderr] 747 | | if self.headers.is_some() { [INFO] [stderr] ... | [INFO] [stderr] 756 | | } [INFO] [stderr] 757 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/mod.rs:620:10 [INFO] [stderr] | [INFO] [stderr] 620 | #[derive(PartialEq, Debug, Clone, Eq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/provider_states.rs:21:26 [INFO] [stderr] | [INFO] [stderr] 21 | pub fn default(name: &String) -> ProviderState { [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] 21 | pub fn default(name: &str) -> ProviderState { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `name.clone()` to [INFO] [stderr] | [INFO] [stderr] 23 | name: name.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/models/provider_states.rs:63:58 [INFO] [stderr] | [INFO] [stderr] 63 | None => match pact_json.get("providerState").or(pact_json.get("provider_state")) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| pact_json.get("provider_state"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] error: you are implementing `Hash` explicitly but have derived `PartialEq` [INFO] [stderr] --> src/models/provider_states.rs:93:1 [INFO] [stderr] | [INFO] [stderr] 93 | / impl Hash for ProviderState { [INFO] [stderr] 94 | | fn hash(&self, state: &mut H) { [INFO] [stderr] 95 | | self.name.hash(state); [INFO] [stderr] 96 | | for (k, v) in self.params.clone() { [INFO] [stderr] ... | [INFO] [stderr] 111 | | } [INFO] [stderr] 112 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] note: `PartialEq` implemented here [INFO] [stderr] --> src/models/provider_states.rs:10:48 [INFO] [stderr] | [INFO] [stderr] 10 | #[derive(Serialize, Deserialize, Debug, Clone, PartialEq)] [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derive_hash_xor_eq [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/mod.rs:820:13 [INFO] [stderr] | [INFO] [stderr] 820 | / match spec_version { [INFO] [stderr] 821 | | &PactSpecification::V3 => map.insert(s!("providerStates"), [INFO] [stderr] 822 | | Value::Array(self.provider_states.iter().map(|p| p.to_json()).collect())), [INFO] [stderr] 823 | | _ => map.insert(s!("providerState"), Value::String( [INFO] [stderr] 824 | | self.provider_states.first().unwrap().name.clone())) [INFO] [stderr] 825 | | }; [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] 820 | match *spec_version { [INFO] [stderr] 821 | PactSpecification::V3 => map.insert(s!("providerStates"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/message.rs:38:9 [INFO] [stderr] | [INFO] [stderr] 38 | / match spec_version { [INFO] [stderr] 39 | | &PactSpecification::V3 => { [INFO] [stderr] 40 | | let description = match json.get("description") { [INFO] [stderr] 41 | | Some(v) => match *v { [INFO] [stderr] ... | [INFO] [stderr] 76 | | _ => Err(s!("Messages require Pact Specification version 3 or later")) [INFO] [stderr] 77 | | } [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 *spec_version { [INFO] [stderr] 39 | PactSpecification::V3 => { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/models/message.rs:61:37 [INFO] [stderr] | [INFO] [stderr] 61 | (k.clone(), match v { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 62 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 63 | | _ => v.to_string() [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 | (k.clone(), match *v { [INFO] [stderr] 62 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:921:33 [INFO] [stderr] | [INFO] [stderr] 921 | fn determine_spec_version(file: &String, metadata: &BTreeMap>) -> PactSpecification { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:970:28 [INFO] [stderr] | [INFO] [stderr] 970 | pub fn from_json(file: &String, pact_json: &Value) -> Pact { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:1085:26 [INFO] [stderr] | [INFO] [stderr] 1085 | pub fn from_url(url: &String) -> Result { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/models/mod.rs:1111:36 [INFO] [stderr] | [INFO] [stderr] 1111 | file.write_all(format!("{}", serde_json::to_string_pretty(&merged_pact.to_json(pact_spec)).unwrap()).as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `serde_json::to_string_pretty(&merged_pact.to_json(pact_spec)).unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/models/mod.rs:1118:28 [INFO] [stderr] | [INFO] [stderr] 1118 | file.write_all(format!("{}", serde_json::to_string_pretty(&self.to_json(pact_spec)).unwrap()).as_bytes())?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `serde_json::to_string_pretty(&self.to_json(pact_spec)).unwrap().to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/models/mod.rs:1206:34 [INFO] [stderr] | [INFO] [stderr] 1206 | pub fn parse_query_string(query: &String) -> Option>> { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/models/mod.rs:1208:26 [INFO] [stderr] | [INFO] [stderr] 1208 | Some(query.split("&").map(|kv| { [INFO] [stderr] | ^^^ help: try using a char instead: `'&'` [INFO] [stderr] | [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: single-character string constant used as pattern [INFO] [stderr] --> src/models/mod.rs:1211:35 [INFO] [stderr] | [INFO] [stderr] 1211 | } else if kv.contains("=") { [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [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: single-character string constant used as pattern [INFO] [stderr] --> src/models/mod.rs:1212:30 [INFO] [stderr] | [INFO] [stderr] 1212 | kv.splitn(2, "=").collect::>() [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [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: use of `or_insert` followed by a function call [INFO] [stderr] --> src/models/mod.rs:1224:33 [INFO] [stderr] | [INFO] [stderr] 1224 | map.entry(name).or_insert(vec![]).push(value); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `or_insert_with(|| vec![])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/models/tests.rs:113:54 [INFO] [stderr] | [INFO] [stderr] 113 | if map.len() == 1 && !s.contains("=") { [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/tests.rs:841:69 [INFO] [stderr] | [INFO] [stderr] 841 | let pact_file = read_pact_file(dir.as_path().to_str().unwrap()).unwrap_or(s!("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| s!(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/tests.rs:912:69 [INFO] [stderr] | [INFO] [stderr] 912 | let pact_file = read_pact_file(dir.as_path().to_str().unwrap()).unwrap_or(s!("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| s!(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/tests.rs:995:69 [INFO] [stderr] | [INFO] [stderr] 995 | let pact_file = read_pact_file(dir.as_path().to_str().unwrap()).unwrap_or(s!("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| s!(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/tests.rs:1386:69 [INFO] [stderr] | [INFO] [stderr] 1386 | let pact_file = read_pact_file(dir.as_path().to_str().unwrap()).unwrap_or(s!("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| s!(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/tests.rs:1456:69 [INFO] [stderr] | [INFO] [stderr] 1456 | let pact_file = read_pact_file(dir.as_path().to_str().unwrap()).unwrap_or(s!("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| s!(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/tests.rs:1697:69 [INFO] [stderr] | [INFO] [stderr] 1697 | let pact_file = read_pact_file(dir.as_path().to_str().unwrap()).unwrap_or(s!("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| s!(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/models/tests.rs:1880:69 [INFO] [stderr] | [INFO] [stderr] 1880 | let pact_file = read_pact_file(dir.as_path().to_str().unwrap()).unwrap_or(s!("")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| s!(""))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/path_exp.rs:13:29 [INFO] [stderr] | [INFO] [stderr] 13 | chars.peek().map(|tup| (tup.0.clone(), tup.1.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `tup.0` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/path_exp.rs:13:44 [INFO] [stderr] | [INFO] [stderr] 13 | chars.peek().map(|tup| (tup.0.clone(), tup.1.clone())) [INFO] [stderr] | ^^^^^^^^^^^^^ help: try removing the `clone` call: `tup.1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:17:88 [INFO] [stderr] | [INFO] [stderr] 17 | fn identifier(ch: char, chars: &mut Peekable, tokens: &mut Vec, path: &String)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:40:83 [INFO] [stderr] | [INFO] [stderr] 40 | fn path_identifier(chars: &mut Peekable, tokens: &mut Vec, path: &String, index: usize)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:61:79 [INFO] [stderr] | [INFO] [stderr] 61 | fn string_path(chars: &mut Peekable, tokens: &mut Vec, path: &String, index: usize)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:91:78 [INFO] [stderr] | [INFO] [stderr] 91 | fn index_path(chars: &mut Peekable, tokens: &mut Vec, path: &String)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:120:80 [INFO] [stderr] | [INFO] [stderr] 120 | fn bracket_path(chars: &mut Peekable, tokens: &mut Vec, path: &String, index: usize)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/path_exp.rs:159:76 [INFO] [stderr] | [INFO] [stderr] 159 | fn path_exp(chars: &mut Peekable, tokens: &mut Vec, path: &String)-> Result<(), String> [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: strict comparison of f32 or f64 [INFO] [stderr] --> src/matchers.rs:194:17 [INFO] [stderr] | [INFO] [stderr] 194 | if self == actual { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: consider comparing them within some error: `(self - actual).abs() < error` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::float_cmp)] on by default [INFO] [stderr] note: std::f32::EPSILON and std::f64::EPSILON are available. [INFO] [stderr] --> src/matchers.rs:194:17 [INFO] [stderr] | [INFO] [stderr] 194 | if self == actual { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#float_cmp [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/matchers.rs:250:46 [INFO] [stderr] | [INFO] [stderr] 250 | fn select_best_matcher(category: &str, path: &Vec, matchers: &MatchingRules) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/matchers.rs:261:49 [INFO] [stderr] | [INFO] [stderr] 261 | pub fn match_values(category: &str, path: &Vec, matchers: MatchingRules, expected: &E, actual: &A) -> Result<(), Vec> [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:15:5 [INFO] [stderr] | [INFO] [stderr] 15 | / match json { [INFO] [stderr] 16 | | &Value::Object(_) => s!("Map"), [INFO] [stderr] 17 | | &Value::Array(_) => s!("List"), [INFO] [stderr] 18 | | _ => s!("") [INFO] [stderr] 19 | | } [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] 15 | match *json { [INFO] [stderr] 16 | Value::Object(_) => s!("Map"), [INFO] [stderr] 17 | Value::Array(_) => s!("List"), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:23:5 [INFO] [stderr] | [INFO] [stderr] 23 | / match json { [INFO] [stderr] 24 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 25 | | _ => format!("{}", json) [INFO] [stderr] 26 | | } [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] 23 | match *json { [INFO] [stderr] 24 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:35:34 [INFO] [stderr] | [INFO] [stderr] 35 | let actual_str = match actual { [INFO] [stderr] | __________________________________^ [INFO] [stderr] 36 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 37 | | _ => actual.to_string() [INFO] [stderr] 38 | | }; [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] 35 | let actual_str = match *actual { [INFO] [stderr] 36 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:49:30 [INFO] [stderr] | [INFO] [stderr] 49 | let actual_str = match actual { [INFO] [stderr] | ______________________________^ [INFO] [stderr] 50 | | &Value::String(ref s) => s.clone(), [INFO] [stderr] 51 | | _ => actual.to_string() [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] 49 | let actual_str = match *actual { [INFO] [stderr] 50 | Value::String(ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:124:33 [INFO] [stderr] | [INFO] [stderr] 124 | MatchingRule::Null => match actual { [INFO] [stderr] | _________________________________^ [INFO] [stderr] 125 | | &Value::Null => Ok(()), [INFO] [stderr] 126 | | _ => Err(format!("Expected '{}' to be a null value", value_of(actual))) [INFO] [stderr] 127 | | }, [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] 124 | MatchingRule::Null => match *actual { [INFO] [stderr] 125 | Value::Null => Ok(()), [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/json.rs:205:29 [INFO] [stderr] | [INFO] [stderr] 205 | pub fn match_json(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:205:47 [INFO] [stderr] | [INFO] [stderr] 205 | pub fn match_json(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/json.rs:211:9 [INFO] [stderr] | [INFO] [stderr] 211 | / match expected_json { [INFO] [stderr] 212 | | Err(e) => { [INFO] [stderr] 213 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 214 | | actual: Some(actual.clone().into()), [INFO] [stderr] ... | [INFO] [stderr] 217 | | _ => () [INFO] [stderr] 218 | | } [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] 211 | if let Err(e) = expected_json { [INFO] [stderr] 212 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 213 | actual: Some(actual.clone().into()), [INFO] [stderr] 214 | mismatch: format!("Failed to parse the expected body: '{}'", e)}); [INFO] [stderr] 215 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:213:88 [INFO] [stderr] | [INFO] [stderr] 213 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_conversion)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:214:34 [INFO] [stderr] | [INFO] [stderr] 214 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/json.rs:219:9 [INFO] [stderr] | [INFO] [stderr] 219 | / match actual_json { [INFO] [stderr] 220 | | Err(e) => { [INFO] [stderr] 221 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 222 | | actual: Some(actual.clone().into()), [INFO] [stderr] ... | [INFO] [stderr] 225 | | _ => () [INFO] [stderr] 226 | | } [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] 219 | if let Err(e) = actual_json { [INFO] [stderr] 220 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 221 | actual: Some(actual.clone().into()), [INFO] [stderr] 222 | mismatch: format!("Failed to parse the actual body: '{}'", e)}); [INFO] [stderr] 223 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:221:88 [INFO] [stderr] | [INFO] [stderr] 221 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/json.rs:222:34 [INFO] [stderr] | [INFO] [stderr] 222 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:235:20 [INFO] [stderr] | [INFO] [stderr] 235 | Some(p) => match json { [INFO] [stderr] | ____________________^ [INFO] [stderr] 236 | | &Value::Object(_) => json.get(p).map(|json| json.clone()), [INFO] [stderr] 237 | | &Value::Array(ref array) => match usize::from_str(p) { [INFO] [stderr] 238 | | Ok(index) => array.get(index).map(|json| json.clone()), [INFO] [stderr] ... | [INFO] [stderr] 241 | | _ => None [INFO] [stderr] 242 | | }, [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] 235 | Some(p) => match *json { [INFO] [stderr] 236 | Value::Object(_) => json.get(p).map(|json| json.clone()), [INFO] [stderr] 237 | Value::Array(ref array) => match usize::from_str(p) { [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/json.rs:236:34 [INFO] [stderr] | [INFO] [stderr] 236 | &Value::Object(_) => json.get(p).map(|json| json.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `json.get(p).cloned()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/json.rs:238:30 [INFO] [stderr] | [INFO] [stderr] 238 | Ok(index) => array.get(index).map(|json| json.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: Consider calling the dedicated `cloned` method: `array.get(index).cloned()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/json.rs:248:31 [INFO] [stderr] | [INFO] [stderr] 248 | pub fn display_diff(expected: &String, actual: &String, path: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/json.rs:248:48 [INFO] [stderr] | [INFO] [stderr] 248 | pub fn display_diff(expected: &String, actual: &String, path: &String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/json.rs:248:63 [INFO] [stderr] | [INFO] [stderr] 248 | pub fn display_diff(expected: &String, actual: &String, path: &String) -> String { [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] 248 | pub fn display_diff(expected: &String, actual: &String, path: &str) -> String { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `path.clone()` to [INFO] [stderr] | [INFO] [stderr] 252 | let expected_fragment = match walk_json(&expected_body, &mut path.to_string()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] help: change `path.clone()` to [INFO] [stderr] | [INFO] [stderr] 256 | let actual_fragment = match walk_json(&actual_body, &mut path.to_string()) { [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/json.rs:272:18 [INFO] [stderr] | [INFO] [stderr] 272 | fn compare(path: &Vec, expected: &Value, actual: &Value, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:296:23 [INFO] [stderr] | [INFO] [stderr] 296 | fn compare_maps(path: &Vec, expected: &serde_json::Map, actual: &serde_json::Map, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:304:9 [INFO] [stderr] | [INFO] [stderr] 304 | / match config { [INFO] [stderr] 305 | | &DiffConfig::AllowUnexpectedKeys if expected.len() > actual.len() => { [INFO] [stderr] 306 | | mismatches.push(Mismatch::BodyMismatch { path: path.join("."), [INFO] [stderr] 307 | | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] ... | [INFO] [stderr] 319 | | _ => () [INFO] [stderr] 320 | | } [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] 304 | match *config { [INFO] [stderr] 305 | DiffConfig::AllowUnexpectedKeys if expected.len() > actual.len() => { [INFO] [stderr] 306 | mismatches.push(Mismatch::BodyMismatch { path: path.join("."), [INFO] [stderr] 307 | expected: Some(value_of(&json!(expected)).into()), [INFO] [stderr] 308 | actual: Some(value_of(&json!(&actual)).into()), [INFO] [stderr] 309 | mismatch: format!("Expected a Map with at least {} elements but received {} elements", [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/json.rs:351:24 [INFO] [stderr] | [INFO] [stderr] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:351:48 [INFO] [stderr] | [INFO] [stderr] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [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] 351 | fn compare_lists(path: &Vec, expected: &[Value], actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `expected.clone()` to [INFO] [stderr] | [INFO] [stderr] 356 | let expected_json = Value::Array(expected.to_owned()); [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/json.rs:351:69 [INFO] [stderr] | [INFO] [stderr] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [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] 351 | fn compare_lists(path: &Vec, expected: &Vec, actual: &[Value], config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] help: change `actual.clone()` to [INFO] [stderr] | [INFO] [stderr] 357 | let actual_json = Value::Array(actual.to_owned()); [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/json.rs:358:9 [INFO] [stderr] | [INFO] [stderr] 358 | / match match_values("body", path, matchers.clone(), &expected_json, &actual_json) { [INFO] [stderr] 359 | | Err(messages) => { [INFO] [stderr] 360 | | for message in messages { [INFO] [stderr] 361 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 369 | | Ok(_) => () [INFO] [stderr] 370 | | } [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] 358 | if let Err(messages) = match_values("body", path, matchers.clone(), &expected_json, &actual_json) { [INFO] [stderr] 359 | for message in messages { [INFO] [stderr] 360 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 361 | path: path.join("."), [INFO] [stderr] 362 | expected: Some(expected_json.to_string().into()), [INFO] [stderr] 363 | actual: Some(actual_json.to_string().into()), [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/json.rs:394:31 [INFO] [stderr] | [INFO] [stderr] 394 | fn compare_list_content(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:394:55 [INFO] [stderr] | [INFO] [stderr] 394 | fn compare_list_content(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Value]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:394:76 [INFO] [stderr] | [INFO] [stderr] 394 | fn compare_list_content(path: &Vec, expected: &Vec, actual: &Vec, config: &DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Value]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/json.rs:412:25 [INFO] [stderr] | [INFO] [stderr] 412 | fn compare_values(path: &Vec, expected: &Value, actual: &Value, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/json.rs:420:5 [INFO] [stderr] | [INFO] [stderr] 420 | / match matcher_result { [INFO] [stderr] 421 | | Err(messages) => { [INFO] [stderr] 422 | | for message in messages { [INFO] [stderr] 423 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 431 | | Ok(_) => () [INFO] [stderr] 432 | | } [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] 420 | if let Err(messages) = matcher_result { [INFO] [stderr] 421 | for message in messages { [INFO] [stderr] 422 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 423 | path: path.join("."), [INFO] [stderr] 424 | expected: Some(format!("{}", expected).into()), [INFO] [stderr] 425 | actual: Some(format!("{}", actual).into()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/json.rs:467:9 [INFO] [stderr] | [INFO] [stderr] 467 | / match mismatch { [INFO] [stderr] 468 | | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] 469 | | _ => s!("") [INFO] [stderr] 470 | | } [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] 467 | match *mismatch { [INFO] [stderr] 468 | Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [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/xml.rs:11:28 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn match_xml(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:11:46 [INFO] [stderr] | [INFO] [stderr] 11 | pub fn match_xml(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xml.rs:17:9 [INFO] [stderr] | [INFO] [stderr] 17 | / match expected_result { [INFO] [stderr] 18 | | Err(e) => { [INFO] [stderr] 19 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 20 | | actual: Some(actual.clone().into()), [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] 17 | if let Err(e) = expected_result { [INFO] [stderr] 18 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 19 | actual: Some(actual.clone().into()), [INFO] [stderr] 20 | mismatch: format!("Failed to parse the expected body: '{:?}'", e)}); [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:19:88 [INFO] [stderr] | [INFO] [stderr] 19 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:20:34 [INFO] [stderr] | [INFO] [stderr] 20 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/xml.rs:25:9 [INFO] [stderr] | [INFO] [stderr] 25 | / match actual_result { [INFO] [stderr] 26 | | Err(e) => { [INFO] [stderr] 27 | | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 28 | | actual: Some(actual.clone().into()), [INFO] [stderr] ... | [INFO] [stderr] 31 | | _ => () [INFO] [stderr] 32 | | } [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] 25 | if let Err(e) = actual_result { [INFO] [stderr] 26 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] 27 | actual: Some(actual.clone().into()), [INFO] [stderr] 28 | mismatch: format!("Failed to parse the actual body: '{:?}'", e)}); [INFO] [stderr] 29 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:27:88 [INFO] [stderr] | [INFO] [stderr] 27 | mismatches.push(Mismatch::BodyMismatch { path: s!("$"), expected: Some(expected.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `expected.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [INFO] [stderr] [INFO] [stderr] warning: identical conversion [INFO] [stderr] --> src/xml.rs:28:34 [INFO] [stderr] | [INFO] [stderr] 28 | actual: Some(actual.clone().into()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider removing `.into()`: `actual.clone()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion [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/xml.rs:98:25 [INFO] [stderr] | [INFO] [stderr] 98 | fn path_to_string(path: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: single-character string constant used as pattern [INFO] [stderr] --> src/xml.rs:100:36 [INFO] [stderr] | [INFO] [stderr] 100 | if i > 0 && !p.starts_with("[") { [INFO] [stderr] | ^^^ help: try using a char instead: `'['` [INFO] [stderr] | [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:108:26 [INFO] [stderr] | [INFO] [stderr] 108 | fn compare_element(path: &Vec, expected: &Element, actual: &Element, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:138:29 [INFO] [stderr] | [INFO] [stderr] 138 | fn compare_attributes(path: &Vec, expected: &Element, actual: &Element, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:187:32 [INFO] [stderr] | [INFO] [stderr] 187 | fn desc_children<'a>(children: &Vec>) -> String { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: change this to: `&[ChildOfElement<'a>]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xml.rs:191:27 [INFO] [stderr] | [INFO] [stderr] 191 | fn compare_children(path: &Vec, expected: &Element, actual: &Element, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/xml.rs:197:36 [INFO] [stderr] | [INFO] [stderr] 197 | let expected_example = expected_children[0].clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `expected_children[0]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [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/xml.rs:233:23 [INFO] [stderr] | [INFO] [stderr] 233 | fn compare_text(path: &Vec, expected: &Element, actual: &Element, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xml.rs:252:5 [INFO] [stderr] | [INFO] [stderr] 252 | / match matcher_result { [INFO] [stderr] 253 | | Err(messages) => { [INFO] [stderr] 254 | | for message in messages { [INFO] [stderr] 255 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 263 | | Ok(_) => () [INFO] [stderr] 264 | | } [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] 252 | if let Err(messages) = matcher_result { [INFO] [stderr] 253 | for message in messages { [INFO] [stderr] 254 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 255 | path: path_to_string(path) + ".#text", [INFO] [stderr] 256 | expected: Some(expected_text.clone().into()), [INFO] [stderr] 257 | actual: Some(actual_text.clone().into()), [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/xml.rs:267:24 [INFO] [stderr] | [INFO] [stderr] 267 | fn compare_value(path: &Vec, expected: &String, actual: &String, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/xml.rs:267:48 [INFO] [stderr] | [INFO] [stderr] 267 | fn compare_value(path: &Vec, expected: &String, actual: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/xml.rs:267:65 [INFO] [stderr] | [INFO] [stderr] 267 | fn compare_value(path: &Vec, expected: &String, actual: &String, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/xml.rs:275:5 [INFO] [stderr] | [INFO] [stderr] 275 | / match matcher_result { [INFO] [stderr] 276 | | Err(messages) => { [INFO] [stderr] 277 | | for message in messages { [INFO] [stderr] 278 | | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] ... | [INFO] [stderr] 286 | | Ok(_) => () [INFO] [stderr] 287 | | } [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] 275 | if let Err(messages) = matcher_result { [INFO] [stderr] 276 | for message in messages { [INFO] [stderr] 277 | mismatches.push(Mismatch::BodyMismatch { [INFO] [stderr] 278 | path: path_to_string(path), [INFO] [stderr] 279 | expected: Some(expected.clone().into()), [INFO] [stderr] 280 | actual: Some(actual.clone().into()), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/xml.rs:335:9 [INFO] [stderr] | [INFO] [stderr] 335 | / match mismatch { [INFO] [stderr] 336 | | &Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] 337 | | _ => s!("") [INFO] [stderr] 338 | | } [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] 335 | match *mismatch { [INFO] [stderr] 336 | Mismatch::BodyMismatch{ path: _, expected: _, actual: _, mismatch: ref m } => m.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/xml.rs:706:20 [INFO] [stderr] | [INFO] [stderr] 706 | match_xml(&expected.clone().into(), &actual.clone().into(), DiffConfig::AllowUnexpectedKeys, &mut mismatches, &MatchingRules::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::clone_double_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 706 | match_xml(&&(*expected).clone().into(), &actual.clone().into(), DiffConfig::AllowUnexpectedKeys, &mut mismatches, &MatchingRules::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 706 | match_xml(&&str::clone(expected).into(), &actual.clone().into(), DiffConfig::AllowUnexpectedKeys, &mut mismatches, &MatchingRules::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/xml.rs:706:46 [INFO] [stderr] | [INFO] [stderr] 706 | match_xml(&expected.clone().into(), &actual.clone().into(), DiffConfig::AllowUnexpectedKeys, &mut mismatches, &MatchingRules::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 706 | match_xml(&expected.clone().into(), &&(*actual).clone().into(), DiffConfig::AllowUnexpectedKeys, &mut mismatches, &MatchingRules::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 706 | match_xml(&expected.clone().into(), &&str::clone(actual).into(), DiffConfig::AllowUnexpectedKeys, &mut mismatches, &MatchingRules::default()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:369:56 [INFO] [stderr] | [INFO] [stderr] 369 | fn strip_whitespace<'a, T: FromIterator<&'a str>>(val: &'a String, split_by: &'a str) -> T { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/lib.rs:370:33 [INFO] [stderr] | [INFO] [stderr] 370 | val.split(split_by).map(|v| v.trim().clone() ).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_double_ref [INFO] [stderr] help: try dereferencing it [INFO] [stderr] | [INFO] [stderr] 370 | val.split(split_by).map(|v| &(*v.trim()).clone() ).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 370 | val.split(split_by).map(|v| &str::clone(v.trim()) ).collect() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:374:31 [INFO] [stderr] | [INFO] [stderr] 374 | static ref BODY_MATCHERS: [(Regex, fn(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | _______________________________^ [INFO] [stderr] 375 | | mismatches: &mut Vec, matchers: &MatchingRules)); 3] = [ [INFO] [stderr] | |__________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:374:31 [INFO] [stderr] | [INFO] [stderr] 374 | static ref BODY_MATCHERS: [(Regex, fn(expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | _______________________________^ [INFO] [stderr] 375 | | mismatches: &mut Vec, matchers: &MatchingRules)); 3] = [ [INFO] [stderr] | |__________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:455:9 [INFO] [stderr] | [INFO] [stderr] 455 | / match self { [INFO] [stderr] 456 | | &Mismatch::MethodMismatch { expected: ref e, actual: ref a } => { [INFO] [stderr] 457 | | json!({ [INFO] [stderr] 458 | | s!("type") : json!("MethodMismatch"), [INFO] [stderr] ... | [INFO] [stderr] 517 | | } [INFO] [stderr] 518 | | } [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] 455 | match *self { [INFO] [stderr] 456 | Mismatch::MethodMismatch { expected: ref e, actual: ref a } => { [INFO] [stderr] 457 | json!({ [INFO] [stderr] 458 | s!("type") : json!("MethodMismatch"), [INFO] [stderr] 459 | s!("expected") : json!(e), [INFO] [stderr] 460 | s!("actual") : json!(a) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:507:38 [INFO] [stderr] | [INFO] [stderr] 507 | s!("expected") : match e { [INFO] [stderr] | ______________________________________^ [INFO] [stderr] 508 | | &Some(ref v) => json!(v), [INFO] [stderr] 509 | | &None => serde_json::Value::Null [INFO] [stderr] 510 | | }, [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] 507 | s!("expected") : match *e { [INFO] [stderr] 508 | Some(ref v) => json!(v), [INFO] [stderr] 509 | None => serde_json::Value::Null [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:511:36 [INFO] [stderr] | [INFO] [stderr] 511 | s!("actual") : match a { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 512 | | &Some(ref v) => json!(v), [INFO] [stderr] 513 | | &None => serde_json::Value::Null [INFO] [stderr] 514 | | }, [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] 511 | s!("actual") : match *a { [INFO] [stderr] 512 | Some(ref v) => json!(v), [INFO] [stderr] 513 | None => serde_json::Value::Null [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/lib.rs:622:29 [INFO] [stderr] | [INFO] [stderr] 622 | pub fn match_text(expected: &Vec, actual: &Vec, mismatches: &mut Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:622:47 [INFO] [stderr] | [INFO] [stderr] 622 | pub fn match_text(expected: &Vec, actual: &Vec, mismatches: &mut Vec) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:646:5 [INFO] [stderr] | [INFO] [stderr] 646 | / match matcher_result { [INFO] [stderr] 647 | | Err(messages) => { [INFO] [stderr] 648 | | for message in messages { [INFO] [stderr] 649 | | mismatches.push(Mismatch::PathMismatch { [INFO] [stderr] ... | [INFO] [stderr] 655 | | Ok(_) => () [INFO] [stderr] 656 | | } [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] 646 | if let Err(messages) = matcher_result { [INFO] [stderr] 647 | for message in messages { [INFO] [stderr] 648 | mismatches.push(Mismatch::PathMismatch { [INFO] [stderr] 649 | expected: expected.clone(), [INFO] [stderr] 650 | actual: actual.clone(), mismatch: message.clone() [INFO] [stderr] 651 | }) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:659:39 [INFO] [stderr] | [INFO] [stderr] 659 | fn compare_query_parameter_value(key: &String, expected: &String, actual: &String, index: usize, [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] 659 | fn compare_query_parameter_value(key: &str, expected: &String, actual: &String, index: usize, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 661 | let path = vec![s!("$"), key.to_string(), format!("{}", index)]; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:659:58 [INFO] [stderr] | [INFO] [stderr] 659 | fn compare_query_parameter_value(key: &String, expected: &String, actual: &String, index: usize, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:659:75 [INFO] [stderr] | [INFO] [stderr] 659 | fn compare_query_parameter_value(key: &String, expected: &String, actual: &String, index: usize, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:667:5 [INFO] [stderr] | [INFO] [stderr] 667 | / match matcher_result { [INFO] [stderr] 668 | | Err(messages) => { [INFO] [stderr] 669 | | for message in messages { [INFO] [stderr] 670 | | mismatches.push(Mismatch::QueryMismatch { [INFO] [stderr] ... | [INFO] [stderr] 678 | | Ok(_) => () [INFO] [stderr] 679 | | } [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] 667 | if let Err(messages) = matcher_result { [INFO] [stderr] 668 | for message in messages { [INFO] [stderr] 669 | mismatches.push(Mismatch::QueryMismatch { [INFO] [stderr] 670 | parameter: key.clone(), [INFO] [stderr] 671 | expected: expected.clone(), [INFO] [stderr] 672 | actual: actual.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:682:40 [INFO] [stderr] | [INFO] [stderr] 682 | fn compare_query_parameter_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:682:59 [INFO] [stderr] | [INFO] [stderr] 682 | fn compare_query_parameter_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:682:81 [INFO] [stderr] | [INFO] [stderr] 682 | fn compare_query_parameter_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:696:28 [INFO] [stderr] | [INFO] [stderr] 696 | fn match_query_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:696:47 [INFO] [stderr] | [INFO] [stderr] 696 | fn match_query_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:696:69 [INFO] [stderr] | [INFO] [stderr] 696 | fn match_query_values(key: &String, expected: &Vec, actual: &Vec, [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:739:37 [INFO] [stderr] | [INFO] [stderr] 739 | pub fn match_query(expected: Option>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 739 | pub fn match_query(expected: Option, S>>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:740:20 [INFO] [stderr] | [INFO] [stderr] 740 | actual: Option>>, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 739 | pub fn match_query(expected: Option>>, [INFO] [stderr] 740 | actual: Option, S>>, mismatches: &mut Vec, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:761:39 [INFO] [stderr] | [INFO] [stderr] 761 | parameters.iter().map(|v| v.split("=").map(|p| p.trim()).collect::>()) [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:768:37 [INFO] [stderr] | [INFO] [stderr] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:768:54 [INFO] [stderr] | [INFO] [stderr] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:768:103 [INFO] [stderr] | [INFO] [stderr] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &String) { [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] 768 | fn match_parameter_header(expected: &String, actual: &String, mismatches: &mut Vec, header: &str) { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `header.clone()` to [INFO] [stderr] | [INFO] [stderr] 773 | let header_mismatch = Mismatch::HeaderMismatch { key: header.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:774:19 [INFO] [stderr] | [INFO] [stderr] 774 | expected: format!("{}", expected), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `expected.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/lib.rs:775:17 [INFO] [stderr] | [INFO] [stderr] 775 | actual: format!("{}", actual), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `actual.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/lib.rs:784:26 [INFO] [stderr] | [INFO] [stderr] 784 | if v != *actual_parameter_map.get(&k).unwrap() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&actual_parameter_map[&k]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:796:28 [INFO] [stderr] | [INFO] [stderr] 796 | fn match_header_value(key: &String, expected: &String, actual: &String, mismatches: &mut Vec, [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] 796 | fn match_header_value(key: &str, expected: &String, actual: &String, mismatches: &mut Vec, [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `key.clone()` to [INFO] [stderr] | [INFO] [stderr] 798 | let path = vec![s!("$"), key.to_string()]; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:796:47 [INFO] [stderr] | [INFO] [stderr] 796 | fn match_header_value(key: &String, expected: &String, actual: &String, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:796:64 [INFO] [stderr] | [INFO] [stderr] 796 | fn match_header_value(key: &String, expected: &String, actual: &String, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:810:5 [INFO] [stderr] | [INFO] [stderr] 810 | / match matcher_result { [INFO] [stderr] 811 | | Err(messages) => { [INFO] [stderr] 812 | | for message in messages { [INFO] [stderr] 813 | | mismatches.push(Mismatch::HeaderMismatch { [INFO] [stderr] ... | [INFO] [stderr] 821 | | Ok(_) => () [INFO] [stderr] 822 | | } [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] 810 | if let Err(messages) = matcher_result { [INFO] [stderr] 811 | for message in messages { [INFO] [stderr] 812 | mismatches.push(Mismatch::HeaderMismatch { [INFO] [stderr] 813 | key: key.clone(), [INFO] [stderr] 814 | expected: expected.clone(), [INFO] [stderr] 815 | actual: actual.clone(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/lib.rs:825:49 [INFO] [stderr] | [INFO] [stderr] 825 | fn find_entry(map: &HashMap, key: &String) -> Option<(String, T)> where T: Clone { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:846:39 [INFO] [stderr] | [INFO] [stderr] 846 | pub fn match_headers(expected: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 846 | pub fn match_headers(expected: Option>, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: parameter of type `HashMap` should be generalized over different hashers [INFO] [stderr] --> src/lib.rs:847:20 [INFO] [stderr] | [INFO] [stderr] 847 | actual: Option>, mismatches: &mut Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#implicit_hasher [INFO] [stderr] help: consider adding a type parameter [INFO] [stderr] | [INFO] [stderr] 846 | pub fn match_headers(expected: Option>, [INFO] [stderr] 847 | actual: Option>, mismatches: &mut Vec, [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/lib.rs:862:47 [INFO] [stderr] | [INFO] [stderr] 862 | fn compare_bodies(mimetype: String, expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/lib.rs:862:65 [INFO] [stderr] | [INFO] [stderr] 862 | fn compare_bodies(mimetype: String, expected: &Vec, actual: &Vec, config: DiffConfig, [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:971:9 [INFO] [stderr] | [INFO] [stderr] 971 | / match generator.generate_value(&request.path) { [INFO] [stderr] 972 | | Some(v) => request.path = v, [INFO] [stderr] 973 | | None => () [INFO] [stderr] 974 | | } [INFO] [stderr] | |_________^ help: try this: `if let Some(v) = generator.generate_value(&request.path) { request.path = v }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:977:9 [INFO] [stderr] | [INFO] [stderr] 977 | / match request.headers { [INFO] [stderr] 978 | | Some(ref mut headers) => if headers.contains_key(key) { [INFO] [stderr] 979 | | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 980 | | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] ... | [INFO] [stderr] 984 | | None => () [INFO] [stderr] 985 | | } [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] 977 | if let Some(ref mut headers) = request.headers { if headers.contains_key(key) { [INFO] [stderr] 978 | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 979 | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] 980 | None => None [INFO] [stderr] 981 | }; [INFO] [stderr] 982 | } } [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/lib.rs:988:7 [INFO] [stderr] | [INFO] [stderr] 988 | / match request.query { [INFO] [stderr] 989 | | Some(ref mut parameters) => match parameters.get_mut(key) { [INFO] [stderr] 990 | | Some(parameter) => { [INFO] [stderr] 991 | | let mut generated = parameter.clone(); [INFO] [stderr] ... | [INFO] [stderr] 1002 | | None => () [INFO] [stderr] 1003 | | } [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] 988 | if let Some(ref mut parameters) = request.query { match parameters.get_mut(key) { [INFO] [stderr] 989 | Some(parameter) => { [INFO] [stderr] 990 | let mut generated = parameter.clone(); [INFO] [stderr] 991 | for (index, val) in parameter.iter().enumerate() { [INFO] [stderr] 992 | match generator.generate_value(val) { [INFO] [stderr] 993 | Some(v) => generated[index] = v, [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/lib.rs:989:37 [INFO] [stderr] | [INFO] [stderr] 989 | Some(ref mut parameters) => match parameters.get_mut(key) { [INFO] [stderr] | _____________________________________^ [INFO] [stderr] 990 | | Some(parameter) => { [INFO] [stderr] 991 | | let mut generated = parameter.clone(); [INFO] [stderr] 992 | | for (index, val) in parameter.iter().enumerate() { [INFO] [stderr] ... | [INFO] [stderr] 1000 | | None => () [INFO] [stderr] 1001 | | }, [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] 989 | Some(ref mut parameters) => if let Some(parameter) = parameters.get_mut(key) { [INFO] [stderr] 990 | let mut generated = parameter.clone(); [INFO] [stderr] 991 | for (index, val) in parameter.iter().enumerate() { [INFO] [stderr] 992 | match generator.generate_value(val) { [INFO] [stderr] 993 | Some(v) => generated[index] = v, [INFO] [stderr] 994 | None => () [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/lib.rs:993:15 [INFO] [stderr] | [INFO] [stderr] 993 | / match generator.generate_value(val) { [INFO] [stderr] 994 | | Some(v) => generated[index] = v, [INFO] [stderr] 995 | | None => () [INFO] [stderr] 996 | | }; [INFO] [stderr] | |_______________^ help: try this: `if let Some(v) = generator.generate_value(val) { generated[index] = v }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1014:5 [INFO] [stderr] | [INFO] [stderr] 1014 | / match generator.generate_value(&response.status) { [INFO] [stderr] 1015 | | Some(v) => response.status = v, [INFO] [stderr] 1016 | | None => () [INFO] [stderr] 1017 | | } [INFO] [stderr] | |_____^ help: try this: `if let Some(v) = generator.generate_value(&response.status) { response.status = v }` [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: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:1020:5 [INFO] [stderr] | [INFO] [stderr] 1020 | / match response.headers { [INFO] [stderr] 1021 | | Some(ref mut headers) => if headers.contains_key(key) { [INFO] [stderr] 1022 | | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 1023 | | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] ... | [INFO] [stderr] 1027 | | None => () [INFO] [stderr] 1028 | | } [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] 1020 | if let Some(ref mut headers) = response.headers { if headers.contains_key(key) { [INFO] [stderr] 1021 | match generator.generate_value(&headers.get(key).unwrap().clone()) { [INFO] [stderr] 1022 | Some(v) => headers.insert(key.clone(), v), [INFO] [stderr] 1023 | None => None [INFO] [stderr] 1024 | }; [INFO] [stderr] 1025 | } } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/tests.rs:532:38 [INFO] [stderr] | [INFO] [stderr] 532 | let result = s.trim() == stripped.join(cs).to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `stripped.join(cs)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/generator_tests.rs:34:11 [INFO] [stderr] | [INFO] [stderr] 34 | expect!(headers.get("A").unwrap()).to_not(be_equal_to("a")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&headers["A"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/generator_tests.rs:63:11 [INFO] [stderr] | [INFO] [stderr] 63 | expect!(headers.get("A").unwrap()).to_not(be_equal_to("a")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&headers["A"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/generator_tests.rs:78:20 [INFO] [stderr] | [INFO] [stderr] 78 | let query_val = &query.get("A").unwrap()[0]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&query["A"]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] error: aborting due to 10 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `pact_matching`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "77a74a782a4a79af62d4e30d3566a8e1ae427c895859461b1d71d297cf50edd1"` [INFO] running `"docker" "rm" "-f" "77a74a782a4a79af62d4e30d3566a8e1ae427c895859461b1d71d297cf50edd1"` [INFO] [stdout] 77a74a782a4a79af62d4e30d3566a8e1ae427c895859461b1d71d297cf50edd1