[INFO] crate cniguru 0.2.0 is already in cache [INFO] extracting crate cniguru 0.2.0 into work/ex/clippy-test-run/sources/stable/reg/cniguru/0.2.0 [INFO] extracting crate cniguru 0.2.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cniguru/0.2.0 [INFO] validating manifest of cniguru-0.2.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 cniguru-0.2.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 cniguru-0.2.0 [INFO] finished frobbing cniguru-0.2.0 [INFO] frobbed toml for cniguru-0.2.0 written to work/ex/clippy-test-run/sources/stable/reg/cniguru/0.2.0/Cargo.toml [INFO] started frobbing cniguru-0.2.0 [INFO] finished frobbing cniguru-0.2.0 [INFO] frobbed toml for cniguru-0.2.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/cniguru/0.2.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 cniguru-0.2.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-1/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/cniguru/0.2.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] 01afb99072af5d5ee2c424e2a2ff52208c944c34e45c5b87dc788d2778374000 [INFO] running `"docker" "start" "-a" "01afb99072af5d5ee2c424e2a2ff52208c944c34e45c5b87dc788d2778374000"` [INFO] [stderr] Compiling cniguru v0.2.0 (/opt/crater/workdir) [INFO] [stderr] Checking docopt v1.0.2 [INFO] [stderr] Checking kubeclient v0.1.0 [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/main.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | write!(std::io::stderr(), "error: {}\n", fail).expect("could not write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/main.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | write!(f, "caused by: {}\n", cause).expect("could not write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/main.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | write!(f, "{}\n", e.backtrace()).expect("could not write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/main.rs:140:5 [INFO] [stderr] | [INFO] [stderr] 140 | write!(std::io::stderr(), "error: {}\n", fail).expect("could not write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::write_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/main.rs:142:9 [INFO] [stderr] | [INFO] [stderr] 142 | write!(f, "caused by: {}\n", cause).expect("could not write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `write!()` with a format string that ends in a single newline, consider using `writeln!()` instead [INFO] [stderr] --> src/main.rs:146:9 [INFO] [stderr] | [INFO] [stderr] 146 | write!(f, "{}\n", e.backtrace()).expect("could not write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#write_with_newline [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:38:15 [INFO] [stderr] | [INFO] [stderr] 38 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: 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/k8s.rs:39:36 [INFO] [stderr] | [INFO] [stderr] 39 | if let Some(dir) = env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:38:15 [INFO] [stderr] | [INFO] [stderr] 38 | const USAGE: &'static str = " [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Error::cause': please use 'as_fail()' method instead [INFO] [stderr] --> src/main.rs:138:29 [INFO] [stderr] | [INFO] [stderr] 138 | let mut fail: &Fail = e.cause(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Error::cause': please use 'as_fail()' method instead [INFO] [stderr] --> src/main.rs:153:29 [INFO] [stderr] | [INFO] [stderr] 153 | let mut fail: &Fail = e.cause(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Error::cause': please use 'as_fail()' method instead [INFO] [stderr] --> src/main.rs:161:20 [INFO] [stderr] | [INFO] [stderr] 161 | "error": e.cause().to_string(), [INFO] [stderr] | ^^^^^ [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/k8s.rs:39:36 [INFO] [stderr] | [INFO] [stderr] 39 | if let Some(dir) = env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(deprecated)] on by default [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Error::cause': please use 'as_fail()' method instead [INFO] [stderr] --> src/main.rs:138:29 [INFO] [stderr] | [INFO] [stderr] 138 | let mut fail: &Fail = e.cause(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Error::cause': please use 'as_fail()' method instead [INFO] [stderr] --> src/main.rs:153:29 [INFO] [stderr] | [INFO] [stderr] 153 | let mut fail: &Fail = e.cause(); [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: use of deprecated item 'failure::Error::cause': please use 'as_fail()' method instead [INFO] [stderr] --> src/main.rs:161:20 [INFO] [stderr] | [INFO] [stderr] 161 | "error": e.cause().to_string(), [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/k8s.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | / match cfg_file_path.is_file() { [INFO] [stderr] 42 | | true => { [INFO] [stderr] 43 | | let cfg = cfg_file_path.to_string_lossy().to_string(); [INFO] [stderr] 44 | | debug!("using kubeconfig: {}", cfg); [INFO] [stderr] ... | [INFO] [stderr] 47 | | false => debug!("$HOME/.kube/config does not exist or is not a file"), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 41 | if cfg_file_path.is_file() { [INFO] [stderr] 42 | let cfg = cfg_file_path.to_string_lossy().to_string(); [INFO] [stderr] 43 | debug!("using kubeconfig: {}", cfg); [INFO] [stderr] 44 | return Ok(cfg); [INFO] [stderr] 45 | } else { debug!("$HOME/.kube/config does not exist or is not a file") } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `other @ _` pattern can be written as just `other` [INFO] [stderr] --> src/k8s.rs:104:41 [INFO] [stderr] | [INFO] [stderr] 104 | other @ _ => Err(K8sError::UnsupportedContainerRuntime( [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:173:8 [INFO] [stderr] | [INFO] [stderr] 173 | if output.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:353:8 [INFO] [stderr] | [INFO] [stderr] 353 | if res.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `res.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:385:14 [INFO] [stderr] | [INFO] [stderr] 385 | .unwrap_or("N/A".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "N/A".to_string())` [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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/k8s.rs:41:21 [INFO] [stderr] | [INFO] [stderr] 41 | / match cfg_file_path.is_file() { [INFO] [stderr] 42 | | true => { [INFO] [stderr] 43 | | let cfg = cfg_file_path.to_string_lossy().to_string(); [INFO] [stderr] 44 | | debug!("using kubeconfig: {}", cfg); [INFO] [stderr] ... | [INFO] [stderr] 47 | | false => debug!("$HOME/.kube/config does not exist or is not a file"), [INFO] [stderr] 48 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_bool [INFO] [stderr] help: consider using an if/else expression [INFO] [stderr] | [INFO] [stderr] 41 | if cfg_file_path.is_file() { [INFO] [stderr] 42 | let cfg = cfg_file_path.to_string_lossy().to_string(); [INFO] [stderr] 43 | debug!("using kubeconfig: {}", cfg); [INFO] [stderr] 44 | return Ok(cfg); [INFO] [stderr] 45 | } else { debug!("$HOME/.kube/config does not exist or is not a file") } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: the `other @ _` pattern can be written as just `other` [INFO] [stderr] --> src/k8s.rs:104:41 [INFO] [stderr] | [INFO] [stderr] 104 | other @ _ => Err(K8sError::UnsupportedContainerRuntime( [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:173:8 [INFO] [stderr] | [INFO] [stderr] 173 | if output.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!output.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:353:8 [INFO] [stderr] | [INFO] [stderr] 353 | if res.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `res.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:385:14 [INFO] [stderr] | [INFO] [stderr] 385 | .unwrap_or("N/A".to_string()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "N/A".to_string())` [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] Finished dev [unoptimized + debuginfo] target(s) in 26.81s [INFO] running `"docker" "inspect" "01afb99072af5d5ee2c424e2a2ff52208c944c34e45c5b87dc788d2778374000"` [INFO] running `"docker" "rm" "-f" "01afb99072af5d5ee2c424e2a2ff52208c944c34e45c5b87dc788d2778374000"` [INFO] [stdout] 01afb99072af5d5ee2c424e2a2ff52208c944c34e45c5b87dc788d2778374000