[INFO] crate postio 0.3.0 is already in cache [INFO] extracting crate postio 0.3.0 into work/ex/clippy-test-run/sources/stable/reg/postio/0.3.0 [INFO] extracting crate postio 0.3.0 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/postio/0.3.0 [INFO] validating manifest of postio-0.3.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 postio-0.3.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 postio-0.3.0 [INFO] finished frobbing postio-0.3.0 [INFO] frobbed toml for postio-0.3.0 written to work/ex/clippy-test-run/sources/stable/reg/postio/0.3.0/Cargo.toml [INFO] started frobbing postio-0.3.0 [INFO] finished frobbing postio-0.3.0 [INFO] frobbed toml for postio-0.3.0 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/postio/0.3.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 postio-0.3.0 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/postio/0.3.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] 54facb82ff7d41367cae8a1fe129db7b7e6db1f136b0e6a04bf6c32c7e35c099 [INFO] running `"docker" "start" "-a" "54facb82ff7d41367cae8a1fe129db7b7e6db1f136b0e6a04bf6c32c7e35c099"` [INFO] [stderr] Checking rust-s3 v0.8.2 [INFO] [stderr] Checking postio v0.3.0 (/opt/crater/workdir) [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/main.rs:157:13 [INFO] [stderr] | [INFO] [stderr] 157 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_with_newline)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_with_newline [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:58:27 [INFO] [stderr] | [INFO] [stderr] 58 | Ok(_) => {return true;}, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:59:28 [INFO] [stderr] | [INFO] [stderr] 59 | Err(_) => {return false;}, [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/postio.rs:46:10 [INFO] [stderr] | [INFO] [stderr] 46 | else { [INFO] [stderr] | __________^ [INFO] [stderr] 47 | | if user_path.exists() { [INFO] [stderr] 48 | | let mut config_file_holder = match File::open(&user_path) { [INFO] [stderr] 49 | | Ok(x) => x, [INFO] [stderr] ... | [INFO] [stderr] 64 | | } [INFO] [stderr] 65 | | } [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] 46 | else if user_path.exists() { [INFO] [stderr] 47 | let mut config_file_holder = match File::open(&user_path) { [INFO] [stderr] 48 | Ok(x) => x, [INFO] [stderr] 49 | Err(_) => {return false;}, [INFO] [stderr] 50 | }; [INFO] [stderr] 51 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:324:13 [INFO] [stderr] | [INFO] [stderr] 324 | return config; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/postio.rs:542:14 [INFO] [stderr] | [INFO] [stderr] 542 | else { [INFO] [stderr] | ______________^ [INFO] [stderr] 543 | | if list.contents.len() > 0 { [INFO] [stderr] 544 | | for (file_count, file_name) in list.contents.iter().enumerate() { //for each file print the file name [INFO] [stderr] 545 | | let paths: Vec<&str> = file_name.key.split("/").collect(); //file name has folder name on top of it [INFO] [stderr] ... | [INFO] [stderr] 551 | | } [INFO] [stderr] 552 | | } [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] 542 | else if list.contents.len() > 0 { [INFO] [stderr] 543 | for (file_count, file_name) in list.contents.iter().enumerate() { //for each file print the file name [INFO] [stderr] 544 | let paths: Vec<&str> = file_name.key.split("/").collect(); //file name has folder name on top of it [INFO] [stderr] 545 | output_list.push(paths[1].to_string()); [INFO] [stderr] 546 | if listing == true { [INFO] [stderr] 547 | println!("{}) {}", file_count, paths[1]); //will only every be one folder deep by design [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:614:9 [INFO] [stderr] | [INFO] [stderr] 614 | return file; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `file` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [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/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::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/postio.rs:9:16 [INFO] [stderr] | [INFO] [stderr] 9 | use std::env::{home_dir, var}; [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/postio.rs:86:20 [INFO] [stderr] | [INFO] [stderr] 86 | let home_dir = home_dir().unwrap(); [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/main.rs:103:35 [INFO] [stderr] | [INFO] [stderr] 103 | let home_directory_path = home_dir().unwrap(); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:58:27 [INFO] [stderr] | [INFO] [stderr] 58 | Ok(_) => {return true;}, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:59:28 [INFO] [stderr] | [INFO] [stderr] 59 | Err(_) => {return false;}, [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:63:13 [INFO] [stderr] | [INFO] [stderr] 63 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/postio.rs:46:10 [INFO] [stderr] | [INFO] [stderr] 46 | else { [INFO] [stderr] | __________^ [INFO] [stderr] 47 | | if user_path.exists() { [INFO] [stderr] 48 | | let mut config_file_holder = match File::open(&user_path) { [INFO] [stderr] 49 | | Ok(x) => x, [INFO] [stderr] ... | [INFO] [stderr] 64 | | } [INFO] [stderr] 65 | | } [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] 46 | else if user_path.exists() { [INFO] [stderr] 47 | let mut config_file_holder = match File::open(&user_path) { [INFO] [stderr] 48 | Ok(x) => x, [INFO] [stderr] 49 | Err(_) => {return false;}, [INFO] [stderr] 50 | }; [INFO] [stderr] 51 | [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:324:13 [INFO] [stderr] | [INFO] [stderr] 324 | return config; [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `config` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/postio.rs:542:14 [INFO] [stderr] | [INFO] [stderr] 542 | else { [INFO] [stderr] | ______________^ [INFO] [stderr] 543 | | if list.contents.len() > 0 { [INFO] [stderr] 544 | | for (file_count, file_name) in list.contents.iter().enumerate() { //for each file print the file name [INFO] [stderr] 545 | | let paths: Vec<&str> = file_name.key.split("/").collect(); //file name has folder name on top of it [INFO] [stderr] ... | [INFO] [stderr] 551 | | } [INFO] [stderr] 552 | | } [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] 542 | else if list.contents.len() > 0 { [INFO] [stderr] 543 | for (file_count, file_name) in list.contents.iter().enumerate() { //for each file print the file name [INFO] [stderr] 544 | let paths: Vec<&str> = file_name.key.split("/").collect(); //file name has folder name on top of it [INFO] [stderr] 545 | output_list.push(paths[1].to_string()); [INFO] [stderr] 546 | if listing == true { [INFO] [stderr] 547 | println!("{}) {}", file_count, paths[1]); //will only every be one folder deep by design [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/postio.rs:614:9 [INFO] [stderr] | [INFO] [stderr] 614 | return file; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `file` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [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/main.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::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/postio.rs:9:16 [INFO] [stderr] | [INFO] [stderr] 9 | use std::env::{home_dir, var}; [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/postio.rs:86:20 [INFO] [stderr] | [INFO] [stderr] 86 | let home_dir = home_dir().unwrap(); [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/main.rs:103:35 [INFO] [stderr] | [INFO] [stderr] 103 | let home_directory_path = home_dir().unwrap(); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn check_for_config(user_defined_path: &String) -> bool { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/postio.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / let postio_config_file_path; [INFO] [stderr] 89 | | [INFO] [stderr] 90 | | if user_defined_path == "" { [INFO] [stderr] 91 | | postio_dir = home_dir.join(".postio"); [INFO] [stderr] ... | [INFO] [stderr] 105 | | postio_config_file_path = user_path; [INFO] [stderr] 106 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let postio_config_file_path = if user_defined_path == "" { ..; postio_dir.join("config") } else { ..; user_path };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:176:51 [INFO] [stderr] | [INFO] [stderr] 176 | if postio_file_store_answer.to_uppercase() == "Y".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"Y"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:190:57 [INFO] [stderr] | [INFO] [stderr] 190 | else if postio_file_store_answer.to_uppercase() == "N".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"N"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:211:50 [INFO] [stderr] | [INFO] [stderr] 211 | if postio_key_store_answer.to_uppercase() == "Y".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"Y"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:225:55 [INFO] [stderr] | [INFO] [stderr] 225 | else if postio_key_store_answer.to_uppercase() == "N".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"N"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:290:38 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn read_config(config_file_path: &String) -> Config { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:311:48 [INFO] [stderr] | [INFO] [stderr] 311 | if delete_answer.to_uppercase() == "Y".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"Y"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:33 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:53 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:91 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:113 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:476:31 [INFO] [stderr] | [INFO] [stderr] 476 | pub fn add_users_folder(user: &String, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:476:54 [INFO] [stderr] | [INFO] [stderr] 476 | pub fn add_users_folder(user: &String, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:476:76 [INFO] [stderr] | [INFO] [stderr] 476 | pub fn add_users_folder(user: &String, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:500:35 [INFO] [stderr] | [INFO] [stderr] 500 | pub fn list_files_in_folder(user: &String, region_input: &String, bucket_name: &String, listing: bool) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:500:58 [INFO] [stderr] | [INFO] [stderr] 500 | pub fn list_files_in_folder(user: &String, region_input: &String, bucket_name: &String, listing: bool) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:500:80 [INFO] [stderr] | [INFO] [stderr] 500 | pub fn list_files_in_folder(user: &String, region_input: &String, bucket_name: &String, listing: bool) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/postio.rs:532:8 [INFO] [stderr] | [INFO] [stderr] 532 | if list.contents.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.contents.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/postio.rs:543:16 [INFO] [stderr] | [INFO] [stderr] 543 | if list.contents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.contents.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: single-character string constant used as pattern [INFO] [stderr] --> src/postio.rs:545:64 [INFO] [stderr] | [INFO] [stderr] 545 | let paths: Vec<&str> = file_name.key.split("/").collect(); //file name has folder name on top of it [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: equality checks against true are unnecessary [INFO] [stderr] --> src/postio.rs:547:24 [INFO] [stderr] | [INFO] [stderr] 547 | if listing == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `listing` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:31 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:54 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:76 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:96 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:35 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:54 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:76 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:98 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:624:37 [INFO] [stderr] | [INFO] [stderr] 624 | pub fn send_file(sending_file_path: &String, to_user: &String, pconfig: &Config) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:624:55 [INFO] [stderr] | [INFO] [stderr] 624 | pub fn send_file(sending_file_path: &String, to_user: &String, pconfig: &Config) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/postio.rs:634:61 [INFO] [stderr] | [INFO] [stderr] 634 | let file_name_list: Vec<&str> = sending_file_path.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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:642:70 [INFO] [stderr] | [INFO] [stderr] 642 | pub fn get_file(file_name_wrapper: Option, output_directory: &String, all: bool, pconfig: &Config, delete_file: bool) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/postio.rs:645:12 [INFO] [stderr] | [INFO] [stderr] 645 | if file_list.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `file_list.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: equality checks against true are unnecessary [INFO] [stderr] --> src/postio.rs:650:12 [INFO] [stderr] | [INFO] [stderr] 650 | if all == true { [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `all` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/postio.rs:667:17 [INFO] [stderr] | [INFO] [stderr] 667 | / let output_file_directory; [INFO] [stderr] 668 | | [INFO] [stderr] 669 | | if Path::new(output_directory).is_dir() { [INFO] [stderr] 670 | | output_file_directory = output_directory.to_string()+"/"+i; [INFO] [stderr] ... | [INFO] [stderr] 673 | | output_file_directory = output_directory.to_string(); [INFO] [stderr] 674 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let output_file_directory = if Path::new(output_directory).is_dir() { output_directory.to_string()+"/"+i } else { output_directory.to_string() };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/postio.rs:711:17 [INFO] [stderr] | [INFO] [stderr] 711 | / let output_file_directory; [INFO] [stderr] 712 | | [INFO] [stderr] 713 | | if Path::new(output_directory).is_dir() { [INFO] [stderr] 714 | | output_file_directory = output_directory.to_string()+"/"+&file_name; [INFO] [stderr] ... | [INFO] [stderr] 717 | | output_file_directory = output_directory.to_string(); [INFO] [stderr] 718 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let output_file_directory = if Path::new(output_directory).is_dir() { output_directory.to_string()+"/"+&file_name } else { output_directory.to_string() };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:105:54 [INFO] [stderr] | [INFO] [stderr] 105 | let config_file = matches.value_of("Config").unwrap_or(default_postio_path.to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| default_postio_path.to_str().unwrap())` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:111:15 [INFO] [stderr] | [INFO] [stderr] 111 | if file_list.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `file_list.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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | / let mut file_to_get = None; [INFO] [stderr] 126 | | [INFO] [stderr] 127 | | if user_file != Some("") { [INFO] [stderr] 128 | | file_to_get = Some(user_file.unwrap().to_string()); [INFO] [stderr] 129 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let file_to_get = if user_file != Some("") { Some(user_file.unwrap().to_string()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | / let mut all_files = false; [INFO] [stderr] 135 | | [INFO] [stderr] 136 | | if matches.is_present("All") { [INFO] [stderr] 137 | | all_files = true; [INFO] [stderr] 138 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let all_files = if matches.is_present("All") { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:40:44 [INFO] [stderr] | [INFO] [stderr] 40 | pub fn check_for_config(user_defined_path: &String) -> bool { [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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/postio.rs:88:5 [INFO] [stderr] | [INFO] [stderr] 88 | / let postio_config_file_path; [INFO] [stderr] 89 | | [INFO] [stderr] 90 | | if user_defined_path == "" { [INFO] [stderr] 91 | | postio_dir = home_dir.join(".postio"); [INFO] [stderr] ... | [INFO] [stderr] 105 | | postio_config_file_path = user_path; [INFO] [stderr] 106 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let postio_config_file_path = if user_defined_path == "" { ..; postio_dir.join("config") } else { ..; user_path };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:176:51 [INFO] [stderr] | [INFO] [stderr] 176 | if postio_file_store_answer.to_uppercase() == "Y".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"Y"` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:190:57 [INFO] [stderr] | [INFO] [stderr] 190 | else if postio_file_store_answer.to_uppercase() == "N".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"N"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:211:50 [INFO] [stderr] | [INFO] [stderr] 211 | if postio_key_store_answer.to_uppercase() == "Y".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"Y"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:225:55 [INFO] [stderr] | [INFO] [stderr] 225 | else if postio_key_store_answer.to_uppercase() == "N".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"N"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:290:38 [INFO] [stderr] | [INFO] [stderr] 290 | pub fn read_config(config_file_path: &String) -> Config { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/postio.rs:311:48 [INFO] [stderr] | [INFO] [stderr] 311 | if delete_answer.to_uppercase() == "Y".to_string() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try: `"Y"` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:33 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:53 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:91 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:451:113 [INFO] [stderr] | [INFO] [stderr] 451 | pub fn create_file_on_aws(user: &String, file_name: &String, file: Vec, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:476:31 [INFO] [stderr] | [INFO] [stderr] 476 | pub fn add_users_folder(user: &String, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:476:54 [INFO] [stderr] | [INFO] [stderr] 476 | pub fn add_users_folder(user: &String, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:476:76 [INFO] [stderr] | [INFO] [stderr] 476 | pub fn add_users_folder(user: &String, region_input: &String, bucket_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:500:35 [INFO] [stderr] | [INFO] [stderr] 500 | pub fn list_files_in_folder(user: &String, region_input: &String, bucket_name: &String, listing: bool) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:500:58 [INFO] [stderr] | [INFO] [stderr] 500 | pub fn list_files_in_folder(user: &String, region_input: &String, bucket_name: &String, listing: bool) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:500:80 [INFO] [stderr] | [INFO] [stderr] 500 | pub fn list_files_in_folder(user: &String, region_input: &String, bucket_name: &String, listing: bool) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/postio.rs:532:8 [INFO] [stderr] | [INFO] [stderr] 532 | if list.contents.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `list.contents.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/postio.rs:543:16 [INFO] [stderr] | [INFO] [stderr] 543 | if list.contents.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!list.contents.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: single-character string constant used as pattern [INFO] [stderr] --> src/postio.rs:545:64 [INFO] [stderr] | [INFO] [stderr] 545 | let paths: Vec<&str> = file_name.key.split("/").collect(); //file name has folder name on top of it [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: equality checks against true are unnecessary [INFO] [stderr] --> src/postio.rs:547:24 [INFO] [stderr] | [INFO] [stderr] 547 | if listing == true { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: try simplifying it as shown: `listing` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:31 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:54 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:76 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:569:96 [INFO] [stderr] | [INFO] [stderr] 569 | pub fn aws_file_deleter(user: &String, region_input: &String, bucket_name: &String, file_name: &String) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:35 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:54 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:76 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:600:98 [INFO] [stderr] | [INFO] [stderr] 600 | pub fn aws_file_getter(file_name: &String, username: &String, file_region: &String, bucket_name: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:624:37 [INFO] [stderr] | [INFO] [stderr] 624 | pub fn send_file(sending_file_path: &String, to_user: &String, pconfig: &Config) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:624:55 [INFO] [stderr] | [INFO] [stderr] 624 | pub fn send_file(sending_file_path: &String, to_user: &String, pconfig: &Config) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/postio.rs:634:61 [INFO] [stderr] | [INFO] [stderr] 634 | let file_name_list: Vec<&str> = sending_file_path.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: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/postio.rs:642:70 [INFO] [stderr] | [INFO] [stderr] 642 | pub fn get_file(file_name_wrapper: Option, output_directory: &String, all: bool, pconfig: &Config, delete_file: bool) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/postio.rs:645:12 [INFO] [stderr] | [INFO] [stderr] 645 | if file_list.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `file_list.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: equality checks against true are unnecessary [INFO] [stderr] --> src/postio.rs:650:12 [INFO] [stderr] | [INFO] [stderr] 650 | if all == true { [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `all` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/postio.rs:667:17 [INFO] [stderr] | [INFO] [stderr] 667 | / let output_file_directory; [INFO] [stderr] 668 | | [INFO] [stderr] 669 | | if Path::new(output_directory).is_dir() { [INFO] [stderr] 670 | | output_file_directory = output_directory.to_string()+"/"+i; [INFO] [stderr] ... | [INFO] [stderr] 673 | | output_file_directory = output_directory.to_string(); [INFO] [stderr] 674 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let output_file_directory = if Path::new(output_directory).is_dir() { output_directory.to_string()+"/"+i } else { output_directory.to_string() };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/postio.rs:711:17 [INFO] [stderr] | [INFO] [stderr] 711 | / let output_file_directory; [INFO] [stderr] 712 | | [INFO] [stderr] 713 | | if Path::new(output_directory).is_dir() { [INFO] [stderr] 714 | | output_file_directory = output_directory.to_string()+"/"+&file_name; [INFO] [stderr] ... | [INFO] [stderr] 717 | | output_file_directory = output_directory.to_string(); [INFO] [stderr] 718 | | } [INFO] [stderr] | |_________________^ help: it is more idiomatic to write: `let output_file_directory = if Path::new(output_directory).is_dir() { output_directory.to_string()+"/"+&file_name } else { output_directory.to_string() };` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/main.rs:105:54 [INFO] [stderr] | [INFO] [stderr] 105 | let config_file = matches.value_of("Config").unwrap_or(default_postio_path.to_str().unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| default_postio_path.to_str().unwrap())` [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: length comparison to zero [INFO] [stderr] --> src/main.rs:111:15 [INFO] [stderr] | [INFO] [stderr] 111 | if file_list.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `file_list.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: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | / let mut file_to_get = None; [INFO] [stderr] 126 | | [INFO] [stderr] 127 | | if user_file != Some("") { [INFO] [stderr] 128 | | file_to_get = Some(user_file.unwrap().to_string()); [INFO] [stderr] 129 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let file_to_get = if user_file != Some("") { Some(user_file.unwrap().to_string()) } else { None };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/main.rs:134:13 [INFO] [stderr] | [INFO] [stderr] 134 | / let mut all_files = false; [INFO] [stderr] 135 | | [INFO] [stderr] 136 | | if matches.is_present("All") { [INFO] [stderr] 137 | | all_files = true; [INFO] [stderr] 138 | | } [INFO] [stderr] | |_____________^ help: it is more idiomatic to write: `let all_files = if matches.is_present("All") { true } else { false };` [INFO] [stderr] | [INFO] [stderr] = note: you might not need `mut` at all [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] Finished dev [unoptimized + debuginfo] target(s) in 13.20s [INFO] running `"docker" "inspect" "54facb82ff7d41367cae8a1fe129db7b7e6db1f136b0e6a04bf6c32c7e35c099"` [INFO] running `"docker" "rm" "-f" "54facb82ff7d41367cae8a1fe129db7b7e6db1f136b0e6a04bf6c32c7e35c099"` [INFO] [stdout] 54facb82ff7d41367cae8a1fe129db7b7e6db1f136b0e6a04bf6c32c7e35c099