[INFO] updating cached repository asmuth/fhistory [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/asmuth/fhistory [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/asmuth/fhistory" "work/ex/clippy-test-run/sources/stable/gh/asmuth/fhistory"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/asmuth/fhistory'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/asmuth/fhistory" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/asmuth/fhistory"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/asmuth/fhistory'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 3e9d81f90eefc595fc55851c5092ca8938c03f75 [INFO] sha for GitHub repo asmuth/fhistory: 3e9d81f90eefc595fc55851c5092ca8938c03f75 [INFO] validating manifest of asmuth/fhistory 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 asmuth/fhistory 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 asmuth/fhistory [INFO] finished frobbing asmuth/fhistory [INFO] frobbed toml for asmuth/fhistory written to work/ex/clippy-test-run/sources/stable/gh/asmuth/fhistory/Cargo.toml [INFO] started frobbing asmuth/fhistory [INFO] finished frobbing asmuth/fhistory [INFO] frobbed toml for asmuth/fhistory written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/asmuth/fhistory/Cargo.toml [INFO] crate asmuth/fhistory 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 asmuth/fhistory 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/gh/asmuth/fhistory:/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] cbf7cf1f41ac77692548d565bcfd5d0ad4810a81906f523fbe98965bb7d1028d [INFO] running `"docker" "start" "-a" "cbf7cf1f41ac77692548d565bcfd5d0ad4810a81906f523fbe98965bb7d1028d"` [INFO] [stderr] Checking inflate v0.4.0 [INFO] [stderr] Checking rust-crypto v0.2.36 [INFO] [stderr] Checking fhistory v0.8.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | timestamp_us: timestamp_us, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timestamp_us` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:97:7 [INFO] [stderr] | [INFO] [stderr] 97 | index_path: index_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:98:7 [INFO] [stderr] | [INFO] [stderr] 98 | index_files: index_files, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_files` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:115:7 [INFO] [stderr] | [INFO] [stderr] 115 | index_path: index_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:195:7 [INFO] [stderr] | [INFO] [stderr] 195 | checksum_function: checksum_function, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum_function` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:309:7 [INFO] [stderr] | [INFO] [stderr] 309 | files: files, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `files` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:310:7 [INFO] [stderr] | [INFO] [stderr] 310 | checksum_function: checksum_function, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum_function` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:311:7 [INFO] [stderr] | [INFO] [stderr] 311 | message: message [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `writeln!(&mut std::io::stderr(), "")` [INFO] [stderr] --> src/prompt.rs:61:3 [INFO] [stderr] | [INFO] [stderr] 61 | writeln!(&mut std::io::stderr(), "").expect("cannot write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(&mut std::io::stderr())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/prompt.rs:136:3 [INFO] [stderr] | [INFO] [stderr] 136 | 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/prompt.rs:155:3 [INFO] [stderr] | [INFO] [stderr] 155 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:129:33 [INFO] [stderr] | [INFO] [stderr] 129 | Command::Operation{ op: op, args: args[2..].to_vec() } [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:89:9 [INFO] [stderr] | [INFO] [stderr] 89 | timestamp_us: timestamp_us, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `timestamp_us` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:97:7 [INFO] [stderr] | [INFO] [stderr] 97 | index_path: index_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:98:7 [INFO] [stderr] | [INFO] [stderr] 98 | index_files: index_files, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_files` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:115:7 [INFO] [stderr] | [INFO] [stderr] 115 | index_path: index_path, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `index_path` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:195:7 [INFO] [stderr] | [INFO] [stderr] 195 | checksum_function: checksum_function, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum_function` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:309:7 [INFO] [stderr] | [INFO] [stderr] 309 | files: files, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `files` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:310:7 [INFO] [stderr] | [INFO] [stderr] 310 | checksum_function: checksum_function, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `checksum_function` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/index.rs:311:7 [INFO] [stderr] | [INFO] [stderr] 311 | message: message [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `message` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: using `writeln!(&mut std::io::stderr(), "")` [INFO] [stderr] --> src/prompt.rs:61:3 [INFO] [stderr] | [INFO] [stderr] 61 | writeln!(&mut std::io::stderr(), "").expect("cannot write to stderr"); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `writeln!(&mut std::io::stderr())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::writeln_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#writeln_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `print!()` with a format string that ends in a single newline, consider using `println!()` instead [INFO] [stderr] --> src/prompt.rs:136:3 [INFO] [stderr] | [INFO] [stderr] 136 | 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/prompt.rs:155:3 [INFO] [stderr] | [INFO] [stderr] 155 | print!("\n"); [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [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: redundant field names in struct initialization [INFO] [stderr] --> src/main.rs:129:33 [INFO] [stderr] | [INFO] [stderr] 129 | Command::Operation{ op: op, args: args[2..].to_vec() } [INFO] [stderr] | ^^^^^^ help: replace it with: `op` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/checksum.rs:22:3 [INFO] [stderr] | [INFO] [stderr] 22 | / return match s { [INFO] [stderr] 23 | | "sha256" => Ok(ChecksumFunction::SHA256), [INFO] [stderr] 24 | | "md5" => Ok(ChecksumFunction::MD5), [INFO] [stderr] 25 | | _ => return Err(format!("invalid checksum function: {}", s)), [INFO] [stderr] 26 | | }; [INFO] [stderr] | |____^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 22 | match s { [INFO] [stderr] 23 | "sha256" => Ok(ChecksumFunction::SHA256), [INFO] [stderr] 24 | "md5" => Ok(ChecksumFunction::MD5), [INFO] [stderr] 25 | _ => return Err(format!("invalid checksum function: {}", s)), [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/checksum.rs:30:3 [INFO] [stderr] | [INFO] [stderr] 30 | / return match f { [INFO] [stderr] 31 | | &ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | | &ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] 33 | | }; [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 30 | match f { [INFO] [stderr] 31 | &ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | &ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] 33 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/checksum.rs:38:33 [INFO] [stderr] | [INFO] [stderr] 38 | ChecksumFunction::SHA256 => return compute_sha256(data), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_sha256(data)` [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/checksum.rs:39:30 [INFO] [stderr] | [INFO] [stderr] 39 | ChecksumFunction::MD5 => return compute_md5(data), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_md5(data)` [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/checksum.rs:45:33 [INFO] [stderr] | [INFO] [stderr] 45 | ChecksumFunction::SHA256 => return compute_file_sha256(path), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_file_sha256(path)` [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/checksum.rs:46:30 [INFO] [stderr] | [INFO] [stderr] 46 | ChecksumFunction::MD5 => return compute_file_md5(path), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_file_md5(path)` [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/checksum.rs:53:3 [INFO] [stderr] | [INFO] [stderr] 53 | return digest.result_str(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `digest.result_str()` [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/checksum.rs:65:3 [INFO] [stderr] | [INFO] [stderr] 65 | return Ok(digest.result_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(digest.result_str())` [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/checksum.rs:71:3 [INFO] [stderr] | [INFO] [stderr] 71 | return digest.result_str(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `digest.result_str()` [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/checksum.rs:83:3 [INFO] [stderr] | [INFO] [stderr] 83 | return Ok(digest.result_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(digest.result_str())` [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/op.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / return match str { [INFO] [stderr] 26 | | "ack" => Some(Operation::Acknowledge), [INFO] [stderr] 27 | | "status" => Some(Operation::Status), [INFO] [stderr] 28 | | "verify" => Some(Operation::Verify), [INFO] [stderr] ... | [INFO] [stderr] 31 | | _ => None, [INFO] [stderr] 32 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 25 | match str { [INFO] [stderr] 26 | "ack" => Some(Operation::Acknowledge), [INFO] [stderr] 27 | "status" => Some(Operation::Status), [INFO] [stderr] 28 | "verify" => Some(Operation::Verify), [INFO] [stderr] 29 | "init" => Some(Operation::Initialize), [INFO] [stderr] 30 | "log" => Some(Operation::History), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_acknowledge.rs:14:20 [INFO] [stderr] | [INFO] [stderr] 14 | pub 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: unneeded return statement [INFO] [stderr] --> src/op_acknowledge.rs:153:3 [INFO] [stderr] | [INFO] [stderr] 153 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_status.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_status.rs:90:3 [INFO] [stderr] | [INFO] [stderr] 90 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(diff.len() == 0)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_verify.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_verify.rs:85:3 [INFO] [stderr] | [INFO] [stderr] 85 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(diff.len() == 0)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_history.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_history.rs:56:3 [INFO] [stderr] | [INFO] [stderr] 56 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_init.rs:13:20 [INFO] [stderr] | [INFO] [stderr] 13 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_init.rs:110:3 [INFO] [stderr] | [INFO] [stderr] 110 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/index.rs:18:33 [INFO] [stderr] | [INFO] [stderr] 18 | const INDEX_FILENAME_PATTERN : &'static str = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/index.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / return Ok(IndexDirectory { [INFO] [stderr] 97 | | index_path: index_path, [INFO] [stderr] 98 | | index_files: index_files, [INFO] [stderr] 99 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 96 | Ok(IndexDirectory { [INFO] [stderr] 97 | index_path: index_path, [INFO] [stderr] 98 | index_files: index_files, [INFO] [stderr] 99 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / return Ok(IndexDirectory { [INFO] [stderr] 115 | | index_path: index_path, [INFO] [stderr] 116 | | index_files: Vec::::new(), [INFO] [stderr] 117 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 114 | Ok(IndexDirectory { [INFO] [stderr] 115 | index_path: index_path, [INFO] [stderr] 116 | index_files: Vec::::new(), [INFO] [stderr] 117 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | return self.index_files.get(0).cloned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.index_files.get(0).cloned()` [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/index.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | return &self.index_files; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.index_files` [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/index.rs:153:5 [INFO] [stderr] | [INFO] [stderr] 153 | return Ok(snapshot); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(snapshot)` [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/index.rs:182:5 [INFO] [stderr] | [INFO] [stderr] 182 | / return match result { [INFO] [stderr] 183 | | Ok(_) => Ok(snapshot_ref), [INFO] [stderr] 184 | | Err(e) => Err(format!("error while writing index: {}", e)), [INFO] [stderr] 185 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 182 | match result { [INFO] [stderr] 183 | Ok(_) => Ok(snapshot_ref), [INFO] [stderr] 184 | Err(e) => Err(format!("error while writing index: {}", e)), [INFO] [stderr] 185 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | / return IndexSnapshot { [INFO] [stderr] 194 | | files: BTreeMap::::new(), [INFO] [stderr] 195 | | checksum_function: checksum_function, [INFO] [stderr] 196 | | message: None, [INFO] [stderr] 197 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 193 | IndexSnapshot { [INFO] [stderr] 194 | files: BTreeMap::::new(), [INFO] [stderr] 195 | checksum_function: checksum_function, [INFO] [stderr] 196 | message: None, [INFO] [stderr] 197 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | return self.files.iter().map(|(path, _)| path.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.files.iter().map(|(path, _)| path.clone()).collect()` [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/index.rs:205:5 [INFO] [stderr] | [INFO] [stderr] 205 | return self.files.get(path); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.files.get(path)` [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/index.rs:213:5 [INFO] [stderr] | [INFO] [stderr] 213 | / return self [INFO] [stderr] 214 | | .files [INFO] [stderr] 215 | | .iter() [INFO] [stderr] 216 | | .fold(0, |acc, (_, finfo)| acc + finfo.size_bytes); [INFO] [stderr] | |___________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 213 | self [INFO] [stderr] 214 | .files [INFO] [stderr] 215 | .iter() [INFO] [stderr] 216 | .fold(0, |acc, (_, finfo)| acc + finfo.size_bytes) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:220:5 [INFO] [stderr] | [INFO] [stderr] 220 | return self.files.iter().count() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.files.iter().count() as u64` [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/index.rs:249:5 [INFO] [stderr] | [INFO] [stderr] 249 | return data.as_bytes().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `data.as_bytes().to_owned()` [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/index.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | / return Ok(IndexSnapshot { [INFO] [stderr] 309 | | files: files, [INFO] [stderr] 310 | | checksum_function: checksum_function, [INFO] [stderr] 311 | | message: message [INFO] [stderr] 312 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 308 | Ok(IndexSnapshot { [INFO] [stderr] 309 | files: files, [INFO] [stderr] 310 | checksum_function: checksum_function, [INFO] [stderr] 311 | message: message [INFO] [stderr] 312 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:337:3 [INFO] [stderr] | [INFO] [stderr] 337 | return dst.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `dst.to_owned()` [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/index.rs:361:3 [INFO] [stderr] | [INFO] [stderr] 361 | return Ok(dst.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(dst.to_owned())` [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/index_diff.rs:109:3 [INFO] [stderr] | [INFO] [stderr] 109 | return diffs; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `diffs` [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/index_diff.rs:126:3 [INFO] [stderr] | [INFO] [stderr] 126 | return files; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `files` [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/index_diff.rs:144:3 [INFO] [stderr] | [INFO] [stderr] 144 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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/index_scan.rs:92:3 [INFO] [stderr] | [INFO] [stderr] 92 | return Ok(index); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(index)` [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/index_scan.rs:146:3 [INFO] [stderr] | [INFO] [stderr] 146 | return Ok(index) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(index)` [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/index_scan.rs:178:3 [INFO] [stderr] | [INFO] [stderr] 178 | return Ok(index); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(index)` [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/index_scan.rs:204:3 [INFO] [stderr] | [INFO] [stderr] 204 | 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/prompt.rs:169:3 [INFO] [stderr] | [INFO] [stderr] 169 | / return match resp { [INFO] [stderr] 170 | | 121 => true, [INFO] [stderr] 171 | | _ => false, [INFO] [stderr] 172 | | }; [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 169 | match resp { [INFO] [stderr] 170 | 121 => true, [INFO] [stderr] 171 | _ => false, [INFO] [stderr] 172 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/prompt.rs:196:3 [INFO] [stderr] | [INFO] [stderr] 196 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:39:18 [INFO] [stderr] | [INFO] [stderr] 39 | const VERSION : &'static str = env!("CARGO_PKG_VERSION"); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | const DEFAULT_DATA_DIR : &'static str = "."; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:41:28 [INFO] [stderr] | [INFO] [stderr] 41 | const DEFAULT_INDEX_DIR : &'static str = ".fh"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:42:36 [INFO] [stderr] | [INFO] [stderr] 42 | const DEFAULT_CHECKSUM_FUNCTION : &'static str = "sha256"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/main.rs:76:3 [INFO] [stderr] | [INFO] [stderr] 76 | / return match op { [INFO] [stderr] 77 | | Operation::Acknowledge => op_acknowledge::perform(args), [INFO] [stderr] 78 | | Operation::Status => op_status::perform(args), [INFO] [stderr] 79 | | Operation::History => op_history::perform(args), [INFO] [stderr] 80 | | Operation::Initialize => op_init::perform(args), [INFO] [stderr] 81 | | Operation::Verify => op_verify::perform(args), [INFO] [stderr] 82 | | }; [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 76 | match op { [INFO] [stderr] 77 | Operation::Acknowledge => op_acknowledge::perform(args), [INFO] [stderr] 78 | Operation::Status => op_status::perform(args), [INFO] [stderr] 79 | Operation::History => op_history::perform(args), [INFO] [stderr] 80 | Operation::Initialize => op_init::perform(args), [INFO] [stderr] 81 | Operation::Verify => op_verify::perform(args), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:106:3 [INFO] [stderr] | [INFO] [stderr] 106 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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/checksum.rs:22:3 [INFO] [stderr] | [INFO] [stderr] 22 | / return match s { [INFO] [stderr] 23 | | "sha256" => Ok(ChecksumFunction::SHA256), [INFO] [stderr] 24 | | "md5" => Ok(ChecksumFunction::MD5), [INFO] [stderr] 25 | | _ => return Err(format!("invalid checksum function: {}", s)), [INFO] [stderr] 26 | | }; [INFO] [stderr] | |____^ [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] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 22 | match s { [INFO] [stderr] 23 | "sha256" => Ok(ChecksumFunction::SHA256), [INFO] [stderr] 24 | "md5" => Ok(ChecksumFunction::MD5), [INFO] [stderr] 25 | _ => return Err(format!("invalid checksum function: {}", s)), [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/checksum.rs:30:3 [INFO] [stderr] | [INFO] [stderr] 30 | / return match f { [INFO] [stderr] 31 | | &ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | | &ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] 33 | | }; [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 30 | match f { [INFO] [stderr] 31 | &ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | &ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] 33 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/checksum.rs:38:33 [INFO] [stderr] | [INFO] [stderr] 38 | ChecksumFunction::SHA256 => return compute_sha256(data), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_sha256(data)` [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/checksum.rs:39:30 [INFO] [stderr] | [INFO] [stderr] 39 | ChecksumFunction::MD5 => return compute_md5(data), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_md5(data)` [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/checksum.rs:45:33 [INFO] [stderr] | [INFO] [stderr] 45 | ChecksumFunction::SHA256 => return compute_file_sha256(path), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_file_sha256(path)` [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/checksum.rs:46:30 [INFO] [stderr] | [INFO] [stderr] 46 | ChecksumFunction::MD5 => return compute_file_md5(path), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `compute_file_md5(path)` [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/checksum.rs:53:3 [INFO] [stderr] | [INFO] [stderr] 53 | return digest.result_str(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `digest.result_str()` [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/checksum.rs:65:3 [INFO] [stderr] | [INFO] [stderr] 65 | return Ok(digest.result_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(digest.result_str())` [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/checksum.rs:71:3 [INFO] [stderr] | [INFO] [stderr] 71 | return digest.result_str(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `digest.result_str()` [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/checksum.rs:83:3 [INFO] [stderr] | [INFO] [stderr] 83 | return Ok(digest.result_str()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(digest.result_str())` [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/op.rs:25:5 [INFO] [stderr] | [INFO] [stderr] 25 | / return match str { [INFO] [stderr] 26 | | "ack" => Some(Operation::Acknowledge), [INFO] [stderr] 27 | | "status" => Some(Operation::Status), [INFO] [stderr] 28 | | "verify" => Some(Operation::Verify), [INFO] [stderr] ... | [INFO] [stderr] 31 | | _ => None, [INFO] [stderr] 32 | | }; [INFO] [stderr] | |______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 25 | match str { [INFO] [stderr] 26 | "ack" => Some(Operation::Acknowledge), [INFO] [stderr] 27 | "status" => Some(Operation::Status), [INFO] [stderr] 28 | "verify" => Some(Operation::Verify), [INFO] [stderr] 29 | "init" => Some(Operation::Initialize), [INFO] [stderr] 30 | "log" => Some(Operation::History), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_acknowledge.rs:14:20 [INFO] [stderr] | [INFO] [stderr] 14 | pub 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: unneeded return statement [INFO] [stderr] --> src/op_acknowledge.rs:153:3 [INFO] [stderr] | [INFO] [stderr] 153 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_status.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_status.rs:90:3 [INFO] [stderr] | [INFO] [stderr] 90 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(diff.len() == 0)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_verify.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_verify.rs:85:3 [INFO] [stderr] | [INFO] [stderr] 85 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(diff.len() == 0)` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_history.rs:12:20 [INFO] [stderr] | [INFO] [stderr] 12 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_history.rs:56:3 [INFO] [stderr] | [INFO] [stderr] 56 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/op_init.rs:13:20 [INFO] [stderr] | [INFO] [stderr] 13 | pub const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/op_init.rs:110:3 [INFO] [stderr] | [INFO] [stderr] 110 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/index.rs:18:33 [INFO] [stderr] | [INFO] [stderr] 18 | const INDEX_FILENAME_PATTERN : &'static str = [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/index.rs:96:5 [INFO] [stderr] | [INFO] [stderr] 96 | / return Ok(IndexDirectory { [INFO] [stderr] 97 | | index_path: index_path, [INFO] [stderr] 98 | | index_files: index_files, [INFO] [stderr] 99 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 96 | Ok(IndexDirectory { [INFO] [stderr] 97 | index_path: index_path, [INFO] [stderr] 98 | index_files: index_files, [INFO] [stderr] 99 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:114:5 [INFO] [stderr] | [INFO] [stderr] 114 | / return Ok(IndexDirectory { [INFO] [stderr] 115 | | index_path: index_path, [INFO] [stderr] 116 | | index_files: Vec::::new(), [INFO] [stderr] 117 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 114 | Ok(IndexDirectory { [INFO] [stderr] 115 | index_path: index_path, [INFO] [stderr] 116 | index_files: Vec::::new(), [INFO] [stderr] 117 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 121 | return self.index_files.get(0).cloned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.index_files.get(0).cloned()` [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/index.rs:125:5 [INFO] [stderr] | [INFO] [stderr] 125 | return &self.index_files; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.index_files` [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/index.rs:153:5 [INFO] [stderr] | [INFO] [stderr] 153 | return Ok(snapshot); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(snapshot)` [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/index.rs:182:5 [INFO] [stderr] | [INFO] [stderr] 182 | / return match result { [INFO] [stderr] 183 | | Ok(_) => Ok(snapshot_ref), [INFO] [stderr] 184 | | Err(e) => Err(format!("error while writing index: {}", e)), [INFO] [stderr] 185 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 182 | match result { [INFO] [stderr] 183 | Ok(_) => Ok(snapshot_ref), [INFO] [stderr] 184 | Err(e) => Err(format!("error while writing index: {}", e)), [INFO] [stderr] 185 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:193:5 [INFO] [stderr] | [INFO] [stderr] 193 | / return IndexSnapshot { [INFO] [stderr] 194 | | files: BTreeMap::::new(), [INFO] [stderr] 195 | | checksum_function: checksum_function, [INFO] [stderr] 196 | | message: None, [INFO] [stderr] 197 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 193 | IndexSnapshot { [INFO] [stderr] 194 | files: BTreeMap::::new(), [INFO] [stderr] 195 | checksum_function: checksum_function, [INFO] [stderr] 196 | message: None, [INFO] [stderr] 197 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:201:5 [INFO] [stderr] | [INFO] [stderr] 201 | return self.files.iter().map(|(path, _)| path.clone()).collect(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.files.iter().map(|(path, _)| path.clone()).collect()` [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/index.rs:205:5 [INFO] [stderr] | [INFO] [stderr] 205 | return self.files.get(path); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.files.get(path)` [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/index.rs:213:5 [INFO] [stderr] | [INFO] [stderr] 213 | / return self [INFO] [stderr] 214 | | .files [INFO] [stderr] 215 | | .iter() [INFO] [stderr] 216 | | .fold(0, |acc, (_, finfo)| acc + finfo.size_bytes); [INFO] [stderr] | |___________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 213 | self [INFO] [stderr] 214 | .files [INFO] [stderr] 215 | .iter() [INFO] [stderr] 216 | .fold(0, |acc, (_, finfo)| acc + finfo.size_bytes) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:220:5 [INFO] [stderr] | [INFO] [stderr] 220 | return self.files.iter().count() as u64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.files.iter().count() as u64` [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/index.rs:249:5 [INFO] [stderr] | [INFO] [stderr] 249 | return data.as_bytes().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `data.as_bytes().to_owned()` [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/index.rs:308:5 [INFO] [stderr] | [INFO] [stderr] 308 | / return Ok(IndexSnapshot { [INFO] [stderr] 309 | | files: files, [INFO] [stderr] 310 | | checksum_function: checksum_function, [INFO] [stderr] 311 | | message: message [INFO] [stderr] 312 | | }); [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 308 | Ok(IndexSnapshot { [INFO] [stderr] 309 | files: files, [INFO] [stderr] 310 | checksum_function: checksum_function, [INFO] [stderr] 311 | message: message [INFO] [stderr] 312 | }) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/index.rs:337:3 [INFO] [stderr] | [INFO] [stderr] 337 | return dst.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `dst.to_owned()` [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/index.rs:361:3 [INFO] [stderr] | [INFO] [stderr] 361 | return Ok(dst.to_owned()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(dst.to_owned())` [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/index_diff.rs:109:3 [INFO] [stderr] | [INFO] [stderr] 109 | return diffs; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `diffs` [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/index_diff.rs:126:3 [INFO] [stderr] | [INFO] [stderr] 126 | return files; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `files` [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/index_diff.rs:144:3 [INFO] [stderr] | [INFO] [stderr] 144 | return None; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `None` [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/index_scan.rs:92:3 [INFO] [stderr] | [INFO] [stderr] 92 | return Ok(index); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(index)` [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/index_scan.rs:146:3 [INFO] [stderr] | [INFO] [stderr] 146 | return Ok(index) [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(index)` [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/index_scan.rs:178:3 [INFO] [stderr] | [INFO] [stderr] 178 | return Ok(index); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(index)` [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/index_scan.rs:204:3 [INFO] [stderr] | [INFO] [stderr] 204 | 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/prompt.rs:169:3 [INFO] [stderr] | [INFO] [stderr] 169 | / return match resp { [INFO] [stderr] 170 | | 121 => true, [INFO] [stderr] 171 | | _ => false, [INFO] [stderr] 172 | | }; [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 169 | match resp { [INFO] [stderr] 170 | 121 => true, [INFO] [stderr] 171 | _ => false, [INFO] [stderr] 172 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/prompt.rs:196:3 [INFO] [stderr] | [INFO] [stderr] 196 | return Ok(()); [INFO] [stderr] | ^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(())` [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: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/main.rs:39:18 [INFO] [stderr] | [INFO] [stderr] 39 | const VERSION : &'static str = env!("CARGO_PKG_VERSION"); [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:40:27 [INFO] [stderr] | [INFO] [stderr] 40 | const DEFAULT_DATA_DIR : &'static str = "."; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:41:28 [INFO] [stderr] | [INFO] [stderr] 41 | const DEFAULT_INDEX_DIR : &'static str = ".fh"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:42:36 [INFO] [stderr] | [INFO] [stderr] 42 | const DEFAULT_CHECKSUM_FUNCTION : &'static str = "sha256"; [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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:43:16 [INFO] [stderr] | [INFO] [stderr] 43 | const USAGE : &'static str = "\ [INFO] [stderr] | -^^^^^^^---- help: consider removing `'static`: `&str` [INFO] [stderr] | [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: unneeded return statement [INFO] [stderr] --> src/main.rs:76:3 [INFO] [stderr] | [INFO] [stderr] 76 | / return match op { [INFO] [stderr] 77 | | Operation::Acknowledge => op_acknowledge::perform(args), [INFO] [stderr] 78 | | Operation::Status => op_status::perform(args), [INFO] [stderr] 79 | | Operation::History => op_history::perform(args), [INFO] [stderr] 80 | | Operation::Initialize => op_init::perform(args), [INFO] [stderr] 81 | | Operation::Verify => op_verify::perform(args), [INFO] [stderr] 82 | | }; [INFO] [stderr] | |____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] help: remove `return` as shown [INFO] [stderr] | [INFO] [stderr] 76 | match op { [INFO] [stderr] 77 | Operation::Acknowledge => op_acknowledge::perform(args), [INFO] [stderr] 78 | Operation::Status => op_status::perform(args), [INFO] [stderr] 79 | Operation::History => op_history::perform(args), [INFO] [stderr] 80 | Operation::Initialize => op_init::perform(args), [INFO] [stderr] 81 | Operation::Verify => op_verify::perform(args), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/main.rs:106:3 [INFO] [stderr] | [INFO] [stderr] 106 | return Ok(true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Ok(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: unused variable: `data_path_abs` [INFO] [stderr] --> src/op_acknowledge.rs:59:7 [INFO] [stderr] | [INFO] [stderr] 59 | let data_path_abs = match fs::canonicalize(&data_path) { [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using `_data_path_abs` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `list_files` [INFO] [stderr] --> src/index_diff.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn list_files(diffs: &IndexDiffList) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/checksum.rs:30:10 [INFO] [stderr] | [INFO] [stderr] 30 | return match f { [INFO] [stderr] | __________^ [INFO] [stderr] 31 | | &ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | | &ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] 33 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 30 | return match *f { [INFO] [stderr] 31 | ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] | [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/op_acknowledge.rs:36:22 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_acknowledge.rs:56:45 [INFO] [stderr] | [INFO] [stderr] 56 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_acknowledge.rs:57:47 [INFO] [stderr] | [INFO] [stderr] 57 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/op_acknowledge.rs:69:51 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(v) => v.as_secs() as i64 * 1_000_000 + v.subsec_nanos() as i64 / 1_000, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(v.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/op_acknowledge.rs:103:24 [INFO] [stderr] | [INFO] [stderr] 103 | None => return Err(format!("no index snapshot found")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no index snapshot found".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: length comparison to zero [INFO] [stderr] --> src/op_acknowledge.rs:135:6 [INFO] [stderr] | [INFO] [stderr] 135 | if diffs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diffs.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: useless use of `format!` [INFO] [stderr] --> src/op_acknowledge.rs:136:30 [INFO] [stderr] | [INFO] [stderr] 136 | ::prompt::print_success(&format!("Nothing to commit")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Nothing to commit".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/op_status.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_status.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_status.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/op_status.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match &snapshot_target_ref { [INFO] [stderr] | _________________________^ [INFO] [stderr] 54 | | &Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | | &None => return Err(format!("no snapshots")) [INFO] [stderr] 56 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match snapshot_target_ref { [INFO] [stderr] 54 | Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | None => return Err(format!("no snapshots")) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/op_status.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | &None => return Err(format!("no snapshots")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no snapshots".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/op_status.rs:87:37 [INFO] [stderr] | [INFO] [stderr] 87 | ::prompt::print_repository_status(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: length comparison to zero [INFO] [stderr] --> src/op_status.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/op_verify.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_verify.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_verify.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/op_verify.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match &snapshot_target_ref { [INFO] [stderr] | _________________________^ [INFO] [stderr] 54 | | &Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | | &None => return Err(format!("no snapshots")) [INFO] [stderr] 56 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match snapshot_target_ref { [INFO] [stderr] 54 | Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | None => return Err(format!("no snapshots")) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/op_verify.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | &None => return Err(format!("no snapshots")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no snapshots".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/op_verify.rs:82:37 [INFO] [stderr] | [INFO] [stderr] 82 | ::prompt::print_repository_status(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: length comparison to zero [INFO] [stderr] --> src/op_verify.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/op_history.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_history.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_history.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/op_init.rs:36:22 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_init.rs:56:45 [INFO] [stderr] | [INFO] [stderr] 56 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_init.rs:57:47 [INFO] [stderr] | [INFO] [stderr] 57 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_init.rs:59:34 [INFO] [stderr] | [INFO] [stderr] 59 | &flags.opt_str("checksum").unwrap_or(::DEFAULT_CHECKSUM_FUNCTION.into()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_CHECKSUM_FUNCTION.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/op_init.rs:66:51 [INFO] [stderr] | [INFO] [stderr] 66 | Ok(v) => v.as_secs() as i64 * 1_000_000 + v.subsec_nanos() as i64 / 1_000, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(v.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | return Err(format!("a newer snapshot exists. did we go back into the future?")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"a newer snapshot exists. did we go back into the future?".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index.rs:232:5 [INFO] [stderr] | [INFO] [stderr] 232 | / if let &Some(ref message) = &self.message { [INFO] [stderr] 233 | | data += &format!("#message {}\n", encode_string(message)); [INFO] [stderr] 234 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 232 | if let Some(ref message) = self.message { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/index.rs:260:31 [INFO] [stderr] | [INFO] [stderr] 260 | let fields = line.split(" ").collect::>(); [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: useless use of `format!` [INFO] [stderr] --> src/index.rs:305:18 [INFO] [stderr] | [INFO] [stderr] 305 | return Err(format!("timestamp does not match")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"timestamp does not match".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index.rs:349:25 [INFO] [stderr] | [INFO] [stderr] 349 | _ => return Err(format!("invalid escape sequence")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid escape sequence".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/index_diff.rs:55:11 [INFO] [stderr] | [INFO] [stderr] 55 | / if !deleted.contains_key(&checksum.to_owned()) { [INFO] [stderr] 56 | | deleted.insert(checksum.to_owned(), Vec::::new()); [INFO] [stderr] 57 | | } [INFO] [stderr] | |___________^ help: consider using: `deleted.entry(checksum.to_owned()).or_insert(Vec::::new())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/index_diff.rs:80:14 [INFO] [stderr] | [INFO] [stderr] 80 | .or(deleted_file_candidates.and_then(|v| v.get(0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| deleted_file_candidates.and_then(|v| v.get(0)))` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/index_diff.rs:103:19 [INFO] [stderr] | [INFO] [stderr] 103 | .filter(|d| match d { [INFO] [stderr] | ___________________^ [INFO] [stderr] 104 | | &IndexDiff::Deleted{ref file} => !renamed.contains(file), [INFO] [stderr] 105 | | _ => true, [INFO] [stderr] 106 | | }) [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 103 | .filter(|d| match *d { [INFO] [stderr] 104 | IndexDiff::Deleted{ref file} => !renamed.contains(file), [INFO] [stderr] | [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/index_diff.rs:112:26 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn list_files(diffs: &IndexDiffList) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/index_diff.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | let file = match d { [INFO] [stderr] | ________________^ [INFO] [stderr] 116 | | &::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 117 | | &::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 118 | | &::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 119 | | &::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 120 | | &::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] 121 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 115 | let file = match *d { [INFO] [stderr] 116 | ::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 117 | ::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 118 | ::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 119 | ::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 120 | ::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/index_diff.rs:130:25 [INFO] [stderr] | [INFO] [stderr] 130 | fn compare_finfo(fpath: &String, target: &::IndexFileInfo, actual: &::IndexFileInfo) -> Option { [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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/index_scan.rs:51:51 [INFO] [stderr] | [INFO] [stderr] 51 | .map(|v| v.as_secs() as i64 * 1_000_000 + v.subsec_nanos() as i64 / 1_000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(v.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index_scan.rs:65:26 [INFO] [stderr] | [INFO] [stderr] 65 | None => return Err(format!("invalid path")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid path".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index_scan.rs:111:25 [INFO] [stderr] | [INFO] [stderr] 111 | let mut file_info = match &index.get(&file_path) { [INFO] [stderr] | _________________________^ [INFO] [stderr] 112 | | &Some(v) => v.to_owned(), [INFO] [stderr] 113 | | &None => return Err(format!("invalid path")), [INFO] [stderr] 114 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] warning: unused variable: `data_path_abs` [INFO] [stderr] | [INFO] [stderr] 111 | let mut file_info = match index.get(&file_path) { [INFO] [stderr] --> src/op_acknowledge.rs:59:7 [INFO] [stderr] 112 | Some(v) => v.to_owned(), [INFO] [stderr] | [INFO] [stderr] 113 | None => return Err(format!("invalid path")), [INFO] [stderr] 59 | let data_path_abs = match fs::canonicalize(&data_path) { [INFO] [stderr] | [INFO] [stderr] | ^^^^^^^^^^^^^ help: consider using `_data_path_abs` instead [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index_scan.rs:113:27 [INFO] [stderr] | [INFO] [stderr] 113 | &None => return Err(format!("invalid path")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid path".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index_scan.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | let mut file_info = match &index.get(&file_path) { [INFO] [stderr] | _________________________^ [INFO] [stderr] 159 | | &Some(v) => v.to_owned(), [INFO] [stderr] 160 | | &None => return Err(format!("invalid path")), [INFO] [stderr] 161 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 158 | let mut file_info = match index.get(&file_path) { [INFO] [stderr] 159 | Some(v) => v.to_owned(), [INFO] [stderr] 160 | None => return Err(format!("invalid path")), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index_scan.rs:160:27 [INFO] [stderr] | [INFO] [stderr] 160 | &None => return Err(format!("invalid path")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid path".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index_scan.rs:163:27 [INFO] [stderr] | [INFO] [stderr] 163 | let other_file_info = match &other_index.get(&file_path) { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 164 | | &Some(v) => v, [INFO] [stderr] 165 | | &None => continue, [INFO] [stderr] 166 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 163 | let other_file_info = match other_index.get(&file_path) { [INFO] [stderr] 164 | Some(v) => v, [INFO] [stderr] 165 | None => continue, [INFO] [stderr] | [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/prompt.rs:110:25 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn print_diff(diff: &::index_diff::IndexDiffList) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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/prompt.rs:112:6 [INFO] [stderr] | [INFO] [stderr] 112 | if diff.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/prompt.rs:116:49 [INFO] [stderr] | [INFO] [stderr] 116 | let sort_name = |d: &::index_diff::IndexDiff| match d { [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 117 | | &::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 118 | | &::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 119 | | &::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 120 | | &::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 121 | | &::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] 122 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 116 | let sort_name = |d: &::index_diff::IndexDiff| match *d { [INFO] [stderr] 117 | ::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 118 | ::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 119 | ::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 120 | ::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 121 | ::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/prompt.rs:126:49 [INFO] [stderr] | [INFO] [stderr] 126 | let sort_rank = |d: &::index_diff::IndexDiff| match d { [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 127 | | &::index_diff::IndexDiff::Deleted{..} => 1, [INFO] [stderr] 128 | | &::index_diff::IndexDiff::Modified{..} => 2, [INFO] [stderr] 129 | | &::index_diff::IndexDiff::MetadataModified{..} => 2, [INFO] [stderr] 130 | | &::index_diff::IndexDiff::Renamed{..} => 3, [INFO] [stderr] 131 | | &::index_diff::IndexDiff::Created{..} => 4, [INFO] [stderr] 132 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 126 | let sort_rank = |d: &::index_diff::IndexDiff| match *d { [INFO] [stderr] 127 | ::index_diff::IndexDiff::Deleted{..} => 1, [INFO] [stderr] 128 | ::index_diff::IndexDiff::Modified{..} => 2, [INFO] [stderr] 129 | ::index_diff::IndexDiff::MetadataModified{..} => 2, [INFO] [stderr] 130 | ::index_diff::IndexDiff::Renamed{..} => 3, [INFO] [stderr] 131 | ::index_diff::IndexDiff::Created{..} => 4, [INFO] [stderr] | [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/prompt.rs:158:28 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn confirm_diffs(diff: &::index_diff::IndexDiffList) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/prompt.rs:162:3 [INFO] [stderr] | [INFO] [stderr] 162 | std::io::stdout().flush().ok().expect("Could not flush stdout"); [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 `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/prompt.rs:175:36 [INFO] [stderr] | [INFO] [stderr] 175 | pub fn print_confirmed_diffs(diff: &::index_diff::IndexDiffList) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/prompt.rs:193:41 [INFO] [stderr] | [INFO] [stderr] 193 | println!("\n {}\n", snap.message.unwrap_or("".into())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/prompt.rs:242:3 [INFO] [stderr] | [INFO] [stderr] 242 | / std::io::stderr() [INFO] [stderr] 243 | | .flush() [INFO] [stderr] 244 | | .ok() [INFO] [stderr] 245 | | .expect("Could not flush stdout"); [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 `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/prompt.rs:258:3 [INFO] [stderr] | [INFO] [stderr] 258 | / std::io::stderr() [INFO] [stderr] 259 | | .flush() [INFO] [stderr] 260 | | .ok() [INFO] [stderr] 261 | | .expect("Could not flush stdout"); [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:75:36 [INFO] [stderr] | [INFO] [stderr] 75 | fn perform_op(op: Operation, args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: function is never used: `list_files` [INFO] [stderr] --> src/index_diff.rs:112:1 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn list_files(diffs: &IndexDiffList) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/checksum.rs:30:10 [INFO] [stderr] | [INFO] [stderr] 30 | return match f { [INFO] [stderr] | __________^ [INFO] [stderr] 31 | | &ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | | &ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] 33 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 30 | return match *f { [INFO] [stderr] 31 | ChecksumFunction::SHA256 => "sha256".into(), [INFO] [stderr] 32 | ChecksumFunction::MD5 => "md5".into(), [INFO] [stderr] | [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/op_acknowledge.rs:36:22 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_acknowledge.rs:56:45 [INFO] [stderr] | [INFO] [stderr] 56 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_acknowledge.rs:57:47 [INFO] [stderr] | [INFO] [stderr] 57 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/op_acknowledge.rs:69:51 [INFO] [stderr] | [INFO] [stderr] 69 | Ok(v) => v.as_secs() as i64 * 1_000_000 + v.subsec_nanos() as i64 / 1_000, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(v.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/op_acknowledge.rs:103:24 [INFO] [stderr] | [INFO] [stderr] 103 | None => return Err(format!("no index snapshot found")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no index snapshot found".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: length comparison to zero [INFO] [stderr] --> src/op_acknowledge.rs:135:6 [INFO] [stderr] | [INFO] [stderr] 135 | if diffs.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diffs.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: useless use of `format!` [INFO] [stderr] --> src/op_acknowledge.rs:136:30 [INFO] [stderr] | [INFO] [stderr] 136 | ::prompt::print_success(&format!("Nothing to commit")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Nothing to commit".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [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/op_status.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_status.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_status.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/op_status.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match &snapshot_target_ref { [INFO] [stderr] | _________________________^ [INFO] [stderr] 54 | | &Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | | &None => return Err(format!("no snapshots")) [INFO] [stderr] 56 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match snapshot_target_ref { [INFO] [stderr] 54 | Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | None => return Err(format!("no snapshots")) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/op_status.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | &None => return Err(format!("no snapshots")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no snapshots".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/op_status.rs:87:37 [INFO] [stderr] | [INFO] [stderr] 87 | ::prompt::print_repository_status(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: length comparison to zero [INFO] [stderr] --> src/op_status.rs:90:13 [INFO] [stderr] | [INFO] [stderr] 90 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/op_verify.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_verify.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_verify.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/op_verify.rs:53:25 [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match &snapshot_target_ref { [INFO] [stderr] | _________________________^ [INFO] [stderr] 54 | | &Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | | &None => return Err(format!("no snapshots")) [INFO] [stderr] 56 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 53 | let snapshot_target = match snapshot_target_ref { [INFO] [stderr] 54 | Some(ref idx) => index.load(&idx)?, [INFO] [stderr] 55 | None => return Err(format!("no snapshots")) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/op_verify.rs:55:25 [INFO] [stderr] | [INFO] [stderr] 55 | &None => return Err(format!("no snapshots")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"no snapshots".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/op_verify.rs:82:37 [INFO] [stderr] | [INFO] [stderr] 82 | ::prompt::print_repository_status(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: length comparison to zero [INFO] [stderr] --> src/op_verify.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | return Ok(diff.len() == 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/op_history.rs:30:22 [INFO] [stderr] | [INFO] [stderr] 30 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_history.rs:47:45 [INFO] [stderr] | [INFO] [stderr] 47 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_history.rs:48:47 [INFO] [stderr] | [INFO] [stderr] 48 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/op_init.rs:36:22 [INFO] [stderr] | [INFO] [stderr] 36 | pub fn perform(args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_init.rs:56:45 [INFO] [stderr] | [INFO] [stderr] 56 | let data_path = flags.opt_str("data_dir").unwrap_or(::DEFAULT_DATA_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_DATA_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_init.rs:57:47 [INFO] [stderr] | [INFO] [stderr] 57 | let index_path = flags.opt_str("index_dir").unwrap_or(::DEFAULT_INDEX_DIR.into()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_INDEX_DIR.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 `unwrap_or` followed by a function call [INFO] [stderr] --> src/op_init.rs:59:34 [INFO] [stderr] | [INFO] [stderr] 59 | &flags.opt_str("checksum").unwrap_or(::DEFAULT_CHECKSUM_FUNCTION.into()))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| ::DEFAULT_CHECKSUM_FUNCTION.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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/op_init.rs:66:51 [INFO] [stderr] | [INFO] [stderr] 66 | Ok(v) => v.as_secs() as i64 * 1_000_000 + v.subsec_nanos() as i64 / 1_000, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(v.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index.rs:162:20 [INFO] [stderr] | [INFO] [stderr] 162 | return Err(format!("a newer snapshot exists. did we go back into the future?")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"a newer snapshot exists. did we go back into the future?".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index.rs:232:5 [INFO] [stderr] | [INFO] [stderr] 232 | / if let &Some(ref message) = &self.message { [INFO] [stderr] 233 | | data += &format!("#message {}\n", encode_string(message)); [INFO] [stderr] 234 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 232 | if let Some(ref message) = self.message { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/index.rs:260:31 [INFO] [stderr] | [INFO] [stderr] 260 | let fields = line.split(" ").collect::>(); [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: useless use of `format!` [INFO] [stderr] --> src/index.rs:305:18 [INFO] [stderr] | [INFO] [stderr] 305 | return Err(format!("timestamp does not match")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"timestamp does not match".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index.rs:349:25 [INFO] [stderr] | [INFO] [stderr] 349 | _ => return Err(format!("invalid escape sequence")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid escape sequence".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/index_diff.rs:55:11 [INFO] [stderr] | [INFO] [stderr] 55 | / if !deleted.contains_key(&checksum.to_owned()) { [INFO] [stderr] 56 | | deleted.insert(checksum.to_owned(), Vec::::new()); [INFO] [stderr] 57 | | } [INFO] [stderr] | |___________^ help: consider using: `deleted.entry(checksum.to_owned()).or_insert(Vec::::new())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_entry)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_entry [INFO] [stderr] [INFO] [stderr] warning: use of `or` followed by a function call [INFO] [stderr] --> src/index_diff.rs:80:14 [INFO] [stderr] | [INFO] [stderr] 80 | .or(deleted_file_candidates.and_then(|v| v.get(0))); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `or_else(|| deleted_file_candidates.and_then(|v| v.get(0)))` [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/index_diff.rs:103:19 [INFO] [stderr] | [INFO] [stderr] 103 | .filter(|d| match d { [INFO] [stderr] | ___________________^ [INFO] [stderr] 104 | | &IndexDiff::Deleted{ref file} => !renamed.contains(file), [INFO] [stderr] 105 | | _ => true, [INFO] [stderr] 106 | | }) [INFO] [stderr] | |_______^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 103 | .filter(|d| match *d { [INFO] [stderr] 104 | IndexDiff::Deleted{ref file} => !renamed.contains(file), [INFO] [stderr] | [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/index_diff.rs:112:26 [INFO] [stderr] | [INFO] [stderr] 112 | pub fn list_files(diffs: &IndexDiffList) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ [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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/index_diff.rs:115:16 [INFO] [stderr] | [INFO] [stderr] 115 | let file = match d { [INFO] [stderr] | ________________^ [INFO] [stderr] 116 | | &::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 117 | | &::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 118 | | &::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 119 | | &::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 120 | | &::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] 121 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 115 | let file = match *d { [INFO] [stderr] 116 | ::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 117 | ::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 118 | ::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 119 | ::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 120 | ::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/index_diff.rs:130:25 [INFO] [stderr] | [INFO] [stderr] 130 | fn compare_finfo(fpath: &String, target: &::IndexFileInfo, actual: &::IndexFileInfo) -> Option { [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: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/index_scan.rs:51:51 [INFO] [stderr] | [INFO] [stderr] 51 | .map(|v| v.as_secs() as i64 * 1_000_000 + v.subsec_nanos() as i64 / 1_000); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try: `i64::from(v.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index_scan.rs:65:26 [INFO] [stderr] | [INFO] [stderr] 65 | None => return Err(format!("invalid path")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid path".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index_scan.rs:111:25 [INFO] [stderr] | [INFO] [stderr] 111 | let mut file_info = match &index.get(&file_path) { [INFO] [stderr] | _________________________^ [INFO] [stderr] 112 | | &Some(v) => v.to_owned(), [INFO] [stderr] 113 | | &None => return Err(format!("invalid path")), [INFO] [stderr] 114 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 111 | let mut file_info = match index.get(&file_path) { [INFO] [stderr] 112 | Some(v) => v.to_owned(), [INFO] [stderr] 113 | None => return Err(format!("invalid path")), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index_scan.rs:113:27 [INFO] [stderr] | [INFO] [stderr] 113 | &None => return Err(format!("invalid path")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid path".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index_scan.rs:158:25 [INFO] [stderr] | [INFO] [stderr] 158 | let mut file_info = match &index.get(&file_path) { [INFO] [stderr] | _________________________^ [INFO] [stderr] 159 | | &Some(v) => v.to_owned(), [INFO] [stderr] 160 | | &None => return Err(format!("invalid path")), [INFO] [stderr] 161 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 158 | let mut file_info = match index.get(&file_path) { [INFO] [stderr] 159 | Some(v) => v.to_owned(), [INFO] [stderr] 160 | None => return Err(format!("invalid path")), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/index_scan.rs:160:27 [INFO] [stderr] | [INFO] [stderr] 160 | &None => return Err(format!("invalid path")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"invalid path".to_string()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_format [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/index_scan.rs:163:27 [INFO] [stderr] | [INFO] [stderr] 163 | let other_file_info = match &other_index.get(&file_path) { [INFO] [stderr] | ___________________________^ [INFO] [stderr] 164 | | &Some(v) => v, [INFO] [stderr] 165 | | &None => continue, [INFO] [stderr] 166 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 163 | let other_file_info = match other_index.get(&file_path) { [INFO] [stderr] 164 | Some(v) => v, [INFO] [stderr] 165 | None => continue, [INFO] [stderr] | [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/prompt.rs:110:25 [INFO] [stderr] | [INFO] [stderr] 110 | pub fn print_diff(diff: &::index_diff::IndexDiffList) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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/prompt.rs:112:6 [INFO] [stderr] | [INFO] [stderr] 112 | if diff.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `diff.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: you don't need to add `&` to all patterns [INFO] [stderr] --> src/prompt.rs:116:49 [INFO] [stderr] | [INFO] [stderr] 116 | let sort_name = |d: &::index_diff::IndexDiff| match d { [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 117 | | &::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 118 | | &::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 119 | | &::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 120 | | &::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 121 | | &::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] 122 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 116 | let sort_name = |d: &::index_diff::IndexDiff| match *d { [INFO] [stderr] 117 | ::index_diff::IndexDiff::Deleted{ref file} => file.to_owned(), [INFO] [stderr] 118 | ::index_diff::IndexDiff::Modified{ref file} => file.to_owned(), [INFO] [stderr] 119 | ::index_diff::IndexDiff::MetadataModified{ref file} => file.to_owned(), [INFO] [stderr] 120 | ::index_diff::IndexDiff::Renamed{ref from, ..} => from.to_owned(), [INFO] [stderr] 121 | ::index_diff::IndexDiff::Created{ref file} => file.to_owned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/prompt.rs:126:49 [INFO] [stderr] | [INFO] [stderr] 126 | let sort_rank = |d: &::index_diff::IndexDiff| match d { [INFO] [stderr] | _________________________________________________^ [INFO] [stderr] 127 | | &::index_diff::IndexDiff::Deleted{..} => 1, [INFO] [stderr] 128 | | &::index_diff::IndexDiff::Modified{..} => 2, [INFO] [stderr] 129 | | &::index_diff::IndexDiff::MetadataModified{..} => 2, [INFO] [stderr] 130 | | &::index_diff::IndexDiff::Renamed{..} => 3, [INFO] [stderr] 131 | | &::index_diff::IndexDiff::Created{..} => 4, [INFO] [stderr] 132 | | }; [INFO] [stderr] | |___^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 126 | let sort_rank = |d: &::index_diff::IndexDiff| match *d { [INFO] [stderr] 127 | ::index_diff::IndexDiff::Deleted{..} => 1, [INFO] [stderr] 128 | ::index_diff::IndexDiff::Modified{..} => 2, [INFO] [stderr] 129 | ::index_diff::IndexDiff::MetadataModified{..} => 2, [INFO] [stderr] 130 | ::index_diff::IndexDiff::Renamed{..} => 3, [INFO] [stderr] 131 | ::index_diff::IndexDiff::Created{..} => 4, [INFO] [stderr] | [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/prompt.rs:158:28 [INFO] [stderr] | [INFO] [stderr] 158 | pub fn confirm_diffs(diff: &::index_diff::IndexDiffList) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/prompt.rs:162:3 [INFO] [stderr] | [INFO] [stderr] 162 | std::io::stdout().flush().ok().expect("Could not flush stdout"); [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 `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/prompt.rs:175:36 [INFO] [stderr] | [INFO] [stderr] 175 | pub fn print_confirmed_diffs(diff: &::index_diff::IndexDiffList) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/prompt.rs:193:41 [INFO] [stderr] | [INFO] [stderr] 193 | println!("\n {}\n", snap.message.unwrap_or("".into())); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| "".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: called `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/prompt.rs:242:3 [INFO] [stderr] | [INFO] [stderr] 242 | / std::io::stderr() [INFO] [stderr] 243 | | .flush() [INFO] [stderr] 244 | | .ok() [INFO] [stderr] 245 | | .expect("Could not flush stdout"); [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 `ok().expect()` on a Result value. You can call `expect` directly on the `Result` [INFO] [stderr] --> src/prompt.rs:258:3 [INFO] [stderr] | [INFO] [stderr] 258 | / std::io::stderr() [INFO] [stderr] 259 | | .flush() [INFO] [stderr] 260 | | .ok() [INFO] [stderr] 261 | | .expect("Could not flush stdout"); [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:75:36 [INFO] [stderr] | [INFO] [stderr] 75 | fn perform_op(op: Operation, args: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[String]` [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] Finished dev [unoptimized + debuginfo] target(s) in 8.92s [INFO] running `"docker" "inspect" "cbf7cf1f41ac77692548d565bcfd5d0ad4810a81906f523fbe98965bb7d1028d"` [INFO] running `"docker" "rm" "-f" "cbf7cf1f41ac77692548d565bcfd5d0ad4810a81906f523fbe98965bb7d1028d"` [INFO] [stdout] cbf7cf1f41ac77692548d565bcfd5d0ad4810a81906f523fbe98965bb7d1028d