[INFO] crate pact_verifier 0.4.0 is already in cache [INFO] extracting crate pact_verifier 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/pact_verifier/0.4.0 [INFO] extracting crate pact_verifier 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pact_verifier/0.4.0 [INFO] validating manifest of pact_verifier-0.4.0 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_verifier-0.4.0 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_verifier-0.4.0 [INFO] finished frobbing pact_verifier-0.4.0 [INFO] frobbed toml for pact_verifier-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/pact_verifier/0.4.0/Cargo.toml [INFO] started frobbing pact_verifier-0.4.0 [INFO] finished frobbing pact_verifier-0.4.0 [INFO] frobbed toml for pact_verifier-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/pact_verifier/0.4.0/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_verifier-0.4.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-6/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/pact_verifier/0.4.0:/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] 4a4d16c07d62d4ddd9e076139f65e4c94e6931724ea927f4237218add1ceb5f1 [INFO] running `"docker" "start" "-a" "4a4d16c07d62d4ddd9e076139f65e4c94e6931724ea927f4237218add1ceb5f1"` [INFO] [stderr] Checking indextree v1.3.0 [INFO] [stderr] Checking p-macro v0.2.0 [INFO] [stderr] Checking itertools v0.5.10 [INFO] [stderr] Checking semver v0.7.0 [INFO] [stderr] Checking sxd-document v0.2.6 [INFO] [stderr] Checking difference v0.4.1 [INFO] [stderr] Checking base64 v0.7.0 [INFO] [stderr] Compiling expectest v0.5.1 [INFO] [stderr] Checking pact_matching v0.4.5 [INFO] [stderr] Checking pact_mock_server v0.4.0 [INFO] [stderr] Checking pact_consumer v0.4.0 [INFO] [stderr] Checking pact_verifier v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/pact_broker.rs:196:24 [INFO] [stderr] | [INFO] [stderr] 196 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 197 | | if response.status == StatusCode::NotFound { [INFO] [stderr] 198 | | Err(PactBrokerError::NotFound(format!("Request to pact broker path '{}' failed: {}. URL: '{}'", path, [INFO] [stderr] 199 | | response.status, self.url))) [INFO] [stderr] ... | [INFO] [stderr] 203 | | } [INFO] [stderr] 204 | | } [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] 196 | } else if response.status == StatusCode::NotFound { [INFO] [stderr] 197 | Err(PactBrokerError::NotFound(format!("Request to pact broker path '{}' failed: {}. URL: '{}'", path, [INFO] [stderr] 198 | response.status, self.url))) [INFO] [stderr] 199 | } else { [INFO] [stderr] 200 | Err(PactBrokerError::IoError(format!("Request to pact broker path '{}' failed: {}. URL: '{}'", path, [INFO] [stderr] 201 | response.status, self.url))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/provider_client.rs:15:25 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn join_paths(base: &String, path: String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: single-character string constant used as pattern [INFO] [stderr] --> src/provider_client.rs:16:52 [INFO] [stderr] | [INFO] [stderr] 16 | let mut full_path = s!(base.trim_right_matches("/")); [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: single-character string constant used as pattern [INFO] [stderr] --> src/provider_client.rs:18:47 [INFO] [stderr] | [INFO] [stderr] 18 | full_path.push_str(path.trim_left_matches("/")); [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/provider_client.rs:38:27 [INFO] [stderr] | [INFO] [stderr] 38 | fn make_request(base_url: &String, request: &Request, client: &Client) -> 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: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/pact_broker.rs:196:24 [INFO] [stderr] | [INFO] [stderr] 196 | } else { [INFO] [stderr] | ________________________^ [INFO] [stderr] 197 | | if response.status == StatusCode::NotFound { [INFO] [stderr] 198 | | Err(PactBrokerError::NotFound(format!("Request to pact broker path '{}' failed: {}. URL: '{}'", path, [INFO] [stderr] 199 | | response.status, self.url))) [INFO] [stderr] ... | [INFO] [stderr] 203 | | } [INFO] [stderr] 204 | | } [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] 196 | } else if response.status == StatusCode::NotFound { [INFO] [stderr] 197 | Err(PactBrokerError::NotFound(format!("Request to pact broker path '{}' failed: {}. URL: '{}'", path, [INFO] [stderr] 198 | response.status, self.url))) [INFO] [stderr] 199 | } else { [INFO] [stderr] 200 | Err(PactBrokerError::IoError(format!("Request to pact broker path '{}' failed: {}. URL: '{}'", path, [INFO] [stderr] 201 | response.status, self.url))) [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pact_broker.rs:15:72 [INFO] [stderr] | [INFO] [stderr] 15 | fn is_true(object: &serde_json::Map, field: &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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:17:23 [INFO] [stderr] | [INFO] [stderr] 17 | Some(json) => match json { [INFO] [stderr] | _______________________^ [INFO] [stderr] 18 | | &serde_json::Value::Bool(b) => b, [INFO] [stderr] 19 | | _ => false [INFO] [stderr] 20 | | }, [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] 17 | Some(json) => match *json { [INFO] [stderr] 18 | serde_json::Value::Bool(b) => b, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / match json { [INFO] [stderr] 27 | | &serde_json::Value::String(ref s) => s.clone(), [INFO] [stderr] 28 | | _ => format!("{}", json) [INFO] [stderr] 29 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 26 | match *json { [INFO] [stderr] 27 | serde_json::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/pact_broker.rs:53:70 [INFO] [stderr] | [INFO] [stderr] 53 | fn find_entry(map: &serde_json::Map, key: &String) -> Option<(String, serde_json::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 don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:71:23 [INFO] [stderr] | [INFO] [stderr] 71 | let message = match self { [INFO] [stderr] | _______________________^ [INFO] [stderr] 72 | | &PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 73 | | &PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 74 | | &PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 75 | | &PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 76 | | &PactBrokerError::UrlError(ref s) => s.clone() [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] 71 | let message = match *self { [INFO] [stderr] 72 | PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 73 | PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 74 | PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 75 | PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 76 | PactBrokerError::UrlError(ref s) => s.clone() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:84:23 [INFO] [stderr] | [INFO] [stderr] 84 | let message = match self { [INFO] [stderr] | _______________________^ [INFO] [stderr] 85 | | &PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 86 | | &PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 87 | | &PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 88 | | &PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 89 | | &PactBrokerError::UrlError(ref s) => s.clone() [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 84 | let message = match *self { [INFO] [stderr] 85 | PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 86 | PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 87 | PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 88 | PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 89 | PactBrokerError::UrlError(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/pact_broker.rs:104:28 [INFO] [stderr] | [INFO] [stderr] 104 | pub fn from_json(link: &String, link_data: &serde_json::Map) -> Link { [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] 104 | pub fn from_json(link: &str, link_data: &serde_json::Map) -> Link { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `link.clone()` to [INFO] [stderr] | [INFO] [stderr] 106 | name: link.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/pact_broker.rs:141:26 [INFO] [stderr] | [INFO] [stderr] 141 | .ok_or(PactBrokerError::LinkError(format!("Link is malformed, expected an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] | __________________________^ [INFO] [stderr] 142 | | link_data, self.url, link))), [INFO] [stderr] | |________________________________________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 141 | .ok_or_else(|| PactBrokerError::LinkError(format!("Link is malformed, expected an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] 142 | link_data, self.url, link))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/pact_broker.rs:162:31 [INFO] [stderr] | [INFO] [stderr] 162 | link.href.clone().ok_or( [INFO] [stderr] | _______________________________^ [INFO] [stderr] 163 | | PactBrokerError::LinkError(format!("Link is malformed, there is no href. URL: '{}', LINK: '{}'", [INFO] [stderr] 164 | | self.url, link.name))) [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 162 | link.href.clone().ok_or_else(|| PactBrokerError::LinkError(format!("Link is malformed, there is no href. URL: '{}', LINK: '{}'", [INFO] [stderr] 163 | self.url, link.name))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pact_broker.rs:166:82 [INFO] [stderr] | [INFO] [stderr] 166 | let base = Url::parse(&self.url).map_err(|err| PactBrokerError::UrlError(format!("{}", err.description())))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.description().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: useless use of `format!` [INFO] [stderr] --> src/pact_broker.rs:167:80 [INFO] [stderr] | [INFO] [stderr] 167 | let url = base.join(&link_url).map_err(|err| PactBrokerError::UrlError(format!("{}", err.description())))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.description().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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/pact_broker.rs:248:26 [INFO] [stderr] | [INFO] [stderr] 248 | .ok_or(PactBrokerError::LinkError(format!("Link is malformed, expcted an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] | __________________________^ [INFO] [stderr] 249 | | link_data, self.url, link))), [INFO] [stderr] | |________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 248 | .ok_or_else(|| PactBrokerError::LinkError(format!("Link is malformed, expcted an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] 249 | link_data, self.url, link))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:243:75 [INFO] [stderr] | [INFO] [stderr] 243 | .map(|link_data| link_data.iter().map(|link_json| match link_json { [INFO] [stderr] | ___________________________________________________________________________^ [INFO] [stderr] 244 | | &serde_json::Value::Object(ref data) => Link::from_json(&link, data), [INFO] [stderr] 245 | | &serde_json::Value::String(ref s) => Link { name: link.clone(), href: Some(s.clone()), templated: false }, [INFO] [stderr] 246 | | _ => Link { name: link.clone(), href: Some(link_json.to_string()), templated: false } [INFO] [stderr] 247 | | }).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] 243 | .map(|link_data| link_data.iter().map(|link_json| match *link_json { [INFO] [stderr] 244 | serde_json::Value::Object(ref data) => Link::from_json(&link, data), [INFO] [stderr] 245 | serde_json::Value::String(ref s) => Link { name: link.clone(), href: Some(s.clone()), templated: false }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pact_broker.rs:260:44 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn fetch_pacts_from_broker(broker_url: &String, provider_name: &String) -> Result>, PactBrokerError> { [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] 260 | pub fn fetch_pacts_from_broker(broker_url: &str, provider_name: &String) -> Result>, PactBrokerError> { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `broker_url.clone()` to [INFO] [stderr] | [INFO] [stderr] 261 | let mut client = HALClient{ url: broker_url.to_string(), .. HALClient::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/pact_broker.rs:260:68 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn fetch_pacts_from_broker(broker_url: &String, provider_name: &String) -> Result>, PactBrokerError> { [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: large size difference between variants [INFO] [stderr] --> src/lib.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | Mismatches(Vec, Response, Response), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/lib.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | Mismatches(Vec, Response, Response), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:102:7 [INFO] [stderr] | [INFO] [stderr] 102 | let ref expected_response = interaction.response; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^------------------------ help: try: `let expected_response = &interaction.response;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / match header_results { [INFO] [stderr] 197 | | Some(header_results) => { [INFO] [stderr] 198 | | println!(" includes headers"); [INFO] [stderr] 199 | | for (key, value, result) in header_results { [INFO] [stderr] ... | [INFO] [stderr] 204 | | None => () [INFO] [stderr] 205 | | } [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] 196 | if let Some(header_results) = header_results { [INFO] [stderr] 197 | println!(" includes headers"); [INFO] [stderr] 198 | for (key, value, result) in header_results { [INFO] [stderr] 199 | println!(" \"{}\" with value \"{}\" ({})", Style::new().bold().paint(key), [INFO] [stderr] 200 | Style::new().bold().paint(value), result); [INFO] [stderr] 201 | } [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:224:72 [INFO] [stderr] | [INFO] [stderr] 224 | fn display_body_mismatch(expected: &Response, actual: &Response, path: &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/lib.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | / match expected.content_type_enum() { [INFO] [stderr] 226 | | DetectedContentType::Json => println!("{}", pact_matching::json::display_diff(&expected.body.str_value().to_string(), [INFO] [stderr] 227 | | &actual.body.str_value().to_string(), path)), [INFO] [stderr] 228 | | _ => () [INFO] [stderr] 229 | | } [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] 225 | if let DetectedContentType::Json = expected.content_type_enum() { println!("{}", pact_matching::json::display_diff(&expected.body.str_value().to_string(), [INFO] [stderr] 226 | &actual.body.str_value().to_string(), path)) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | / match self { [INFO] [stderr] 249 | | &FilterInfo::Description(_) => true, [INFO] [stderr] 250 | | &FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] 251 | | _ => false [INFO] [stderr] 252 | | } [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] 248 | match *self { [INFO] [stderr] 249 | FilterInfo::Description(_) => true, [INFO] [stderr] 250 | FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:257:9 [INFO] [stderr] | [INFO] [stderr] 257 | / match self { [INFO] [stderr] 258 | | &FilterInfo::State(_) => true, [INFO] [stderr] 259 | | &FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] 260 | | _ => false [INFO] [stderr] 261 | | } [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] 257 | match *self { [INFO] [stderr] 258 | FilterInfo::State(_) => true, [INFO] [stderr] 259 | FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:266:9 [INFO] [stderr] | [INFO] [stderr] 266 | / match self { [INFO] [stderr] 267 | | &FilterInfo::State(ref s) => s.clone(), [INFO] [stderr] 268 | | &FilterInfo::DescriptionAndState(_, ref s) => s.clone(), [INFO] [stderr] 269 | | _ => s!("") [INFO] [stderr] 270 | | } [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] 266 | match *self { [INFO] [stderr] 267 | FilterInfo::State(ref s) => s.clone(), [INFO] [stderr] 268 | FilterInfo::DescriptionAndState(_, ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:275:9 [INFO] [stderr] | [INFO] [stderr] 275 | / match self { [INFO] [stderr] 276 | | &FilterInfo::Description(ref s) => s.clone(), [INFO] [stderr] 277 | | &FilterInfo::DescriptionAndState(ref s, _) => s.clone(), [INFO] [stderr] 278 | | _ => s!("") [INFO] [stderr] 279 | | } [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] 275 | match *self { [INFO] [stderr] 276 | FilterInfo::Description(ref s) => s.clone(), [INFO] [stderr] 277 | FilterInfo::DescriptionAndState(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/lib.rs:323:32 [INFO] [stderr] | [INFO] [stderr] 323 | fn filter_consumers(consumers: &Vec, res: &Result) -> 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/lib.rs:329:16 [INFO] [stderr] | [INFO] [stderr] 329 | consumers: &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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | / match s { [INFO] [stderr] 332 | | &PactSource::File(ref file) => vec![Pact::read_pact(Path::new(&file)) [INFO] [stderr] 333 | | .map_err(|err| format!("Failed to load pact '{}' - {}", file, err))], [INFO] [stderr] 334 | | &PactSource::Dir(ref dir) => match walkdir(Path::new(dir)) { [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [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] 331 | match *s { [INFO] [stderr] 332 | PactSource::File(ref file) => vec![Pact::read_pact(Path::new(&file)) [INFO] [stderr] 333 | .map_err(|err| format!("Failed to load pact '{}' - {}", file, err))], [INFO] [stderr] 334 | PactSource::Dir(ref dir) => match walkdir(Path::new(dir)) { [INFO] [stderr] 335 | Ok(ref pacts) => pacts.iter().map(|p| { [INFO] [stderr] 336 | match p { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:336:25 [INFO] [stderr] | [INFO] [stderr] 336 | / match p { [INFO] [stderr] 337 | | &Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 338 | | &Err(ref err) => Err(format!("Failed to load pact from '{}' - {}", dir, err)) [INFO] [stderr] 339 | | } [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] 336 | match *p { [INFO] [stderr] 337 | Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 338 | Err(ref err) => Err(format!("Failed to load pact from '{}' - {}", dir, err)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:347:25 [INFO] [stderr] | [INFO] [stderr] 347 | / match p { [INFO] [stderr] 348 | | &Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 349 | | &Err(ref err) => Err(format!("Failed to load pact from '{}' - {:?}", broker_url, err)) [INFO] [stderr] 350 | | } [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] 347 | match *p { [INFO] [stderr] 348 | Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 349 | Err(ref err) => Err(format!("Failed to load pact from '{}' - {:?}", broker_url, err)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:396:45 [INFO] [stderr] | [INFO] [stderr] 396 | Err(ref err) => match err { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 397 | | &MismatchResult::Error(ref err_des) => { [INFO] [stderr] 398 | | println!(" {}", Red.paint(format!("Request Failed - {}", err_des))); [INFO] [stderr] 399 | | all_errors.push((description, MismatchResult::Error(err_des.clone()))); [INFO] [stderr] ... | [INFO] [stderr] 442 | | } [INFO] [stderr] 443 | | } [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] 396 | Err(ref err) => match *err { [INFO] [stderr] 397 | MismatchResult::Error(ref err_des) => { [INFO] [stderr] 398 | println!(" {}", Red.paint(format!("Request Failed - {}", err_des))); [INFO] [stderr] 399 | all_errors.push((description, MismatchResult::Error(err_des.clone()))); [INFO] [stderr] 400 | verify_provider_result = false; [INFO] [stderr] 401 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:404:107 [INFO] [stderr] | [INFO] [stderr] 404 | let status_result = if mismatches.iter().any(|m| m.mismatch_type() == s!("StatusMismatch")) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [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] = 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: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/lib.rs:412:97 [INFO] [stderr] | [INFO] [stderr] 412 | (k.clone(), v.clone(), if mismatches.iter().any(|m| { [INFO] [stderr] | _________________________________________________________________________________________________^ [INFO] [stderr] 413 | | match m { [INFO] [stderr] 414 | | &Mismatch::HeaderMismatch{ ref key, .. } => k == key, [INFO] [stderr] 415 | | _ => false [INFO] [stderr] 416 | | } [INFO] [stderr] 417 | | }) { [INFO] [stderr] | |_____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:413:49 [INFO] [stderr] | [INFO] [stderr] 413 | / match m { [INFO] [stderr] 414 | | &Mismatch::HeaderMismatch{ ref key, .. } => k == key, [INFO] [stderr] 415 | | _ => false [INFO] [stderr] 416 | | } [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] 413 | match *m { [INFO] [stderr] 414 | Mismatch::HeaderMismatch{ ref key, .. } => k == key, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:426:105 [INFO] [stderr] | [INFO] [stderr] 426 | let body_result = if mismatches.iter().any(|m| m.mismatch_type() == s!("BodyMismatch") || [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [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: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:427:62 [INFO] [stderr] | [INFO] [stderr] 427 | m.mismatch_type() == s!("BodyTypeMismatch")) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [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:450:62 [INFO] [stderr] | [INFO] [stderr] 450 | error!("Failed to load pact - {}", Red.paint(format!("{}", err))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.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:452:83 [INFO] [stderr] | [INFO] [stderr] 452 | all_errors.push((s!("Failed to load pact"), MismatchResult::Error(format!("{}", err)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:461:13 [INFO] [stderr] | [INFO] [stderr] 461 | / match mismatch { [INFO] [stderr] 462 | | &MismatchResult::Error(ref err) => println!("{}) {} - {}\n", i, description, err), [INFO] [stderr] 463 | | &MismatchResult::Mismatches(ref mismatch, ref expected_response, ref actual_response) => { [INFO] [stderr] 464 | | let mismatch = mismatch.first().unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 472 | | } [INFO] [stderr] 473 | | } [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] 461 | match *mismatch { [INFO] [stderr] 462 | MismatchResult::Error(ref err) => println!("{}) {} - {}\n", i, description, err), [INFO] [stderr] 463 | MismatchResult::Mismatches(ref mismatch, ref expected_response, ref actual_response) => { [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:468:21 [INFO] [stderr] | [INFO] [stderr] 468 | / match mismatch { [INFO] [stderr] 469 | | &Mismatch::BodyMismatch{ref path, ..} => display_body_mismatch(expected_response, actual_response, path), [INFO] [stderr] 470 | | _ => () [INFO] [stderr] 471 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let &Mismatch::BodyMismatch{ref path, ..} = mismatch { display_body_mismatch(expected_response, actual_response, path) }` [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/lib.rs:468:21 [INFO] [stderr] | [INFO] [stderr] 468 | / match mismatch { [INFO] [stderr] 469 | | &Mismatch::BodyMismatch{ref path, ..} => display_body_mismatch(expected_response, actual_response, path), [INFO] [stderr] 470 | | _ => () [INFO] [stderr] 471 | | } [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 | match *mismatch { [INFO] [stderr] 469 | Mismatch::BodyMismatch{ref path, ..} => display_body_mismatch(expected_response, actual_response, path), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/provider_client.rs:15:25 [INFO] [stderr] | [INFO] [stderr] 15 | pub fn join_paths(base: &String, path: String) -> String { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [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: single-character string constant used as pattern [INFO] [stderr] --> src/provider_client.rs:16:52 [INFO] [stderr] | [INFO] [stderr] 16 | let mut full_path = s!(base.trim_right_matches("/")); [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: single-character string constant used as pattern [INFO] [stderr] --> src/provider_client.rs:18:47 [INFO] [stderr] | [INFO] [stderr] 18 | full_path.push_str(path.trim_left_matches("/")); [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/provider_client.rs:38:27 [INFO] [stderr] | [INFO] [stderr] 38 | fn make_request(base_url: &String, request: &Request, client: &Client) -> 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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pact_broker.rs:15:72 [INFO] [stderr] | [INFO] [stderr] 15 | fn is_true(object: &serde_json::Map, field: &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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:17:23 [INFO] [stderr] | [INFO] [stderr] 17 | Some(json) => match json { [INFO] [stderr] | _______________________^ [INFO] [stderr] 18 | | &serde_json::Value::Bool(b) => b, [INFO] [stderr] 19 | | _ => false [INFO] [stderr] 20 | | }, [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] 17 | Some(json) => match *json { [INFO] [stderr] 18 | serde_json::Value::Bool(b) => b, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | / match json { [INFO] [stderr] 27 | | &serde_json::Value::String(ref s) => s.clone(), [INFO] [stderr] 28 | | _ => format!("{}", json) [INFO] [stderr] 29 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 26 | match *json { [INFO] [stderr] 27 | serde_json::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/pact_broker.rs:53:70 [INFO] [stderr] | [INFO] [stderr] 53 | fn find_entry(map: &serde_json::Map, key: &String) -> Option<(String, serde_json::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 don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:71:23 [INFO] [stderr] | [INFO] [stderr] 71 | let message = match self { [INFO] [stderr] | _______________________^ [INFO] [stderr] 72 | | &PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 73 | | &PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 74 | | &PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 75 | | &PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 76 | | &PactBrokerError::UrlError(ref s) => s.clone() [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] 71 | let message = match *self { [INFO] [stderr] 72 | PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 73 | PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 74 | PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 75 | PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 76 | PactBrokerError::UrlError(ref s) => s.clone() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:84:23 [INFO] [stderr] | [INFO] [stderr] 84 | let message = match self { [INFO] [stderr] | _______________________^ [INFO] [stderr] 85 | | &PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 86 | | &PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 87 | | &PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 88 | | &PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 89 | | &PactBrokerError::UrlError(ref s) => s.clone() [INFO] [stderr] 90 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 84 | let message = match *self { [INFO] [stderr] 85 | PactBrokerError::LinkError(ref s) => s.clone(), [INFO] [stderr] 86 | PactBrokerError::ContentError(ref s) => s.clone(), [INFO] [stderr] 87 | PactBrokerError::IoError(ref s) => s.clone(), [INFO] [stderr] 88 | PactBrokerError::NotFound(ref s) => s.clone(), [INFO] [stderr] 89 | PactBrokerError::UrlError(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/pact_broker.rs:104:28 [INFO] [stderr] | [INFO] [stderr] 104 | pub fn from_json(link: &String, link_data: &serde_json::Map) -> Link { [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] 104 | pub fn from_json(link: &str, link_data: &serde_json::Map) -> Link { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `link.clone()` to [INFO] [stderr] | [INFO] [stderr] 106 | name: link.to_string(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/pact_broker.rs:141:26 [INFO] [stderr] | [INFO] [stderr] 141 | .ok_or(PactBrokerError::LinkError(format!("Link is malformed, expected an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] | __________________________^ [INFO] [stderr] 142 | | link_data, self.url, link))), [INFO] [stderr] | |________________________________________________________^ [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] help: try this [INFO] [stderr] | [INFO] [stderr] 141 | .ok_or_else(|| PactBrokerError::LinkError(format!("Link is malformed, expected an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] 142 | link_data, self.url, link))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/pact_broker.rs:162:31 [INFO] [stderr] | [INFO] [stderr] 162 | link.href.clone().ok_or( [INFO] [stderr] | _______________________________^ [INFO] [stderr] 163 | | PactBrokerError::LinkError(format!("Link is malformed, there is no href. URL: '{}', LINK: '{}'", [INFO] [stderr] 164 | | self.url, link.name))) [INFO] [stderr] | |_________________________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 162 | link.href.clone().ok_or_else(|| PactBrokerError::LinkError(format!("Link is malformed, there is no href. URL: '{}', LINK: '{}'", [INFO] [stderr] 163 | self.url, link.name))) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/pact_broker.rs:166:82 [INFO] [stderr] | [INFO] [stderr] 166 | let base = Url::parse(&self.url).map_err(|err| PactBrokerError::UrlError(format!("{}", err.description())))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.description().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: useless use of `format!` [INFO] [stderr] --> src/pact_broker.rs:167:80 [INFO] [stderr] | [INFO] [stderr] 167 | let url = base.join(&link_url).map_err(|err| PactBrokerError::UrlError(format!("{}", err.description())))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.description().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: use of `ok_or` followed by a function call [INFO] [stderr] --> src/pact_broker.rs:248:26 [INFO] [stderr] | [INFO] [stderr] 248 | .ok_or(PactBrokerError::LinkError(format!("Link is malformed, expcted an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] | __________________________^ [INFO] [stderr] 249 | | link_data, self.url, link))), [INFO] [stderr] | |________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 248 | .ok_or_else(|| PactBrokerError::LinkError(format!("Link is malformed, expcted an object but got {}. URL: '{}', LINK: '{}'", [INFO] [stderr] 249 | link_data, self.url, link))), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/pact_broker.rs:243:75 [INFO] [stderr] | [INFO] [stderr] 243 | .map(|link_data| link_data.iter().map(|link_json| match link_json { [INFO] [stderr] | ___________________________________________________________________________^ [INFO] [stderr] 244 | | &serde_json::Value::Object(ref data) => Link::from_json(&link, data), [INFO] [stderr] 245 | | &serde_json::Value::String(ref s) => Link { name: link.clone(), href: Some(s.clone()), templated: false }, [INFO] [stderr] 246 | | _ => Link { name: link.clone(), href: Some(link_json.to_string()), templated: false } [INFO] [stderr] 247 | | }).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] 243 | .map(|link_data| link_data.iter().map(|link_json| match *link_json { [INFO] [stderr] 244 | serde_json::Value::Object(ref data) => Link::from_json(&link, data), [INFO] [stderr] 245 | serde_json::Value::String(ref s) => Link { name: link.clone(), href: Some(s.clone()), templated: false }, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/pact_broker.rs:260:44 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn fetch_pacts_from_broker(broker_url: &String, provider_name: &String) -> Result>, PactBrokerError> { [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] 260 | pub fn fetch_pacts_from_broker(broker_url: &str, provider_name: &String) -> Result>, PactBrokerError> { [INFO] [stderr] | ^^^^ [INFO] [stderr] help: change `broker_url.clone()` to [INFO] [stderr] | [INFO] [stderr] 261 | let mut client = HALClient{ url: broker_url.to_string(), .. HALClient::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/pact_broker.rs:260:68 [INFO] [stderr] | [INFO] [stderr] 260 | pub fn fetch_pacts_from_broker(broker_url: &String, provider_name: &String) -> Result>, PactBrokerError> { [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: large size difference between variants [INFO] [stderr] --> src/lib.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | Mismatches(Vec, Response, Response), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::large_enum_variant)] on by default [INFO] [stderr] help: consider boxing the large fields to reduce the total size of the enum [INFO] [stderr] --> src/lib.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | Mismatches(Vec, Response, Response), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#large_enum_variant [INFO] [stderr] [INFO] [stderr] warning: `ref` on an entire `let` pattern is discouraged, take a reference with `&` instead [INFO] [stderr] --> src/lib.rs:102:7 [INFO] [stderr] | [INFO] [stderr] 102 | let ref expected_response = interaction.response; [INFO] [stderr] | ----^^^^^^^^^^^^^^^^^^^^^------------------------ help: try: `let expected_response = &interaction.response;` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::toplevel_ref_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#toplevel_ref_arg [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/lib.rs:196:5 [INFO] [stderr] | [INFO] [stderr] 196 | / match header_results { [INFO] [stderr] 197 | | Some(header_results) => { [INFO] [stderr] 198 | | println!(" includes headers"); [INFO] [stderr] 199 | | for (key, value, result) in header_results { [INFO] [stderr] ... | [INFO] [stderr] 204 | | None => () [INFO] [stderr] 205 | | } [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] 196 | if let Some(header_results) = header_results { [INFO] [stderr] 197 | println!(" includes headers"); [INFO] [stderr] 198 | for (key, value, result) in header_results { [INFO] [stderr] 199 | println!(" \"{}\" with value \"{}\" ({})", Style::new().bold().paint(key), [INFO] [stderr] 200 | Style::new().bold().paint(value), result); [INFO] [stderr] 201 | } [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:224:72 [INFO] [stderr] | [INFO] [stderr] 224 | fn display_body_mismatch(expected: &Response, actual: &Response, path: &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/lib.rs:225:5 [INFO] [stderr] | [INFO] [stderr] 225 | / match expected.content_type_enum() { [INFO] [stderr] 226 | | DetectedContentType::Json => println!("{}", pact_matching::json::display_diff(&expected.body.str_value().to_string(), [INFO] [stderr] 227 | | &actual.body.str_value().to_string(), path)), [INFO] [stderr] 228 | | _ => () [INFO] [stderr] 229 | | } [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] 225 | if let DetectedContentType::Json = expected.content_type_enum() { println!("{}", pact_matching::json::display_diff(&expected.body.str_value().to_string(), [INFO] [stderr] 226 | &actual.body.str_value().to_string(), path)) } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:248:9 [INFO] [stderr] | [INFO] [stderr] 248 | / match self { [INFO] [stderr] 249 | | &FilterInfo::Description(_) => true, [INFO] [stderr] 250 | | &FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] 251 | | _ => false [INFO] [stderr] 252 | | } [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] 248 | match *self { [INFO] [stderr] 249 | FilterInfo::Description(_) => true, [INFO] [stderr] 250 | FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:257:9 [INFO] [stderr] | [INFO] [stderr] 257 | / match self { [INFO] [stderr] 258 | | &FilterInfo::State(_) => true, [INFO] [stderr] 259 | | &FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] 260 | | _ => false [INFO] [stderr] 261 | | } [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] 257 | match *self { [INFO] [stderr] 258 | FilterInfo::State(_) => true, [INFO] [stderr] 259 | FilterInfo::DescriptionAndState(_, _) => true, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:266:9 [INFO] [stderr] | [INFO] [stderr] 266 | / match self { [INFO] [stderr] 267 | | &FilterInfo::State(ref s) => s.clone(), [INFO] [stderr] 268 | | &FilterInfo::DescriptionAndState(_, ref s) => s.clone(), [INFO] [stderr] 269 | | _ => s!("") [INFO] [stderr] 270 | | } [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] 266 | match *self { [INFO] [stderr] 267 | FilterInfo::State(ref s) => s.clone(), [INFO] [stderr] 268 | FilterInfo::DescriptionAndState(_, ref s) => s.clone(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:275:9 [INFO] [stderr] | [INFO] [stderr] 275 | / match self { [INFO] [stderr] 276 | | &FilterInfo::Description(ref s) => s.clone(), [INFO] [stderr] 277 | | &FilterInfo::DescriptionAndState(ref s, _) => s.clone(), [INFO] [stderr] 278 | | _ => s!("") [INFO] [stderr] 279 | | } [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] 275 | match *self { [INFO] [stderr] 276 | FilterInfo::Description(ref s) => s.clone(), [INFO] [stderr] 277 | FilterInfo::DescriptionAndState(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/lib.rs:323:32 [INFO] [stderr] | [INFO] [stderr] 323 | fn filter_consumers(consumers: &Vec, res: &Result) -> 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/lib.rs:329:16 [INFO] [stderr] | [INFO] [stderr] 329 | consumers: &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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:331:9 [INFO] [stderr] | [INFO] [stderr] 331 | / match s { [INFO] [stderr] 332 | | &PactSource::File(ref file) => vec![Pact::read_pact(Path::new(&file)) [INFO] [stderr] 333 | | .map_err(|err| format!("Failed to load pact '{}' - {}", file, err))], [INFO] [stderr] 334 | | &PactSource::Dir(ref dir) => match walkdir(Path::new(dir)) { [INFO] [stderr] ... | [INFO] [stderr] 353 | | } [INFO] [stderr] 354 | | } [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] 331 | match *s { [INFO] [stderr] 332 | PactSource::File(ref file) => vec![Pact::read_pact(Path::new(&file)) [INFO] [stderr] 333 | .map_err(|err| format!("Failed to load pact '{}' - {}", file, err))], [INFO] [stderr] 334 | PactSource::Dir(ref dir) => match walkdir(Path::new(dir)) { [INFO] [stderr] 335 | Ok(ref pacts) => pacts.iter().map(|p| { [INFO] [stderr] 336 | match p { [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:336:25 [INFO] [stderr] | [INFO] [stderr] 336 | / match p { [INFO] [stderr] 337 | | &Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 338 | | &Err(ref err) => Err(format!("Failed to load pact from '{}' - {}", dir, err)) [INFO] [stderr] 339 | | } [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] 336 | match *p { [INFO] [stderr] 337 | Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 338 | Err(ref err) => Err(format!("Failed to load pact from '{}' - {}", dir, err)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:347:25 [INFO] [stderr] | [INFO] [stderr] 347 | / match p { [INFO] [stderr] 348 | | &Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 349 | | &Err(ref err) => Err(format!("Failed to load pact from '{}' - {:?}", broker_url, err)) [INFO] [stderr] 350 | | } [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] 347 | match *p { [INFO] [stderr] 348 | Ok(ref pact) => Ok(pact.clone()), [INFO] [stderr] 349 | Err(ref err) => Err(format!("Failed to load pact from '{}' - {:?}", broker_url, err)) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:396:45 [INFO] [stderr] | [INFO] [stderr] 396 | Err(ref err) => match err { [INFO] [stderr] | _____________________________________________^ [INFO] [stderr] 397 | | &MismatchResult::Error(ref err_des) => { [INFO] [stderr] 398 | | println!(" {}", Red.paint(format!("Request Failed - {}", err_des))); [INFO] [stderr] 399 | | all_errors.push((description, MismatchResult::Error(err_des.clone()))); [INFO] [stderr] ... | [INFO] [stderr] 442 | | } [INFO] [stderr] 443 | | } [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] 396 | Err(ref err) => match *err { [INFO] [stderr] 397 | MismatchResult::Error(ref err_des) => { [INFO] [stderr] 398 | println!(" {}", Red.paint(format!("Request Failed - {}", err_des))); [INFO] [stderr] 399 | all_errors.push((description, MismatchResult::Error(err_des.clone()))); [INFO] [stderr] 400 | verify_provider_result = false; [INFO] [stderr] 401 | }, [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:404:107 [INFO] [stderr] | [INFO] [stderr] 404 | let status_result = if mismatches.iter().any(|m| m.mismatch_type() == s!("StatusMismatch")) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [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] = 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: in an 'if' condition, avoid complex blocks or closures with blocks; instead, move the block or closure higher and bind it with a 'let' [INFO] [stderr] --> src/lib.rs:412:97 [INFO] [stderr] | [INFO] [stderr] 412 | (k.clone(), v.clone(), if mismatches.iter().any(|m| { [INFO] [stderr] | _________________________________________________________________________________________________^ [INFO] [stderr] 413 | | match m { [INFO] [stderr] 414 | | &Mismatch::HeaderMismatch{ ref key, .. } => k == key, [INFO] [stderr] 415 | | _ => false [INFO] [stderr] 416 | | } [INFO] [stderr] 417 | | }) { [INFO] [stderr] | |_____________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::block_in_if_condition_stmt)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#block_in_if_condition_stmt [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:413:49 [INFO] [stderr] | [INFO] [stderr] 413 | / match m { [INFO] [stderr] 414 | | &Mismatch::HeaderMismatch{ ref key, .. } => k == key, [INFO] [stderr] 415 | | _ => false [INFO] [stderr] 416 | | } [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] 413 | match *m { [INFO] [stderr] 414 | Mismatch::HeaderMismatch{ ref key, .. } => k == key, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:426:105 [INFO] [stderr] | [INFO] [stderr] 426 | let body_result = if mismatches.iter().any(|m| m.mismatch_type() == s!("BodyMismatch") || [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [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: this creates an owned instance just for comparison [INFO] [stderr] --> src/lib.rs:427:62 [INFO] [stderr] | [INFO] [stderr] 427 | m.mismatch_type() == s!("BodyTypeMismatch")) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [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:450:62 [INFO] [stderr] | [INFO] [stderr] 450 | error!("Failed to load pact - {}", Red.paint(format!("{}", err))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.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:452:83 [INFO] [stderr] | [INFO] [stderr] 452 | all_errors.push((s!("Failed to load pact"), MismatchResult::Error(format!("{}", err)))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `err.to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:461:13 [INFO] [stderr] | [INFO] [stderr] 461 | / match mismatch { [INFO] [stderr] 462 | | &MismatchResult::Error(ref err) => println!("{}) {} - {}\n", i, description, err), [INFO] [stderr] 463 | | &MismatchResult::Mismatches(ref mismatch, ref expected_response, ref actual_response) => { [INFO] [stderr] 464 | | let mismatch = mismatch.first().unwrap(); [INFO] [stderr] ... | [INFO] [stderr] 472 | | } [INFO] [stderr] 473 | | } [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] 461 | match *mismatch { [INFO] [stderr] 462 | MismatchResult::Error(ref err) => println!("{}) {} - {}\n", i, description, err), [INFO] [stderr] 463 | MismatchResult::Mismatches(ref mismatch, ref expected_response, ref actual_response) => { [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:468:21 [INFO] [stderr] | [INFO] [stderr] 468 | / match mismatch { [INFO] [stderr] 469 | | &Mismatch::BodyMismatch{ref path, ..} => display_body_mismatch(expected_response, actual_response, path), [INFO] [stderr] 470 | | _ => () [INFO] [stderr] 471 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let &Mismatch::BodyMismatch{ref path, ..} = mismatch { display_body_mismatch(expected_response, actual_response, path) }` [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/lib.rs:468:21 [INFO] [stderr] | [INFO] [stderr] 468 | / match mismatch { [INFO] [stderr] 469 | | &Mismatch::BodyMismatch{ref path, ..} => display_body_mismatch(expected_response, actual_response, path), [INFO] [stderr] 470 | | _ => () [INFO] [stderr] 471 | | } [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 | match *mismatch { [INFO] [stderr] 469 | Mismatch::BodyMismatch{ref path, ..} => display_body_mismatch(expected_response, actual_response, path), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 31.56s [INFO] running `"docker" "inspect" "4a4d16c07d62d4ddd9e076139f65e4c94e6931724ea927f4237218add1ceb5f1"` [INFO] running `"docker" "rm" "-f" "4a4d16c07d62d4ddd9e076139f65e4c94e6931724ea927f4237218add1ceb5f1"` [INFO] [stdout] 4a4d16c07d62d4ddd9e076139f65e4c94e6931724ea927f4237218add1ceb5f1