[INFO] crate qube 0.4.0 is already in cache [INFO] extracting crate qube 0.4.0 into work/ex/clippy-test-run/sources/stable/reg/qube/0.4.0 [INFO] extracting crate qube 0.4.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/qube/0.4.0 [INFO] validating manifest of qube-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 qube-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 qube-0.4.0 [INFO] finished frobbing qube-0.4.0 [INFO] frobbed toml for qube-0.4.0 written to work/ex/clippy-test-run/sources/stable/reg/qube/0.4.0/Cargo.toml [INFO] started frobbing qube-0.4.0 [INFO] finished frobbing qube-0.4.0 [INFO] frobbed toml for qube-0.4.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/qube/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 qube-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-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/qube/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] 3eaab4aeb2b786b533f56e4ccd6fb33b82fefd51f611e8387f5a270c9fe95ae7 [INFO] running `"docker" "start" "-a" "3eaab4aeb2b786b533f56e4ccd6fb33b82fefd51f611e8387f5a270c9fe95ae7"` [INFO] [stderr] Compiling k8s-openapi v0.2.0 [INFO] [stderr] Checking serde_yaml v0.7.5 [INFO] [stderr] Checking hyper-tls v0.3.1 [INFO] [stderr] Checking reqwest v0.9.9 [INFO] [stderr] Checking qube v0.4.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/clients/low_level.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | client: client, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `client` [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/clients/low_level.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | async_client: async_client, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `async_client` [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/clients/low_level.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | auth_info: auth_info, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `auth_info` [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/clients/low_level.rs:105:13 [INFO] [stderr] | [INFO] [stderr] 105 | client: client, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `client` [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/clients/low_level.rs:106:13 [INFO] [stderr] | [INFO] [stderr] 106 | async_client: async_client, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `async_client` [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/clients/low_level.rs:107:13 [INFO] [stderr] | [INFO] [stderr] 107 | auth_info: auth_info, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `auth_info` [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: unused import: `std::mem` [INFO] [stderr] --> src/clients/low_level.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::mem; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Client`, `Decoder` [INFO] [stderr] --> src/clients/low_level.rs:19:22 [INFO] [stderr] | [INFO] [stderr] 19 | use reqwest::async::{Client, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Cursor` [INFO] [stderr] --> src/clients/low_level.rs:20:21 [INFO] [stderr] | [INFO] [stderr] 20 | use std::io::{self, Cursor, Write}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/clients/low_level.rs:320:72 [INFO] [stderr] | [INFO] [stderr] 320 | pub(crate) fn http_get_raw_text(&self, url: Url, resource: String) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::mem` [INFO] [stderr] --> src/clients/low_level.rs:3:5 [INFO] [stderr] | [INFO] [stderr] 3 | use std::mem; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Client`, `Decoder` [INFO] [stderr] --> src/clients/low_level.rs:19:22 [INFO] [stderr] | [INFO] [stderr] 19 | use reqwest::async::{Client, Decoder}; [INFO] [stderr] | ^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `Cursor` [INFO] [stderr] --> src/clients/low_level.rs:20:21 [INFO] [stderr] | [INFO] [stderr] 20 | use std::io::{self, Cursor, Write}; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded unit return type [INFO] [stderr] --> src/clients/low_level.rs:320:72 [INFO] [stderr] | [INFO] [stderr] 320 | pub(crate) fn http_get_raw_text(&self, url: Url, resource: String) -> () { [INFO] [stderr] | ^^^^^ help: remove the `-> ()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unused_unit)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_unit [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/config.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | env::home_dir() [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'std::env::home_dir': This function's behavior is unexpected and probably not what you want. Consider using the home_dir function from https://crates.io/crates/dirs instead. [INFO] [stderr] --> src/config.rs:217:9 [INFO] [stderr] | [INFO] [stderr] 217 | env::home_dir() [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | let mut headers = header::HeaderMap::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut headers_async = header::HeaderMap::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut client = reqwest::Client::builder(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | let mut async_client = reqwest::async::Client::builder(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut client = if let Some(ca_cert) = cluster.ca_cert() { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | let mut async_client = if let Some(ca_cert) = cluster.ca_cert() { [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:62:13 [INFO] [stderr] | [INFO] [stderr] 62 | let mut headers = header::HeaderMap::new(); [INFO] [stderr] | ----^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | let mut headers_async = header::HeaderMap::new(); [INFO] [stderr] | ----^^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:64:13 [INFO] [stderr] | [INFO] [stderr] 64 | let mut client = reqwest::Client::builder(); [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:65:13 [INFO] [stderr] | [INFO] [stderr] 65 | let mut async_client = reqwest::async::Client::builder(); [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:67:13 [INFO] [stderr] | [INFO] [stderr] 67 | let mut client = if let Some(ca_cert) = cluster.ca_cert() { [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:72:13 [INFO] [stderr] | [INFO] [stderr] 72 | let mut async_client = if let Some(ca_cert) = cluster.ca_cert() { [INFO] [stderr] | ----^^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:338:29 [INFO] [stderr] | [INFO] [stderr] 338 | .and_then(move |mut res| { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:332:13 [INFO] [stderr] | [INFO] [stderr] 332 | let mut req = self.auth_async(self.async_client.get(url)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:336:13 [INFO] [stderr] | [INFO] [stderr] 336 | let mut response = req [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:364:13 [INFO] [stderr] | [INFO] [stderr] 364 | let mut req = self.auth(self.client.get(url)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:338:29 [INFO] [stderr] | [INFO] [stderr] 338 | .and_then(move |mut res| { [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:332:13 [INFO] [stderr] | [INFO] [stderr] 332 | let mut req = self.auth_async(self.async_client.get(url)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:336:13 [INFO] [stderr] | [INFO] [stderr] 336 | let mut response = req [INFO] [stderr] | ----^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/clients/low_level.rs:364:13 [INFO] [stderr] | [INFO] [stderr] 364 | let mut req = self.auth(self.client.get(url)); [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/config.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &Some(ref data) = data { [INFO] [stderr] 63 | | let decoded = base64::decode(&data).expect("Unable to decode base64."); [INFO] [stderr] 64 | | Some(String::from_utf8(decoded).expect("Unable to convert to string.")) [INFO] [stderr] 65 | | } else if let &Some(ref file) = file { [INFO] [stderr] ... | [INFO] [stderr] 72 | | None [INFO] [stderr] 73 | | } [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] 62 | if let Some(ref data) = *data { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/config.rs:65:12 [INFO] [stderr] | [INFO] [stderr] 65 | } else if let &Some(ref file) = file { [INFO] [stderr] | ____________^ [INFO] [stderr] 66 | | let mut data = String::new(); [INFO] [stderr] 67 | | let mut f = File::open(file).expect("Unable to open file."); [INFO] [stderr] 68 | | f.read_to_string(&mut data) [INFO] [stderr] ... | [INFO] [stderr] 72 | | None [INFO] [stderr] 73 | | } [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] 65 | } else if let Some(ref file) = *file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/config.rs:62:5 [INFO] [stderr] | [INFO] [stderr] 62 | / if let &Some(ref data) = data { [INFO] [stderr] 63 | | let decoded = base64::decode(&data).expect("Unable to decode base64."); [INFO] [stderr] 64 | | Some(String::from_utf8(decoded).expect("Unable to convert to string.")) [INFO] [stderr] 65 | | } else if let &Some(ref file) = file { [INFO] [stderr] ... | [INFO] [stderr] 72 | | None [INFO] [stderr] 73 | | } [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] 62 | if let Some(ref data) = *data { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/config.rs:65:12 [INFO] [stderr] | [INFO] [stderr] 65 | } else if let &Some(ref file) = file { [INFO] [stderr] | ____________^ [INFO] [stderr] 66 | | let mut data = String::new(); [INFO] [stderr] 67 | | let mut f = File::open(file).expect("Unable to open file."); [INFO] [stderr] 68 | | f.read_to_string(&mut data) [INFO] [stderr] ... | [INFO] [stderr] 72 | | None [INFO] [stderr] 73 | | } [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] 65 | } else if let Some(ref file) = *file { [INFO] [stderr] | ^^^^^^^^^^^^^^ ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/config.rs:218:14 [INFO] [stderr] | [INFO] [stderr] 218 | .unwrap_or("/root".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "/root".into())` [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] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/clients/low_level.rs:49:26 [INFO] [stderr] | [INFO] [stderr] 49 | let path_clone = path.borrow().clone(); [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] 49 | let path_clone = &(*path.borrow()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 49 | let path_clone = &P::clone(path.borrow()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/config.rs:218:14 [INFO] [stderr] | [INFO] [stderr] 218 | .unwrap_or("/root".into()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "/root".into())` [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: single-character string constant used as pattern [INFO] [stderr] --> src/clients/low_level.rs:243:52 [INFO] [stderr] | [INFO] [stderr] 243 | let root = if mini.api_version.starts_with("v") { [INFO] [stderr] | ^^^ help: try using a char instead: `'v'` [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/clients/low_level.rs:293:52 [INFO] [stderr] | [INFO] [stderr] 293 | let root = if mini.api_version.starts_with("v") { [INFO] [stderr] | ^^^ help: try using a char instead: `'v'` [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] error: using `clone` on a double-reference; this will copy the reference instead of cloning the inner type [INFO] [stderr] --> src/clients/low_level.rs:49:26 [INFO] [stderr] | [INFO] [stderr] 49 | let path_clone = path.borrow().clone(); [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] 49 | let path_clone = &(*path.borrow()).clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] help: or try being explicit about what type to clone [INFO] [stderr] | [INFO] [stderr] 49 | let path_clone = &P::clone(path.borrow()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/clients/low_level.rs:382:12 [INFO] [stderr] | [INFO] [stderr] 382 | Ok(self.http_get_raw_text(url, resource)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 382 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/clients/low_level.rs:243:52 [INFO] [stderr] | [INFO] [stderr] 243 | let root = if mini.api_version.starts_with("v") { [INFO] [stderr] | ^^^ help: try using a char instead: `'v'` [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/clients/low_level.rs:293:52 [INFO] [stderr] | [INFO] [stderr] 293 | let root = if mini.api_version.starts_with("v") { [INFO] [stderr] | ^^^ help: try using a char instead: `'v'` [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: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/clients/mod.rs:375:5 [INFO] [stderr] | [INFO] [stderr] 375 | / fn get_ns<'a, R: Resource>(&'a self) -> Option<&'a str> { [INFO] [stderr] 376 | | match self.namespace { [INFO] [stderr] 377 | | Some(ref ns) => Some(ns), [INFO] [stderr] 378 | | None => R::default_namespace(), [INFO] [stderr] 379 | | } [INFO] [stderr] 380 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use as_ref() instead [INFO] [stderr] --> src/clients/mod.rs:376:9 [INFO] [stderr] | [INFO] [stderr] 376 | / match self.namespace { [INFO] [stderr] 377 | | Some(ref ns) => Some(ns), [INFO] [stderr] 378 | | None => R::default_namespace(), [INFO] [stderr] 379 | | } [INFO] [stderr] | |_________^ help: try this: `self.namespace.as_ref()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_as_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_as_ref [INFO] [stderr] [INFO] [stderr] warning: passing a unit value to a function [INFO] [stderr] --> src/clients/low_level.rs:382:12 [INFO] [stderr] | [INFO] [stderr] 382 | Ok(self.http_get_raw_text(url, resource)) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unit_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unit_arg [INFO] [stderr] help: if you intended to pass a unit value, use a unit literal instead [INFO] [stderr] | [INFO] [stderr] 382 | Ok(()) [INFO] [stderr] | ^^ [INFO] [stderr] [INFO] [stderr] warning: explicit lifetimes given in parameter types where they could be elided (or replaced with `'_` if needed by type declaration) [INFO] [stderr] --> src/clients/mod.rs:375:5 [INFO] [stderr] | [INFO] [stderr] 375 | / fn get_ns<'a, R: Resource>(&'a self) -> Option<&'a str> { [INFO] [stderr] 376 | | match self.namespace { [INFO] [stderr] 377 | | Some(ref ns) => Some(ns), [INFO] [stderr] 378 | | None => R::default_namespace(), [INFO] [stderr] 379 | | } [INFO] [stderr] 380 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_lifetimes)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_lifetimes [INFO] [stderr] [INFO] [stderr] warning: use as_ref() instead [INFO] [stderr] --> src/clients/mod.rs:376:9 [INFO] [stderr] | [INFO] [stderr] 376 | / match self.namespace { [INFO] [stderr] 377 | | Some(ref ns) => Some(ns), [INFO] [stderr] 378 | | None => R::default_namespace(), [INFO] [stderr] 379 | | } [INFO] [stderr] | |_________^ help: try this: `self.namespace.as_ref()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_as_ref)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_as_ref [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `qube`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `qube`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "3eaab4aeb2b786b533f56e4ccd6fb33b82fefd51f611e8387f5a270c9fe95ae7"` [INFO] running `"docker" "rm" "-f" "3eaab4aeb2b786b533f56e4ccd6fb33b82fefd51f611e8387f5a270c9fe95ae7"` [INFO] [stdout] 3eaab4aeb2b786b533f56e4ccd6fb33b82fefd51f611e8387f5a270c9fe95ae7