[INFO] updating cached repository ierror/ssh-permit-a38 [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ierror/ssh-permit-a38 [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ierror/ssh-permit-a38" "work/ex/clippy-test-run/sources/stable/gh/ierror/ssh-permit-a38"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ierror/ssh-permit-a38'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ierror/ssh-permit-a38" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ierror/ssh-permit-a38"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ierror/ssh-permit-a38'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] ae88aa13206c7313d8aacfde2392a0931d00dafb [INFO] sha for GitHub repo ierror/ssh-permit-a38: ae88aa13206c7313d8aacfde2392a0931d00dafb [INFO] validating manifest of ierror/ssh-permit-a38 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 ierror/ssh-permit-a38 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 ierror/ssh-permit-a38 [INFO] finished frobbing ierror/ssh-permit-a38 [INFO] frobbed toml for ierror/ssh-permit-a38 written to work/ex/clippy-test-run/sources/stable/gh/ierror/ssh-permit-a38/Cargo.toml [INFO] started frobbing ierror/ssh-permit-a38 [INFO] finished frobbing ierror/ssh-permit-a38 [INFO] frobbed toml for ierror/ssh-permit-a38 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ierror/ssh-permit-a38/Cargo.toml [INFO] crate ierror/ssh-permit-a38 has a lockfile. skipping [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 ierror/ssh-permit-a38 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/ierror/ssh-permit-a38:/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] c3f5b1faa6f42c8d3d2f3f333ce69b4d7c8f9c4cfc887bf8ee88fa226bc0ef9b [INFO] running `"docker" "start" "-a" "c3f5b1faa6f42c8d3d2f3f333ce69b4d7c8f9c4cfc887bf8ee88fa226bc0ef9b"` [INFO] [stderr] Compiling libc v0.2.37 [INFO] [stderr] Checking rprompt v1.0.3 [INFO] [stderr] Compiling serde_json v1.0.10 [INFO] [stderr] Compiling semver v0.8.0 [INFO] [stderr] Checking libz-sys v1.0.18 [INFO] [stderr] Compiling libssh2-sys v0.2.6 [INFO] [stderr] Compiling remove_dir_all v0.3.0 [INFO] [stderr] Checking error-chain v0.11.0 [INFO] [stderr] Checking rpassword v1.0.2 [INFO] [stderr] Compiling backtrace-sys v0.1.16 [INFO] [stderr] Compiling rand v0.4.2 [INFO] [stderr] Compiling backtrace v0.3.5 [INFO] [stderr] Compiling tempdir v0.3.6 [INFO] [stderr] Compiling cargo_metadata v0.3.3 [INFO] [stderr] Compiling skeptic v0.13.2 [INFO] [stderr] Checking ssh2 v0.3.2 [INFO] [stderr] Checking ssh_permit_a38 v0.2.0 (/opt/crater/workdir) [INFO] [stderr] Compiling assert_cli v0.5.4 [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/subcommand_group.rs:60:5 [INFO] [stderr] | [INFO] [stderr] 60 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/subcommand_host.rs:73:9 [INFO] [stderr] | [INFO] [stderr] 73 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/subcommand_sync.rs:49:9 [INFO] [stderr] | [INFO] [stderr] 49 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/subcommand_sync.rs:51:9 [INFO] [stderr] | [INFO] [stderr] 51 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/subcommand_sync.rs:313:9 [INFO] [stderr] | [INFO] [stderr] 313 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/subcommand_user.rs:78:5 [INFO] [stderr] | [INFO] [stderr] 78 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/database.rs:10:24 [INFO] [stderr] | [INFO] [stderr] 10 | const SCHEMA_VERSION: &'static str = "0.1.0"; [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: this if statement can be collapsed [INFO] [stderr] --> src/subcommand_host.rs:19:5 [INFO] [stderr] | [INFO] [stderr] 19 | / if host_splitted.len() == 2 { [INFO] [stderr] 20 | | if !host_splitted[1].parse::().is_ok() { [INFO] [stderr] 21 | | cli_flow::errorln("Hostname format invalid. Port is not a integer"); [INFO] [stderr] 22 | | } [INFO] [stderr] 23 | | } [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] 19 | if host_splitted.len() == 2 && !host_splitted[1].parse::().is_ok() { [INFO] [stderr] 20 | cli_flow::errorln("Hostname format invalid. Port is not a integer"); [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/subcommand_sync.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | / if host_splitted.len() == 2 { [INFO] [stderr] 91 | | if host_splitted[1].parse::().is_ok() { [INFO] [stderr] 92 | | ssh_host = &*host_splitted[0]; [INFO] [stderr] 93 | | ssh_port = &*host_splitted[1]; [INFO] [stderr] 94 | | } [INFO] [stderr] 95 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 90 | if host_splitted.len() == 2 && host_splitted[1].parse::().is_ok() { [INFO] [stderr] 91 | ssh_host = &*host_splitted[0]; [INFO] [stderr] 92 | ssh_port = &*host_splitted[1]; [INFO] [stderr] 93 | } [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/ssh_config.rs:30:33 [INFO] [stderr] | [INFO] [stderr] 30 | let ssh_config_path = match 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/subcommand_sync.rs:161:46 [INFO] [stderr] | [INFO] [stderr] 161 | let private_key_path = match env::home_dir() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `prompt` doesn't need a mutable reference [INFO] [stderr] --> src/cli_flow.rs:30:16 [INFO] [stderr] | [INFO] [stderr] 30 | prompt(&mut format!("{}", msg), colorful); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/cli_flow.rs:30:21 [INFO] [stderr] | [INFO] [stderr] 30 | prompt(&mut format!("{}", msg), colorful); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `msg.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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/cli_flow.rs:31:9 [INFO] [stderr] | [INFO] [stderr] 31 | / io::stdin() [INFO] [stderr] 32 | | .read_line(&mut yes_no) [INFO] [stderr] 33 | | .ok() [INFO] [stderr] 34 | | .expect("Couldn't read line (y/n)"); [INFO] [stderr] | |_______________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ok_expect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/cli_flow.rs:45:42 [INFO] [stderr] | [INFO] [stderr] 45 | pub fn read_line<'a>(msg: &str, default: &'a 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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/cli_flow.rs:50:5 [INFO] [stderr] | [INFO] [stderr] 50 | / io::stdin() [INFO] [stderr] 51 | | .read_line(&mut input) [INFO] [stderr] 52 | | .ok() [INFO] [stderr] 53 | | .expect("Couldn't read_line"); [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/database.rs:97:9 [INFO] [stderr] | [INFO] [stderr] 97 | / host.authorized_users [INFO] [stderr] 98 | | .iter() [INFO] [stderr] 99 | | .position(|au| au == &user.user_id) [INFO] [stderr] 100 | | .is_some() [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = note: replace `position(|au| au == &user.user_id).is_some()` with `any(|au| au == &user.user_id)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/database.rs:104:9 [INFO] [stderr] | [INFO] [stderr] 104 | / host.authorized_user_groups [INFO] [stderr] 105 | | .iter() [INFO] [stderr] 106 | | .position(|ag| ag == &user_group.group_id) [INFO] [stderr] 107 | | .is_some() [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: replace `position(|ag| ag == &user_group.group_id).is_some()` with `any(|ag| ag == &user_group.group_id)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: called `is_some()` after searching an `Iterator` with position. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/database.rs:111:9 [INFO] [stderr] | [INFO] [stderr] 111 | / user_group [INFO] [stderr] 112 | | .members [INFO] [stderr] 113 | | .iter() [INFO] [stderr] 114 | | .position(|u| u == &user.user_id) [INFO] [stderr] 115 | | .is_some() [INFO] [stderr] | |______________________^ [INFO] [stderr] | [INFO] [stderr] = note: replace `position(|u| u == &user.user_id).is_some()` with `any(|u| u == &user.user_id)` [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/ssh_config.rs:59:31 [INFO] [stderr] | [INFO] [stderr] 59 | host = line.split(" ").collect::>()[1].to_owned(); [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/ssh_config.rs:73:43 [INFO] [stderr] | [INFO] [stderr] 73 | let option_value = line.split(" ").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/subcommand_host.rs:20:12 [INFO] [stderr] | [INFO] [stderr] 20 | if !host_splitted[1].parse::().is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `host_splitted[1].parse::().is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/subcommand_host.rs:13:25 [INFO] [stderr] | [INFO] [stderr] 13 | if hostname.matches(":").count() > 1 { [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: this boolean expression can be simplified [INFO] [stderr] --> src/subcommand_host.rs:36:8 [INFO] [stderr] | [INFO] [stderr] 36 | if !db.host_get(hostname).is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `db.host_get(hostname).is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/subcommand_host.rs:116:16 [INFO] [stderr] | [INFO] [stderr] 116 | if !host.alias.is_some() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `host.alias.is_none()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 39 [INFO] [stderr] --> src/subcommand_sync.rs:32:1 [INFO] [stderr] | [INFO] [stderr] 32 | / pub fn sync(db: &mut Database, password_auth: bool, yes_authorized_keys_prompt: bool) { [INFO] [stderr] 33 | | let ssh_config = match ssh_config::get() { [INFO] [stderr] 34 | | Ok(c) => c, [INFO] [stderr] 35 | | Err(e) => { [INFO] [stderr] ... | [INFO] [stderr] 382 | | } [INFO] [stderr] 383 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/subcommand_sync.rs:68:60 [INFO] [stderr] | [INFO] [stderr] 68 | || cfg_host_label == &(host.alias.clone()).unwrap_or("".to_string()) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".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: the loop variable `i` is only used to index `diffs`. [INFO] [stderr] --> src/subcommand_sync.rs:314:18 [INFO] [stderr] | [INFO] [stderr] 314 | for i in 0..diffs.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 314 | for in &diffs { [INFO] [stderr] | ^^^^^^ ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: The function/method `cli_flow::prompt_yes_no` doesn't need a mutable reference [INFO] [stderr] --> src/subcommand_sync.rs:330:13 [INFO] [stderr] | [INFO] [stderr] 330 | / &mut format!( [INFO] [stderr] 331 | | "Verify changes. Do you want to sync to {}? (y/n):", [INFO] [stderr] 332 | | remote_authorized_keys_file [INFO] [stderr] 333 | | ), [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/subcommand_sync.rs:359:9 [INFO] [stderr] | [INFO] [stderr] 359 | / match remote_authorized_keys_fh.write(authorized_keys_sync_str.as_bytes()) { [INFO] [stderr] 360 | | Ok(r) => r, [INFO] [stderr] 361 | | Err(e) => { [INFO] [stderr] 362 | | cli_flow::errorln(&format!( [INFO] [stderr] ... | [INFO] [stderr] 368 | | } [INFO] [stderr] 369 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/subcommand_user.rs:18:5 [INFO] [stderr] | [INFO] [stderr] 18 | / io::stdin() [INFO] [stderr] 19 | | .read_line(&mut public_key) [INFO] [stderr] 20 | | .ok() [INFO] [stderr] 21 | | .expect("Couldn't read public key"); [INFO] [stderr] | |___________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ok_expect [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `ssh_permit_a38`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "c3f5b1faa6f42c8d3d2f3f333ce69b4d7c8f9c4cfc887bf8ee88fa226bc0ef9b"` [INFO] running `"docker" "rm" "-f" "c3f5b1faa6f42c8d3d2f3f333ce69b4d7c8f9c4cfc887bf8ee88fa226bc0ef9b"` [INFO] [stdout] c3f5b1faa6f42c8d3d2f3f333ce69b4d7c8f9c4cfc887bf8ee88fa226bc0ef9b