[INFO] crate trappo 0.1.0 is already in cache [INFO] extracting crate trappo 0.1.0 into work/ex/clippy-test-run/sources/stable/reg/trappo/0.1.0 [INFO] extracting crate trappo 0.1.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/trappo/0.1.0 [INFO] validating manifest of trappo-0.1.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 trappo-0.1.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 trappo-0.1.0 [INFO] finished frobbing trappo-0.1.0 [INFO] frobbed toml for trappo-0.1.0 written to work/ex/clippy-test-run/sources/stable/reg/trappo/0.1.0/Cargo.toml [INFO] started frobbing trappo-0.1.0 [INFO] finished frobbing trappo-0.1.0 [INFO] frobbed toml for trappo-0.1.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/trappo/0.1.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 trappo-0.1.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-2/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/trappo/0.1.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] 659f6145a9d729555fece2b1d73f1e64c22823736c1e25cf0d62830615359e78 [INFO] running `"docker" "start" "-a" "659f6145a9d729555fece2b1d73f1e64c22823736c1e25cf0d62830615359e78"` [INFO] [stderr] Compiling byteorder v1.3.1 [INFO] [stderr] Checking ascii v0.9.1 [INFO] [stderr] Checking docopt v1.0.2 [INFO] [stderr] Checking combine v3.6.6 [INFO] [stderr] Checking toml_edit v0.1.3 [INFO] [stderr] Checking trappo v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | context [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:31:19 [INFO] [stderr] | [INFO] [stderr] 31 | let context = match Context::from_host_config(host_config, opt) { [INFO] [stderr] | ___________________^ [INFO] [stderr] 32 | | Ok(context) => context, [INFO] [stderr] 33 | | Err(message) => { [INFO] [stderr] 34 | | eprintln!("error: {:?}", message.description()); [INFO] [stderr] 35 | | exit(1); [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/lib.rs:39:5 [INFO] [stderr] | [INFO] [stderr] 39 | context [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/lib.rs:31:19 [INFO] [stderr] | [INFO] [stderr] 31 | let context = match Context::from_host_config(host_config, opt) { [INFO] [stderr] | ___________________^ [INFO] [stderr] 32 | | Ok(context) => context, [INFO] [stderr] 33 | | Err(message) => { [INFO] [stderr] 34 | | eprintln!("error: {:?}", message.description()); [INFO] [stderr] 35 | | exit(1); [INFO] [stderr] 36 | | } [INFO] [stderr] 37 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/recipe/deployer.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | fn execute_steps(steps: &Vec>, context: &Context) -> Result<(), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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: useless use of `format!` [INFO] [stderr] --> src/recipe/deployer.rs:38:64 [INFO] [stderr] | [INFO] [stderr] 38 | StepError::NonCritical(_) => render_error(&format!("Non-critical error, continuing")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Non-critical error, continuing".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] [INFO] [stderr] warning: the variable `index` is used as a loop counter. Consider using `for (index, item) in &self.steps.enumerate()` or similar iterators [INFO] [stderr] --> src/recipe/mod.rs:25:21 [INFO] [stderr] | [INFO] [stderr] 25 | for step in &self.steps { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/recipe/mod.rs:99:22 [INFO] [stderr] | [INFO] [stderr] 99 | .expect(&format!("Step '{}' doesn't exist in the recipe", &step_config.ref_step)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Step '{}' doesn't exist in the recipe", &step_config.ref_step))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/recipe/mod.rs:114:18 [INFO] [stderr] | [INFO] [stderr] 114 | .expect(&format!("Step '{}' doesn't exist in the recipe", subject_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Step '{}' doesn't exist in the recipe", subject_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/recipe/mod.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | .expect(&format!("Step '{}' doesn't exist in the recipe", subject_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Step '{}' doesn't exist in the recipe", subject_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/steps/core.rs:183:22 [INFO] [stderr] | [INFO] [stderr] 183 | .map_err(|e| StepError::non_critical_from_error(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `StepError::non_critical_from_error` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/steps/rollback.rs:15:44 [INFO] [stderr] | [INFO] [stderr] 15 | context.prev_release_path.as_ref().ok_or(StepError::Critical(NO_PREV_ERR_MSG.into())).map(|_| ()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| StepError::Critical(NO_PREV_ERR_MSG.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/steps/rollback.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match output.status.success() { [INFO] [stderr] 38 | | true => Ok(()), [INFO] [stderr] 39 | | false => { [INFO] [stderr] 40 | | let err_msg = format!("Failed to remove current release at {}", release_path); [INFO] [stderr] 41 | | Err(StepError::Critical(err_msg)) [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [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] 37 | if output.status.success() { Ok(()) } else { [INFO] [stderr] 38 | let err_msg = format!("Failed to remove current release at {}", release_path); [INFO] [stderr] 39 | Err(StepError::Critical(err_msg)) [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/config/stages/mod.rs:60:25 [INFO] [stderr] | [INFO] [stderr] 60 | link_files: parse_string_vector("linked-files", &config_map).unwrap_or(Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `parse_string_vector("linked-files", &config_map).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/config/stages/mod.rs:61:24 [INFO] [stderr] | [INFO] [stderr] 61 | link_dirs: parse_string_vector("linked-dirs", &config_map).unwrap_or(Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `parse_string_vector("linked-dirs", &config_map).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:65:10 [INFO] [stderr] | [INFO] [stderr] 65 | .ok_or(BadType("name".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("name".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:64:34 [INFO] [stderr] | [INFO] [stderr] 64 | let name = table.get("name").ok_or(MissingField("name".into()))?.as_str() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MissingField("name".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:68:10 [INFO] [stderr] | [INFO] [stderr] 68 | .ok_or(BadType("command".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("command".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:67:39 [INFO] [stderr] | [INFO] [stderr] 67 | let comand = table.get("command").ok_or(MissingField("command".into()))?.as_str() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MissingField("command".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:75:62 [INFO] [stderr] | [INFO] [stderr] 75 | let ref_step = table.get("before").unwrap().as_str().ok_or(BadType("before".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("before".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:78:61 [INFO] [stderr] | [INFO] [stderr] 78 | let ref_step = table.get("after").unwrap().as_str().ok_or(BadType("after".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("after".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/cmd.rs:71:67 [INFO] [stderr] | [INFO] [stderr] 71 | let vector: Vec = stdout.trim_right().split("\n").map(|x| String::from(x)).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cmd.rs:71:57 [INFO] [stderr] | [INFO] [stderr] 71 | let vector: Vec = stdout.trim_right().split("\n").map(|x| String::from(x)).collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/recipe/deployer.rs:29:25 [INFO] [stderr] | [INFO] [stderr] 29 | fn execute_steps(steps: &Vec>, context: &Context) -> Result<(), String> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: change this to: `&[Box]` [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: useless use of `format!` [INFO] [stderr] --> src/recipe/deployer.rs:38:64 [INFO] [stderr] | [INFO] [stderr] 38 | StepError::NonCritical(_) => render_error(&format!("Non-critical error, continuing")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Non-critical error, continuing".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] [INFO] [stderr] warning: the variable `index` is used as a loop counter. Consider using `for (index, item) in &self.steps.enumerate()` or similar iterators [INFO] [stderr] --> src/recipe/mod.rs:25:21 [INFO] [stderr] | [INFO] [stderr] 25 | for step in &self.steps { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::explicit_counter_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#explicit_counter_loop [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/recipe/mod.rs:99:22 [INFO] [stderr] | [INFO] [stderr] 99 | .expect(&format!("Step '{}' doesn't exist in the recipe", &step_config.ref_step)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Step '{}' doesn't exist in the recipe", &step_config.ref_step))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/recipe/mod.rs:114:18 [INFO] [stderr] | [INFO] [stderr] 114 | .expect(&format!("Step '{}' doesn't exist in the recipe", subject_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Step '{}' doesn't exist in the recipe", subject_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/recipe/mod.rs:128:18 [INFO] [stderr] | [INFO] [stderr] 128 | .expect(&format!("Step '{}' doesn't exist in the recipe", subject_name)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("Step '{}' doesn't exist in the recipe", subject_name))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/steps/core.rs:183:22 [INFO] [stderr] | [INFO] [stderr] 183 | .map_err(|e| StepError::non_critical_from_error(e))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `StepError::non_critical_from_error` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_closure)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/steps/rollback.rs:15:44 [INFO] [stderr] | [INFO] [stderr] 15 | context.prev_release_path.as_ref().ok_or(StepError::Critical(NO_PREV_ERR_MSG.into())).map(|_| ()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| StepError::Critical(NO_PREV_ERR_MSG.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: you seem to be trying to match on a boolean expression [INFO] [stderr] --> src/steps/rollback.rs:37:9 [INFO] [stderr] | [INFO] [stderr] 37 | / match output.status.success() { [INFO] [stderr] 38 | | true => Ok(()), [INFO] [stderr] 39 | | false => { [INFO] [stderr] 40 | | let err_msg = format!("Failed to remove current release at {}", release_path); [INFO] [stderr] 41 | | Err(StepError::Critical(err_msg)) [INFO] [stderr] 42 | | } [INFO] [stderr] 43 | | } [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] 37 | if output.status.success() { Ok(()) } else { [INFO] [stderr] 38 | let err_msg = format!("Failed to remove current release at {}", release_path); [INFO] [stderr] 39 | Err(StepError::Critical(err_msg)) [INFO] [stderr] 40 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/config/stages/mod.rs:60:25 [INFO] [stderr] | [INFO] [stderr] 60 | link_files: parse_string_vector("linked-files", &config_map).unwrap_or(Vec::new()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `parse_string_vector("linked-files", &config_map).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a call to `new` [INFO] [stderr] --> src/config/stages/mod.rs:61:24 [INFO] [stderr] | [INFO] [stderr] 61 | link_dirs: parse_string_vector("linked-dirs", &config_map).unwrap_or(Vec::new()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `parse_string_vector("linked-dirs", &config_map).unwrap_or_default()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:65:10 [INFO] [stderr] | [INFO] [stderr] 65 | .ok_or(BadType("name".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("name".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:64:34 [INFO] [stderr] | [INFO] [stderr] 64 | let name = table.get("name").ok_or(MissingField("name".into()))?.as_str() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MissingField("name".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:68:10 [INFO] [stderr] | [INFO] [stderr] 68 | .ok_or(BadType("command".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("command".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:67:39 [INFO] [stderr] | [INFO] [stderr] 67 | let comand = table.get("command").ok_or(MissingField("command".into()))?.as_str() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| MissingField("command".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:75:62 [INFO] [stderr] | [INFO] [stderr] 75 | let ref_step = table.get("before").unwrap().as_str().ok_or(BadType("before".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("before".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/config/steps/mod.rs:78:61 [INFO] [stderr] | [INFO] [stderr] 78 | let ref_step = table.get("after").unwrap().as_str().ok_or(BadType("after".into(), "string".into()))?.to_string(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| BadType("after".into(), "string".into()))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: redundant closure found [INFO] [stderr] --> src/cmd.rs:71:67 [INFO] [stderr] | [INFO] [stderr] 71 | let vector: Vec = stdout.trim_right().split("\n").map(|x| String::from(x)).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: remove closure as shown: `String::from` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/cmd.rs:71:57 [INFO] [stderr] | [INFO] [stderr] 71 | let vector: Vec = stdout.trim_right().split("\n").map(|x| String::from(x)).collect(); [INFO] [stderr] | ^^^^ help: try using a char instead: `'\n'` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | 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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:9:15 [INFO] [stderr] | [INFO] [stderr] 9 | 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] Finished dev [unoptimized + debuginfo] target(s) in 35.72s [INFO] running `"docker" "inspect" "659f6145a9d729555fece2b1d73f1e64c22823736c1e25cf0d62830615359e78"` [INFO] running `"docker" "rm" "-f" "659f6145a9d729555fece2b1d73f1e64c22823736c1e25cf0d62830615359e78"` [INFO] [stdout] 659f6145a9d729555fece2b1d73f1e64c22823736c1e25cf0d62830615359e78