[INFO] updating cached repository jmquigs/greycrypt [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/jmquigs/greycrypt [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/jmquigs/greycrypt" "work/ex/clippy-test-run/sources/stable/gh/jmquigs/greycrypt"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/jmquigs/greycrypt'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/jmquigs/greycrypt" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jmquigs/greycrypt"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jmquigs/greycrypt'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 0142f0c3282b58e4041804efaaa2591fca596228 [INFO] sha for GitHub repo jmquigs/greycrypt: 0142f0c3282b58e4041804efaaa2591fca596228 [INFO] validating manifest of jmquigs/greycrypt 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 jmquigs/greycrypt 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 jmquigs/greycrypt [INFO] finished frobbing jmquigs/greycrypt [INFO] frobbed toml for jmquigs/greycrypt written to work/ex/clippy-test-run/sources/stable/gh/jmquigs/greycrypt/Cargo.toml [INFO] started frobbing jmquigs/greycrypt [INFO] finished frobbing jmquigs/greycrypt [INFO] frobbed toml for jmquigs/greycrypt written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/jmquigs/greycrypt/Cargo.toml [INFO] crate jmquigs/greycrypt 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 jmquigs/greycrypt against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/jmquigs/greycrypt:/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] 4fa175b0e1e3210cd496ca732e98df13722682ca75c8755e9e24d4bf863535ec [INFO] running `"docker" "start" "-a" "4fa175b0e1e3210cd496ca732e98df13722682ca75c8755e9e24d4bf863535ec"` [INFO] [stderr] Checking libc v0.1.12 [INFO] [stderr] Checking debug-builders v0.1.0 [INFO] [stderr] Checking bitflags v0.3.3 [INFO] [stderr] Checking net2 v0.2.29 [INFO] [stderr] Checking inotify v0.2.3 [INFO] [stderr] Checking filetime v0.1.10 [INFO] [stderr] Checking winapi v0.1.23 [INFO] [stderr] Checking nix v0.5.1 [INFO] [stderr] Compiling rust-crypto v0.2.36 [INFO] [stderr] Checking crc v1.4.0 [INFO] [stderr] Checking uuid v0.1.18 [INFO] [stderr] Checking miow v0.1.5 [INFO] [stderr] Checking termios v0.0.5 [INFO] [stderr] Checking unix_socket v0.4.6 [INFO] [stderr] Checking nix v0.4.3 [INFO] [stderr] Checking rpassword v0.0.5 [INFO] [stderr] Checking mio v0.5.1 [INFO] [stderr] Checking notify v2.6.3 [INFO] [stderr] Checking grey_crypt v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | host_name: host_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `host_name` [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | host_name: host_name, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `host_name` [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/config.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | mapping: mapping, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `mapping` [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/config.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | syncdb_dir: syncdb_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `syncdb_dir` [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/config.rs:86:17 [INFO] [stderr] | [INFO] [stderr] 86 | native_paths: native_paths, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `native_paths` [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/syncfile.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | is_binary: is_binary, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_binary` [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/syncfile.rs:342:13 [INFO] [stderr] | [INFO] [stderr] 342 | mdmap: mdmap, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `mdmap` [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/syncfile.rs:424:13 [INFO] [stderr] | [INFO] [stderr] 424 | keyword: keyword, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `keyword` [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/syncfile.rs:425:13 [INFO] [stderr] | [INFO] [stderr] 425 | relpath: relpath, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `relpath` [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/syncfile.rs:426:13 [INFO] [stderr] | [INFO] [stderr] 426 | revguid: revguid, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `revguid` [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/syncfile.rs:428:13 [INFO] [stderr] | [INFO] [stderr] 428 | cipher_hmac: cipher_hmac, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cipher_hmac` [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/syncfile.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | is_binary: is_binary, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_binary` [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/syncfile.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | is_deleted: is_deleted, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_deleted` [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/crypto_util.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | encryptor: encryptor, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryptor` [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/crypto_util.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | decryptor: decryptor, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `decryptor` [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/syncdb.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | syncdb_dir: syncdb_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `syncdb_dir` [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/syncdb.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | native_mtime: native_mtime [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `native_mtime` [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/syncdb.rs:144:17 [INFO] [stderr] | [INFO] [stderr] 144 | revguid: revguid, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `revguid` [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/core.rs:84:13 [INFO] [stderr] | [INFO] [stderr] 84 | syncdb: syncdb, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `syncdb` [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/core.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | conf: conf, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conf` [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/core.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | log_util: log_util, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `log_util` [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 `println!("")` [INFO] [stderr] --> src/commands.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/commands.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] | [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/config.rs:83:17 [INFO] [stderr] | [INFO] [stderr] 83 | mapping: mapping, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `mapping` [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/config.rs:85:17 [INFO] [stderr] | [INFO] [stderr] 85 | syncdb_dir: syncdb_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `syncdb_dir` [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/config.rs:86:17 [INFO] [stderr] | [INFO] [stderr] 86 | native_paths: native_paths, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `native_paths` [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/syncfile.rs:139:13 [INFO] [stderr] | [INFO] [stderr] 139 | is_binary: is_binary, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_binary` [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/syncfile.rs:342:13 [INFO] [stderr] | [INFO] [stderr] 342 | mdmap: mdmap, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `mdmap` [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/syncfile.rs:424:13 [INFO] [stderr] | [INFO] [stderr] 424 | keyword: keyword, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `keyword` [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/syncfile.rs:425:13 [INFO] [stderr] | [INFO] [stderr] 425 | relpath: relpath, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `relpath` [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/syncfile.rs:426:13 [INFO] [stderr] | [INFO] [stderr] 426 | revguid: revguid, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `revguid` [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/syncfile.rs:428:13 [INFO] [stderr] | [INFO] [stderr] 428 | cipher_hmac: cipher_hmac, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `cipher_hmac` [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/syncfile.rs:429:13 [INFO] [stderr] | [INFO] [stderr] 429 | is_binary: is_binary, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_binary` [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/syncfile.rs:430:13 [INFO] [stderr] | [INFO] [stderr] 430 | is_deleted: is_deleted, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `is_deleted` [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/crypto_util.rs:78:13 [INFO] [stderr] | [INFO] [stderr] 78 | encryptor: encryptor, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryptor` [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/crypto_util.rs:79:13 [INFO] [stderr] | [INFO] [stderr] 79 | decryptor: decryptor, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: replace it with: `decryptor` [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/syncdb.rs:53:13 [INFO] [stderr] | [INFO] [stderr] 53 | syncdb_dir: syncdb_dir, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `syncdb_dir` [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/syncdb.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | native_mtime: native_mtime [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `native_mtime` [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/syncdb.rs:144:17 [INFO] [stderr] | [INFO] [stderr] 144 | revguid: revguid, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `revguid` [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/core.rs:84:13 [INFO] [stderr] | [INFO] [stderr] 84 | syncdb: syncdb, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `syncdb` [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/core.rs:85:13 [INFO] [stderr] | [INFO] [stderr] 85 | conf: conf, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `conf` [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/core.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | log_util: log_util, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: replace it with: `log_util` [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 `println!("")` [INFO] [stderr] --> src/commands.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::println_empty_string)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: using `println!("")` [INFO] [stderr] --> src/commands.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | println!(""); [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `println!()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#println_empty_string [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/testlib.rs:180:13 [INFO] [stderr] | [INFO] [stderr] 180 | state: state [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `state` [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: unused `#[macro_use]` import [INFO] [stderr] --> src/main.rs:8:1 [INFO] [stderr] | [INFO] [stderr] 8 | #[macro_use] [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:68:15 [INFO] [stderr] | [INFO] [stderr] 68 | let res = slurp_file(fname, slurper); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:84:15 [INFO] [stderr] | [INFO] [stderr] 84 | let res = slurp_file(fname, slurper); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | toml [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:91:16 [INFO] [stderr] | [INFO] [stderr] 91 | let toml = match parser.parse() { [INFO] [stderr] | ________________^ [INFO] [stderr] 92 | | Some(value) => value, [INFO] [stderr] 93 | | None => { [INFO] [stderr] 94 | | println!("Failed to load toml file"); [INFO] [stderr] ... | [INFO] [stderr] 102 | | } [INFO] [stderr] 103 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | hostname [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:117:9 [INFO] [stderr] | [INFO] [stderr] 117 | / if hostname.trim() == "" { [INFO] [stderr] 118 | | // no direct std function for this, as far as I can tell [INFO] [stderr] 119 | | let output = Command::new("hostname") [INFO] [stderr] 120 | | .output() [INFO] [stderr] ... | [INFO] [stderr] 124 | | hostname [INFO] [stderr] 125 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:131:15 [INFO] [stderr] | [INFO] [stderr] 131 | let res = p.replace("\\","/").to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config.rs:57:25 [INFO] [stderr] | [INFO] [stderr] 57 | pub const BUILD_PREFIX:&'static str = "dbg"; [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/config.rs:413:5 [INFO] [stderr] | [INFO] [stderr] 413 | c [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/config.rs:404:13 [INFO] [stderr] | [INFO] [stderr] 404 | let c = SyncConfig::new( [INFO] [stderr] | _____________^ [INFO] [stderr] 405 | | sync_dir, [INFO] [stderr] 406 | | hn, [INFO] [stderr] 407 | | mapping, [INFO] [stderr] ... | [INFO] [stderr] 410 | | native_paths, [INFO] [stderr] 411 | | ); [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/mapping.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/mapping.rs:55:19 [INFO] [stderr] | [INFO] [stderr] 55 | let res = self.keyword_to_dir.get(&keyword); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/syncfile.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | dummy_hmac [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/syncfile.rs:54:22 [INFO] [stderr] | [INFO] [stderr] 54 | let dummy_hmac = dummy_hmac.to_base64(STANDARD); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/syncfile.rs:771:33 [INFO] [stderr] | [INFO] [stderr] 771 | const SIZE: usize = 1048576; [INFO] [stderr] | ^^^^^^^ help: consider: `1_048_576` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/syncdb.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/syncdb.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | let res = self.cache.get(sid); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | 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/trash.rs:74:23 [INFO] [stderr] | [INFO] [stderr] 74 | Err(_) => return false, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:75:22 [INFO] [stderr] | [INFO] [stderr] 75 | Ok(o) => return o.status.success(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `o.status.success()` [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/trash.rs:78:6 [INFO] [stderr] | [INFO] [stderr] 78 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:155:19 [INFO] [stderr] | [INFO] [stderr] 155 | Err(e) => return Err(format!("Error sending {} to trash: {:?}", f, e)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format!("Error sending {} to trash: {:?}", f, e))` [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/trash.rs:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | 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: unneeded return statement [INFO] [stderr] --> src/trash.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | / return Err(format!( [INFO] [stderr] 161 | | "Error sending {} to trash: nonzero return value: {:?}", [INFO] [stderr] 162 | | f, [INFO] [stderr] 163 | | o.status.code() [INFO] [stderr] 164 | | )); [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] 160 | Err(format!( [INFO] [stderr] 161 | "Error sending {} to trash: nonzero return value: {:?}", [INFO] [stderr] 162 | f, [INFO] [stderr] 163 | o.status.code() [INFO] [stderr] 164 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/fs_notify.rs:210:44 [INFO] [stderr] | [INFO] [stderr] 210 | } else { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 211 | | if !core::is_ignored_nativefile(&state.conf, &spath) { [INFO] [stderr] 212 | | native_files.insert(spath); [INFO] [stderr] 213 | | } [INFO] [stderr] 214 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 210 | } else if !core::is_ignored_nativefile(&state.conf, &spath) { [INFO] [stderr] 211 | native_files.insert(spath); [INFO] [stderr] 212 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:69:5 [INFO] [stderr] | [INFO] [stderr] 69 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:68:15 [INFO] [stderr] | [INFO] [stderr] 68 | let res = slurp_file(fname, slurper); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:85:5 [INFO] [stderr] | [INFO] [stderr] 85 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:84:15 [INFO] [stderr] | [INFO] [stderr] 84 | let res = slurp_file(fname, slurper); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:105:5 [INFO] [stderr] | [INFO] [stderr] 105 | toml [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:91:16 [INFO] [stderr] | [INFO] [stderr] 91 | let toml = match parser.parse() { [INFO] [stderr] | ________________^ [INFO] [stderr] 92 | | Some(value) => value, [INFO] [stderr] 93 | | None => { [INFO] [stderr] 94 | | println!("Failed to load toml file"); [INFO] [stderr] ... | [INFO] [stderr] 102 | | } [INFO] [stderr] 103 | | }; [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:127:5 [INFO] [stderr] | [INFO] [stderr] 127 | hostname [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:117:9 [INFO] [stderr] | [INFO] [stderr] 117 | / if hostname.trim() == "" { [INFO] [stderr] 118 | | // no direct std function for this, as far as I can tell [INFO] [stderr] 119 | | let output = Command::new("hostname") [INFO] [stderr] 120 | | .output() [INFO] [stderr] ... | [INFO] [stderr] 124 | | hostname [INFO] [stderr] 125 | | }; [INFO] [stderr] | |_________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/util.rs:132:5 [INFO] [stderr] | [INFO] [stderr] 132 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/util.rs:131:15 [INFO] [stderr] | [INFO] [stderr] 131 | let res = p.replace("\\","/").to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/config.rs:57:25 [INFO] [stderr] | [INFO] [stderr] 57 | pub const BUILD_PREFIX:&'static str = "dbg"; [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: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/config.rs:413:5 [INFO] [stderr] | [INFO] [stderr] 413 | c [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/config.rs:404:13 [INFO] [stderr] | [INFO] [stderr] 404 | let c = SyncConfig::new( [INFO] [stderr] | _____________^ [INFO] [stderr] 405 | | sync_dir, [INFO] [stderr] 406 | | hn, [INFO] [stderr] 407 | | mapping, [INFO] [stderr] ... | [INFO] [stderr] 410 | | native_paths, [INFO] [stderr] 411 | | ); [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/mapping.rs:56:9 [INFO] [stderr] | [INFO] [stderr] 56 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/mapping.rs:55:19 [INFO] [stderr] | [INFO] [stderr] 55 | let res = self.keyword_to_dir.get(&keyword); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/syncfile.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | dummy_hmac [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/syncfile.rs:54:22 [INFO] [stderr] | [INFO] [stderr] 54 | let dummy_hmac = dummy_hmac.to_base64(STANDARD); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/syncfile.rs:771:33 [INFO] [stderr] | [INFO] [stderr] 771 | const SIZE: usize = 1048576; [INFO] [stderr] | ^^^^^^^ help: consider: `1_048_576` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/syncfile.rs:1072:13 [INFO] [stderr] | [INFO] [stderr] 1072 | sf [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/syncfile.rs:1071:22 [INFO] [stderr] | [INFO] [stderr] 1071 | let sf = syncfile::SyncFile::from_syncfile_panic(&conf,&path); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/syncdb.rs:119:13 [INFO] [stderr] | [INFO] [stderr] 119 | res [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/syncdb.rs:118:23 [INFO] [stderr] | [INFO] [stderr] 118 | let res = self.cache.get(sid); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:67:9 [INFO] [stderr] | [INFO] [stderr] 67 | return true; [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `true` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:69:9 [INFO] [stderr] | [INFO] [stderr] 69 | 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/trash.rs:74:23 [INFO] [stderr] | [INFO] [stderr] 74 | Err(_) => return false, [INFO] [stderr] | ^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:75:22 [INFO] [stderr] | [INFO] [stderr] 75 | Ok(o) => return o.status.success(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `o.status.success()` [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/trash.rs:78:6 [INFO] [stderr] | [INFO] [stderr] 78 | return false; [INFO] [stderr] | ^^^^^^^^^^^^^ help: remove `return` as shown: `false` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/trash.rs:155:19 [INFO] [stderr] | [INFO] [stderr] 155 | Err(e) => return Err(format!("Error sending {} to trash: {:?}", f, e)), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Err(format!("Error sending {} to trash: {:?}", f, e))` [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/trash.rs:158:17 [INFO] [stderr] | [INFO] [stderr] 158 | 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: unneeded return statement [INFO] [stderr] --> src/trash.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | / return Err(format!( [INFO] [stderr] 161 | | "Error sending {} to trash: nonzero return value: {:?}", [INFO] [stderr] 162 | | f, [INFO] [stderr] 163 | | o.status.code() [INFO] [stderr] 164 | | )); [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] 160 | Err(format!( [INFO] [stderr] 161 | "Error sending {} to trash: nonzero return value: {:?}", [INFO] [stderr] 162 | f, [INFO] [stderr] 163 | o.status.code() [INFO] [stderr] 164 | )) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this `else { if .. }` block can be collapsed [INFO] [stderr] --> src/fs_notify.rs:210:44 [INFO] [stderr] | [INFO] [stderr] 210 | } else { [INFO] [stderr] | ____________________________________________^ [INFO] [stderr] 211 | | if !core::is_ignored_nativefile(&state.conf, &spath) { [INFO] [stderr] 212 | | native_files.insert(spath); [INFO] [stderr] 213 | | } [INFO] [stderr] 214 | | } [INFO] [stderr] | |_____________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 210 | } else if !core::is_ignored_nativefile(&state.conf, &spath) { [INFO] [stderr] 211 | native_files.insert(spath); [INFO] [stderr] 212 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/testlib.rs:85:9 [INFO] [stderr] | [INFO] [stderr] 85 | conf [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/testlib.rs:78:20 [INFO] [stderr] | [INFO] [stderr] 78 | let conf = config::SyncConfig::new( [INFO] [stderr] | ____________________^ [INFO] [stderr] 79 | | outpath.to_str().unwrap().to_owned(), [INFO] [stderr] 80 | | unit_test_hostname(), [INFO] [stderr] 81 | | mapping, [INFO] [stderr] 82 | | Some(ek), [INFO] [stderr] 83 | | Some(syncdb_dir.to_str().unwrap().to_owned()), [INFO] [stderr] 84 | | Vec::new()); [INFO] [stderr] | |_______________________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/testlib.rs:95:9 [INFO] [stderr] | [INFO] [stderr] 95 | config [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/testlib.rs:94:22 [INFO] [stderr] | [INFO] [stderr] 94 | let config = config::parse(Some(config_file),Some(unit_test_hostname()), || panic!("Tests should not require password input") ); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/syncfile.rs:773:17 [INFO] [stderr] | [INFO] [stderr] 773 | let mut buf = &mut v; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/crypto_util.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | let mut first = &mut iv[0 .. IV_SIZE/2]; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/crypto_util.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | let mut second = &mut iv[IV_SIZE/2 .. IV_SIZE]; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/config.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | / match create_dir_all(&sync_dir) { [INFO] [stderr] 130 | | Err(e) => panic!(format!("Failed to create sync directory: {:?}: {:?}", sync_dir, e)), [INFO] [stderr] 131 | | Ok(_) => () [INFO] [stderr] 132 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = create_dir_all(&sync_dir) { panic!(format!("Failed to create sync directory: {:?}: {:?}", sync_dir, e)) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/config.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | / match writeln!(data,"{}", entry) { [INFO] [stderr] 146 | | Err(e) => panic!("{}", e), [INFO] [stderr] 147 | | Ok(_) => () [INFO] [stderr] 148 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { panic!("{}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/config.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | / match sf.save_with_data(self,Some(ignore.clone()),data) { [INFO] [stderr] 152 | | Err(e) => panic!("Failed to write ignore list: {}", e), [INFO] [stderr] 153 | | Ok(_) => () [INFO] [stderr] 154 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = sf.save_with_data(self,Some(ignore.clone()),data) { panic!("Failed to write ignore list: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/config.rs:184:5 [INFO] [stderr] | [INFO] [stderr] 184 | / match env::var("MSYSTEM") { [INFO] [stderr] 185 | | Err(_) => false, [INFO] [stderr] 186 | | Ok(_) => true [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ help: try this: `env::var("MSYSTEM").is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:339:14 [INFO] [stderr] | [INFO] [stderr] 339 | .expect(&format!("No host definition found, try adding [{}]", &hn_map_key)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("No host definition found, try adding [{}]", &hn_map_key))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | / match remove_file(&self.filename) { [INFO] [stderr] 67 | | Err(e) => warn!("Failed to remove temporary file: {}: {}", &self.filename, e), [INFO] [stderr] 68 | | Ok(_) => () [INFO] [stderr] 69 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = remove_file(&self.filename) { warn!("Failed to remove temporary file: {}: {}", &self.filename, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | / match res { [INFO] [stderr] 185 | | Err(e) => return make_err(&format!("Failed to seek reader after metadata: {:?}", e)), [INFO] [stderr] 186 | | Ok(_) => () [INFO] [stderr] 187 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = res { return make_err(&format!("Failed to seek reader after metadata: {:?}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:226:23 [INFO] [stderr] | [INFO] [stderr] 226 | make_err(&format!("Header hmac does not equal expected value; likely incorrect password, possible bug, or file modified by unauthorized agent")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Header hmac does not equal expected value; likely incorrect password, possible bug, or file modified by unauthorized agent".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: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:244:30 [INFO] [stderr] | [INFO] [stderr] 244 | return make_err(&format!("Found empty line in syncfile header, file is invalid, may need to be removed")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Found empty line in syncfile header, file is invalid, may need to be removed".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: single-character string constant used as pattern [INFO] [stderr] --> src/syncfile.rs:309:52 [INFO] [stderr] | [INFO] [stderr] 309 | let verparts:Vec<&str> = verline.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: it looks like you're manually copying between slices [INFO] [stderr] --> src/syncfile.rs:334:18 [INFO] [stderr] | [INFO] [stderr] 334 | for i in 0..IV_SIZE { [INFO] [stderr] | ^^^^^^^^^^ help: try replacing the loop by: `iv_copy[..IV_SIZE].clone_from_slice(&iv[..IV_SIZE])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:364:42 [INFO] [stderr] | [INFO] [stderr] 364 | None => return make_err(&format!("Key 'kw' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'kw' is required in metadata".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/syncfile.rs:370:42 [INFO] [stderr] | [INFO] [stderr] 370 | None => return make_err(&format!("Key 'relpath' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'relpath' is required in metadata".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/syncfile.rs:376:42 [INFO] [stderr] | [INFO] [stderr] 376 | None => return make_err(&format!("Key 'revguid' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'revguid' is required in metadata".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/syncfile.rs:387:42 [INFO] [stderr] | [INFO] [stderr] 387 | None => return make_err(&format!("Key 'is_binary' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'is_binary' is required in metadata".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: it looks like you're manually copying between slices [INFO] [stderr] --> src/syncfile.rs:412:18 [INFO] [stderr] | [INFO] [stderr] 412 | for i in 0..IV_SIZE { [INFO] [stderr] | ^^^^^^^^^^ help: try replacing the loop by: `iv_copy[..IV_SIZE].clone_from_slice(&iv[..IV_SIZE])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:526:29 [INFO] [stderr] | [INFO] [stderr] 526 | / match out.flush() { [INFO] [stderr] 527 | | Err(e) => return make_err(&format!("Failed to flush output reader: {}",e)), [INFO] [stderr] 528 | | Ok(_) => () [INFO] [stderr] 529 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let Err(e) = out.flush() { return make_err(&format!("Failed to flush output reader: {}",e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:546:34 [INFO] [stderr] | [INFO] [stderr] 546 | return make_err(&format!("Data hmac does not equal expected value")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Data hmac does not equal expected value".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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:598:13 [INFO] [stderr] | [INFO] [stderr] 598 | / match res { [INFO] [stderr] 599 | | Err(e) => return make_err(&format!("Failed to create output local directory: {:?}: {:?}", outpath_par, e)), [INFO] [stderr] 600 | | Ok(_) => () [INFO] [stderr] 601 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = res { return make_err(&format!("Failed to create output local directory: {:?}: {:?}", outpath_par, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:617:13 [INFO] [stderr] | [INFO] [stderr] 617 | / match self.decrypt_to_writer(conf,&mut fout) { [INFO] [stderr] 618 | | Err(e) => return make_err(&format!("Failed to decrypt file: {:?}: {:?}", outpath, e)), [INFO] [stderr] 619 | | Ok(_) => () [INFO] [stderr] 620 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = self.decrypt_to_writer(conf,&mut fout) { return make_err(&format!("Failed to decrypt file: {:?}: {:?}", outpath, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:649:13 [INFO] [stderr] | [INFO] [stderr] 649 | / match res { [INFO] [stderr] 650 | | Err(e) => return make_err(&format!("Failed to create output sync directory: {:?}: {:?}", outpath_par, e)), [INFO] [stderr] 651 | | Ok(_) => () [INFO] [stderr] 652 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = res { return make_err(&format!("Failed to create output sync directory: {:?}: {:?}", outpath_par, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:666:38 [INFO] [stderr] | [INFO] [stderr] 666 | None => return make_err(&format!("No encryption key")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No encryption key".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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:697:13 [INFO] [stderr] | [INFO] [stderr] 697 | / match writeln!(out, "{}", b64_out) { [INFO] [stderr] 698 | | Err(e) => return make_err(&format!("Failed to write metadata: {}", e)), [INFO] [stderr] 699 | | Ok(_) => () [INFO] [stderr] 700 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { return make_err(&format!("Failed to write metadata: {}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:751:9 [INFO] [stderr] | [INFO] [stderr] 751 | / match self.write_syncfile_header(conf,&sid,&key,&iv,&mut headerbuf) { [INFO] [stderr] 752 | | Err(e) => return make_err(&format!("Failed to write syncfile header: {}", e)), [INFO] [stderr] 753 | | Ok(_) => () [INFO] [stderr] 754 | | }; [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = self.write_syncfile_header(conf,&sid,&key,&iv,&mut headerbuf) { return make_err(&format!("Failed to write syncfile header: {}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | / match res { [INFO] [stderr] 47 | | Err(e) => return Err(format!("Failed to create syncdb directory: {:?}: {:?}", syncdb_dir, e)), [INFO] [stderr] 48 | | Ok(_) => () [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = res { return Err(format!("Failed to create syncdb directory: {:?}: {:?}", syncdb_dir, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | / match res { [INFO] [stderr] 83 | | Err(e) => return Err(format!("Failed to create syncdb Store directory: {:?}: {:?}", storepath_par, e)), [INFO] [stderr] 84 | | Ok(_) => () [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = res { return Err(format!("Failed to create syncdb Store directory: {:?}: {:?}", storepath_par, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | / match writeln!(f, "revguid: {}", &entry.revguid.to_owned()) { [INFO] [stderr] 94 | | Err(e) => return Err(format!("{:?}", e)), [INFO] [stderr] 95 | | Ok(_) => () [INFO] [stderr] 96 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { return Err(format!("{:?}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | / match writeln!(f, "native_mtime: {}", entry.native_mtime) { [INFO] [stderr] 98 | | Err(e) => return Err(format!("{:?}", e)), [INFO] [stderr] 99 | | Ok(_) => () [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { return Err(format!("{:?}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/core.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | self.map.get(&pbs).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.map[&pbs]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:226:5 [INFO] [stderr] | [INFO] [stderr] 226 | / match state.syncdb.update(&sf,native_mtime) { [INFO] [stderr] 227 | | Err(e) => panic!("Failed to update sync db: {:?}", e), [INFO] [stderr] 228 | | Ok(_) => () [INFO] [stderr] 229 | | }; [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = state.syncdb.update(&sf,native_mtime) { panic!("Failed to update sync db: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:252:13 [INFO] [stderr] | [INFO] [stderr] 252 | / match state.syncdb.update(sf,native_mtime) { [INFO] [stderr] 253 | | Err(e) => panic!("Failed to update sync db: {:?}", e), [INFO] [stderr] 254 | | Ok(_) => () [INFO] [stderr] 255 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = state.syncdb.update(sf,native_mtime) { panic!("Failed to update sync db: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/core.rs:287:12 [INFO] [stderr] | [INFO] [stderr] 287 | if !sync_entry.is_none() && sync_entry.unwrap().revguid != sf.revguid { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sync_entry.is_some() && sync_entry.unwrap().revguid != sf.revguid` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:350:8 [INFO] [stderr] | [INFO] [stderr] 350 | / match state.syncdb.update(&sf,native_mtime) { [INFO] [stderr] 351 | | Err(e) => panic!("Failed to update sync db: {:?}: {}", native_fname, e), [INFO] [stderr] 352 | | Ok(_) => () [INFO] [stderr] 353 | | } [INFO] [stderr] | |________^ help: try this: `if let Err(e) = state.syncdb.update(&sf,native_mtime) { panic!("Failed to update sync db: {:?}: {}", native_fname, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | / match state.syncdb.update(sf,native_mtime) { [INFO] [stderr] 376 | | Err(e) => panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e), [INFO] [stderr] 377 | | Ok(_) => () [INFO] [stderr] 378 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = state.syncdb.update(sf,native_mtime) { panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:405:9 [INFO] [stderr] | [INFO] [stderr] 405 | / match trash::send_to_trash(&sf.nativefile) { [INFO] [stderr] 406 | | Err(e) => panic!("Failed to trash file: {:?}", e), [INFO] [stderr] 407 | | Ok(_) => () [INFO] [stderr] 408 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = trash::send_to_trash(&sf.nativefile) { panic!("Failed to trash file: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:422:5 [INFO] [stderr] | [INFO] [stderr] 422 | / match state.syncdb.update(&sf,native_mtime) { [INFO] [stderr] 423 | | Err(e) => panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e), [INFO] [stderr] 424 | | Ok(_) => () [INFO] [stderr] 425 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = state.syncdb.update(&sf,native_mtime) { panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/core.rs:558:13 [INFO] [stderr] | [INFO] [stderr] 558 | / if files_for_id.contains_key(&file_syncid) { [INFO] [stderr] 559 | | files_for_id.get_mut(&file_syncid).unwrap().push(pbs); [INFO] [stderr] 560 | | } else { [INFO] [stderr] 561 | | files_for_id.insert(file_syncid,vec![pbs]); [INFO] [stderr] 562 | | } [INFO] [stderr] | |_____________^ help: consider using: `files_for_id.entry(file_syncid)` [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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/core.rs:624:5 [INFO] [stderr] | [INFO] [stderr] 624 | / state.conf.native_paths.iter().find(|np| { [INFO] [stderr] 625 | | let res = mapping.get_kw_relpath(np); [INFO] [stderr] 626 | | let (_,nat_relpath) = match res { [INFO] [stderr] 627 | | None => return false, [INFO] [stderr] ... | [INFO] [stderr] 632 | | sf.relpath.starts_with(&nat_relpath) [INFO] [stderr] 633 | | }).is_some() [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/core.rs:690:1 [INFO] [stderr] | [INFO] [stderr] 690 | / pub fn do_sync(state:&mut SyncState) { [INFO] [stderr] 691 | | state.sync_file_cache.flush(); [INFO] [stderr] 692 | | state.files_modifed_by_sync.clear(); [INFO] [stderr] 693 | | [INFO] [stderr] ... | [INFO] [stderr] 853 | | } [INFO] [stderr] 854 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/core.rs:752:27 [INFO] [stderr] | [INFO] [stderr] 752 | let cflicts = state.sync_files_for_id.get(&sid).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&state.sync_files_for_id[&sid]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/commands.rs:25:18 [INFO] [stderr] | [INFO] [stderr] 25 | for (k,_) in &mdhash { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 25 | for k in mdhash.keys() { [INFO] [stderr] | ^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commands.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | let v = mdhash.get(&k).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mdhash[&k]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/commands.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | / match fs::remove_file(&syncfile) { [INFO] [stderr] 136 | | Err(e) => warn!("Failed to remove file: {}; Error: {}", &syncfile, e), [INFO] [stderr] 137 | | Ok(_) => () [INFO] [stderr] 138 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = fs::remove_file(&syncfile) { warn!("Failed to remove file: {}; Error: {}", &syncfile, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/commands.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | / match io::stdin().read_line(&mut line) { [INFO] [stderr] 149 | | Err(e) => panic!("failed to read line: {}", e), [INFO] [stderr] 150 | | Ok(_) => () [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = io::stdin().read_line(&mut line) { panic!("failed to read line: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/commands.rs:212:22 [INFO] [stderr] | [INFO] [stderr] 212 | for (_,files) in &syncfiles { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 212 | for files in syncfiles.values() { [INFO] [stderr] | ^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/commands.rs:237:21 [INFO] [stderr] | [INFO] [stderr] 237 | / match sf.save_with_data(&new_conf, Some(syncfile), data) { [INFO] [stderr] 238 | | Err(e) => panic!("Error encrypting file data for {}: {:?}", f, e), [INFO] [stderr] 239 | | Ok(_) => () [INFO] [stderr] 240 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Err(e) = sf.save_with_data(&new_conf, Some(syncfile), data) { panic!("Error encrypting file data for {}: {:?}", f, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/commands.rs:244:13 [INFO] [stderr] | [INFO] [stderr] 244 | count = count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `count += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/commands.rs:282:8 [INFO] [stderr] | [INFO] [stderr] 282 | if !removed.is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `removed.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/trash.rs:68:41 [INFO] [stderr] | [INFO] [stderr] 68 | } else if cfg!(target_os = "macos") { [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 69 | | return true; [INFO] [stderr] 70 | | } else if cfg!(target_os = "linux") { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/trash.rs:66:36 [INFO] [stderr] | [INFO] [stderr] 66 | if cfg!(target_os = "windows") { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 67 | | return true; [INFO] [stderr] 68 | | } else if cfg!(target_os = "macos") { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | / match writeln!(stream, "{}", req) { [INFO] [stderr] 58 | | Err(e) => println!("Failed to write pd request: {}", e), [INFO] [stderr] 59 | | Ok(_) => () [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { println!("Failed to write pd request: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / match stream.shutdown(Shutdown::Write) { [INFO] [stderr] 62 | | Err(e) => println!("Failed to shutdown pd request stream: {}", e), [INFO] [stderr] 63 | | Ok(_) => () [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = stream.shutdown(Shutdown::Write) { println!("Failed to shutdown pd request stream: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/password_daemon.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | remaining = remaining - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remaining -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:114:21 [INFO] [stderr] | [INFO] [stderr] 114 | / match fs::create_dir_all(&sd) { [INFO] [stderr] 115 | | Err(e) => panic!("Failed to create pd directory: {}", e), [INFO] [stderr] 116 | | Ok(_) => () [INFO] [stderr] 117 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Err(e) = fs::create_dir_all(&sd) { panic!("Failed to create pd directory: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:125:25 [INFO] [stderr] | [INFO] [stderr] 125 | / match fs::set_permissions(get_socket_dir(), permissions) { [INFO] [stderr] 126 | | Err(e) => panic!("Failed to set socket permissions: {}", e), [INFO] [stderr] 127 | | Ok(_) => () [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Err(e) = fs::set_permissions(get_socket_dir(), permissions) { panic!("Failed to set socket permissions: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:166:29 [INFO] [stderr] | [INFO] [stderr] 166 | / match write!(stream, "{}", password) { [INFO] [stderr] 167 | | Err(e) => panic!("Failed to write pw to client stream: {}", e), [INFO] [stderr] 168 | | Ok(_) => () [INFO] [stderr] 169 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) { panic!("Failed to write pw to client stream: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:171:29 [INFO] [stderr] | [INFO] [stderr] 171 | / match stream.shutdown(Shutdown::Write) { [INFO] [stderr] 172 | | Err(e) => panic!("Failed to shutdown client stream: {}", e), [INFO] [stderr] 173 | | Ok(_) => () [INFO] [stderr] 174 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let Err(e) = stream.shutdown(Shutdown::Write) { panic!("Failed to shutdown client stream: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fs_notify.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / match watcher.watch(state.conf.sync_dir()) { [INFO] [stderr] 83 | | Err(e) => panic!("Failed to watch: {}: {:?}", state.conf.sync_dir(), e), [INFO] [stderr] 84 | | Ok(_) => () [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = watcher.watch(state.conf.sync_dir()) { panic!("Failed to watch: {}: {:?}", state.conf.sync_dir(), e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fs_notify.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | / match watcher.watch(p) { [INFO] [stderr] 89 | | Err(e) => panic!("Failed to watch: {}: {:?}", p, e), [INFO] [stderr] 90 | | Ok(_) => () [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = watcher.watch(p) { panic!("Failed to watch: {}: {:?}", p, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `dups`. [INFO] [stderr] --> src/dedup.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | for i in 1..dups.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 89 | for in dups.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dedup.rs:111:13 [INFO] [stderr] | [INFO] [stderr] 111 | / match remove_file(&dup) { [INFO] [stderr] 112 | | Err(e) => warn!("Failed to remove dup sync file: {}: {}", dup, e), [INFO] [stderr] 113 | | Ok(_) => (), [INFO] [stderr] 114 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = remove_file(&dup) { warn!("Failed to remove dup sync file: {}: {}", dup, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/dedup.rs:139:19 [INFO] [stderr] | [INFO] [stderr] 139 | for (k, _) in &files_for_id { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 139 | for k in files_for_id.keys() { [INFO] [stderr] | ^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dedup.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | / match remove_file(sfname) { [INFO] [stderr] 161 | | Err(e) => panic!("Failed to remove syncfile: {:?}", e), [INFO] [stderr] 162 | | Ok(_) => (), [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = remove_file(sfname) { panic!("Failed to remove syncfile: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/dedup.rs:204:17 [INFO] [stderr] | [INFO] [stderr] 204 | dup_cand_idx = dup_cand_idx + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dup_cand_idx += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/main.rs:46:1 [INFO] [stderr] | [INFO] [stderr] 46 | / fn main() { [INFO] [stderr] 47 | | if !trash::can_trash() { [INFO] [stderr] 48 | | println!("Sorry, sending files to trash is not implemented on this operating system. Exiting."); [INFO] [stderr] 49 | | return; [INFO] [stderr] ... | [INFO] [stderr] 254 | | } [INFO] [stderr] 255 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:147:52 [INFO] [stderr] | [INFO] [stderr] 147 | password_daemon::start(&pw,ttl as i64); [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(ttl)` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:247:47 [INFO] [stderr] | [INFO] [stderr] 247 | thread::sleep(Duration::from_secs(poll_interval as u64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(poll_interval)` [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: variable does not need to be mutable [INFO] [stderr] --> src/syncfile.rs:773:17 [INFO] [stderr] | [INFO] [stderr] 773 | let mut buf = &mut v; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `grey_crypt`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/crypto_util.rs:54:13 [INFO] [stderr] | [INFO] [stderr] 54 | let mut first = &mut iv[0 .. IV_SIZE/2]; [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/crypto_util.rs:58:13 [INFO] [stderr] | [INFO] [stderr] 58 | let mut second = &mut iv[IV_SIZE/2 .. IV_SIZE]; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/syncdb.rs:225:17 [INFO] [stderr] | [INFO] [stderr] 225 | let mut syncdb:&mut syncdb::SyncDb = &mut syncdb; [INFO] [stderr] | ----^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/config.rs:129:13 [INFO] [stderr] | [INFO] [stderr] 129 | / match create_dir_all(&sync_dir) { [INFO] [stderr] 130 | | Err(e) => panic!(format!("Failed to create sync directory: {:?}: {:?}", sync_dir, e)), [INFO] [stderr] 131 | | Ok(_) => () [INFO] [stderr] 132 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = create_dir_all(&sync_dir) { panic!(format!("Failed to create sync directory: {:?}: {:?}", sync_dir, e)) }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/config.rs:145:13 [INFO] [stderr] | [INFO] [stderr] 145 | / match writeln!(data,"{}", entry) { [INFO] [stderr] 146 | | Err(e) => panic!("{}", e), [INFO] [stderr] 147 | | Ok(_) => () [INFO] [stderr] 148 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { panic!("{}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/config.rs:151:9 [INFO] [stderr] | [INFO] [stderr] 151 | / match sf.save_with_data(self,Some(ignore.clone()),data) { [INFO] [stderr] 152 | | Err(e) => panic!("Failed to write ignore list: {}", e), [INFO] [stderr] 153 | | Ok(_) => () [INFO] [stderr] 154 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = sf.save_with_data(self,Some(ignore.clone()),data) { panic!("Failed to write ignore list: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: redundant pattern matching, consider using `is_ok()` [INFO] [stderr] --> src/config.rs:184:5 [INFO] [stderr] | [INFO] [stderr] 184 | / match env::var("MSYSTEM") { [INFO] [stderr] 185 | | Err(_) => false, [INFO] [stderr] 186 | | Ok(_) => true [INFO] [stderr] 187 | | } [INFO] [stderr] | |_____^ help: try this: `env::var("MSYSTEM").is_ok()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_pattern_matching)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_pattern_matching [INFO] [stderr] [INFO] [stderr] warning: use of `expect` followed by a function call [INFO] [stderr] --> src/config.rs:339:14 [INFO] [stderr] | [INFO] [stderr] 339 | .expect(&format!("No host definition found, try adding [{}]", &hn_map_key)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|| panic!("No host definition found, try adding [{}]", &hn_map_key))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::expect_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#expect_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:66:13 [INFO] [stderr] | [INFO] [stderr] 66 | / match remove_file(&self.filename) { [INFO] [stderr] 67 | | Err(e) => warn!("Failed to remove temporary file: {}: {}", &self.filename, e), [INFO] [stderr] 68 | | Ok(_) => () [INFO] [stderr] 69 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = remove_file(&self.filename) { warn!("Failed to remove temporary file: {}: {}", &self.filename, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:184:9 [INFO] [stderr] | [INFO] [stderr] 184 | / match res { [INFO] [stderr] 185 | | Err(e) => return make_err(&format!("Failed to seek reader after metadata: {:?}", e)), [INFO] [stderr] 186 | | Ok(_) => () [INFO] [stderr] 187 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = res { return make_err(&format!("Failed to seek reader after metadata: {:?}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:226:23 [INFO] [stderr] | [INFO] [stderr] 226 | make_err(&format!("Header hmac does not equal expected value; likely incorrect password, possible bug, or file modified by unauthorized agent")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Header hmac does not equal expected value; likely incorrect password, possible bug, or file modified by unauthorized agent".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: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:244:30 [INFO] [stderr] | [INFO] [stderr] 244 | return make_err(&format!("Found empty line in syncfile header, file is invalid, may need to be removed")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Found empty line in syncfile header, file is invalid, may need to be removed".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: single-character string constant used as pattern [INFO] [stderr] --> src/syncfile.rs:309:52 [INFO] [stderr] | [INFO] [stderr] 309 | let verparts:Vec<&str> = verline.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: it looks like you're manually copying between slices [INFO] [stderr] --> src/syncfile.rs:334:18 [INFO] [stderr] | [INFO] [stderr] 334 | for i in 0..IV_SIZE { [INFO] [stderr] | ^^^^^^^^^^ help: try replacing the loop by: `iv_copy[..IV_SIZE].clone_from_slice(&iv[..IV_SIZE])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::manual_memcpy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:364:42 [INFO] [stderr] | [INFO] [stderr] 364 | None => return make_err(&format!("Key 'kw' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'kw' is required in metadata".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/syncfile.rs:370:42 [INFO] [stderr] | [INFO] [stderr] 370 | None => return make_err(&format!("Key 'relpath' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'relpath' is required in metadata".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/syncfile.rs:376:42 [INFO] [stderr] | [INFO] [stderr] 376 | None => return make_err(&format!("Key 'revguid' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'revguid' is required in metadata".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/syncfile.rs:387:42 [INFO] [stderr] | [INFO] [stderr] 387 | None => return make_err(&format!("Key 'is_binary' is required in metadata")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Key 'is_binary' is required in metadata".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: it looks like you're manually copying between slices [INFO] [stderr] --> src/syncfile.rs:412:18 [INFO] [stderr] | [INFO] [stderr] 412 | for i in 0..IV_SIZE { [INFO] [stderr] | ^^^^^^^^^^ help: try replacing the loop by: `iv_copy[..IV_SIZE].clone_from_slice(&iv[..IV_SIZE])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_memcpy [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:526:29 [INFO] [stderr] | [INFO] [stderr] 526 | / match out.flush() { [INFO] [stderr] 527 | | Err(e) => return make_err(&format!("Failed to flush output reader: {}",e)), [INFO] [stderr] 528 | | Ok(_) => () [INFO] [stderr] 529 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let Err(e) = out.flush() { return make_err(&format!("Failed to flush output reader: {}",e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:546:34 [INFO] [stderr] | [INFO] [stderr] 546 | return make_err(&format!("Data hmac does not equal expected value")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Data hmac does not equal expected value".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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:598:13 [INFO] [stderr] | [INFO] [stderr] 598 | / match res { [INFO] [stderr] 599 | | Err(e) => return make_err(&format!("Failed to create output local directory: {:?}: {:?}", outpath_par, e)), [INFO] [stderr] 600 | | Ok(_) => () [INFO] [stderr] 601 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = res { return make_err(&format!("Failed to create output local directory: {:?}: {:?}", outpath_par, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:617:13 [INFO] [stderr] | [INFO] [stderr] 617 | / match self.decrypt_to_writer(conf,&mut fout) { [INFO] [stderr] 618 | | Err(e) => return make_err(&format!("Failed to decrypt file: {:?}: {:?}", outpath, e)), [INFO] [stderr] 619 | | Ok(_) => () [INFO] [stderr] 620 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = self.decrypt_to_writer(conf,&mut fout) { return make_err(&format!("Failed to decrypt file: {:?}: {:?}", outpath, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:649:13 [INFO] [stderr] | [INFO] [stderr] 649 | / match res { [INFO] [stderr] 650 | | Err(e) => return make_err(&format!("Failed to create output sync directory: {:?}: {:?}", outpath_par, e)), [INFO] [stderr] 651 | | Ok(_) => () [INFO] [stderr] 652 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = res { return make_err(&format!("Failed to create output sync directory: {:?}: {:?}", outpath_par, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: useless use of `format!` [INFO] [stderr] --> src/syncfile.rs:666:38 [INFO] [stderr] | [INFO] [stderr] 666 | None => return make_err(&format!("No encryption key")), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"No encryption key".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 seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:697:13 [INFO] [stderr] | [INFO] [stderr] 697 | / match writeln!(out, "{}", b64_out) { [INFO] [stderr] 698 | | Err(e) => return make_err(&format!("Failed to write metadata: {}", e)), [INFO] [stderr] 699 | | Ok(_) => () [INFO] [stderr] 700 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { return make_err(&format!("Failed to write metadata: {}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:751:9 [INFO] [stderr] | [INFO] [stderr] 751 | / match self.write_syncfile_header(conf,&sid,&key,&iv,&mut headerbuf) { [INFO] [stderr] 752 | | Err(e) => return make_err(&format!("Failed to write syncfile header: {}", e)), [INFO] [stderr] 753 | | Ok(_) => () [INFO] [stderr] 754 | | }; [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = self.write_syncfile_header(conf,&sid,&key,&iv,&mut headerbuf) { return make_err(&format!("Failed to write syncfile header: {}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/syncfile.rs:932:49 [INFO] [stderr] | [INFO] [stderr] 932 | if ofs.iv[x] == 0 { zcount = zcount + 1 } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: replace it with: `zcount += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncfile.rs:1089:9 [INFO] [stderr] | [INFO] [stderr] 1089 | / match sf.mark_deleted_and_save(&conf,Some(syncpath.clone())) { [INFO] [stderr] 1090 | | Err(e) => panic!("Failed to write syncfile: {:?}", e), [INFO] [stderr] 1091 | | Ok(_) => () [INFO] [stderr] 1092 | | }; [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = sf.mark_deleted_and_save(&conf,Some(syncpath.clone())) { panic!("Failed to write syncfile: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:46:13 [INFO] [stderr] | [INFO] [stderr] 46 | / match res { [INFO] [stderr] 47 | | Err(e) => return Err(format!("Failed to create syncdb directory: {:?}: {:?}", syncdb_dir, e)), [INFO] [stderr] 48 | | Ok(_) => () [INFO] [stderr] 49 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = res { return Err(format!("Failed to create syncdb directory: {:?}: {:?}", syncdb_dir, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:82:17 [INFO] [stderr] | [INFO] [stderr] 82 | / match res { [INFO] [stderr] 83 | | Err(e) => return Err(format!("Failed to create syncdb Store directory: {:?}: {:?}", storepath_par, e)), [INFO] [stderr] 84 | | Ok(_) => () [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = res { return Err(format!("Failed to create syncdb Store directory: {:?}: {:?}", storepath_par, e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | / match writeln!(f, "revguid: {}", &entry.revguid.to_owned()) { [INFO] [stderr] 94 | | Err(e) => return Err(format!("{:?}", e)), [INFO] [stderr] 95 | | Ok(_) => () [INFO] [stderr] 96 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { return Err(format!("{:?}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:97:13 [INFO] [stderr] | [INFO] [stderr] 97 | / match writeln!(f, "native_mtime: {}", entry.native_mtime) { [INFO] [stderr] 98 | | Err(e) => return Err(format!("{:?}", e)), [INFO] [stderr] 99 | | Ok(_) => () [INFO] [stderr] 100 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { return Err(format!("{:?}", e)) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/syncdb.rs:212:9 [INFO] [stderr] | [INFO] [stderr] 212 | / match syncdb.update(&sf,mtime) { [INFO] [stderr] 213 | | Err(e) => panic!("Failed to update syncdb: {:?}", e), [INFO] [stderr] 214 | | Ok(_) => () [INFO] [stderr] 215 | | }; [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = syncdb.update(&sf,mtime) { panic!("Failed to update syncdb: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/core.rs:64:9 [INFO] [stderr] | [INFO] [stderr] 64 | self.map.get(&pbs).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&self.map[&pbs]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:226:5 [INFO] [stderr] | [INFO] [stderr] 226 | / match state.syncdb.update(&sf,native_mtime) { [INFO] [stderr] 227 | | Err(e) => panic!("Failed to update sync db: {:?}", e), [INFO] [stderr] 228 | | Ok(_) => () [INFO] [stderr] 229 | | }; [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = state.syncdb.update(&sf,native_mtime) { panic!("Failed to update sync db: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:252:13 [INFO] [stderr] | [INFO] [stderr] 252 | / match state.syncdb.update(sf,native_mtime) { [INFO] [stderr] 253 | | Err(e) => panic!("Failed to update sync db: {:?}", e), [INFO] [stderr] 254 | | Ok(_) => () [INFO] [stderr] 255 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = state.syncdb.update(sf,native_mtime) { panic!("Failed to update sync db: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/core.rs:287:12 [INFO] [stderr] | [INFO] [stderr] 287 | if !sync_entry.is_none() && sync_entry.unwrap().revguid != sf.revguid { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `sync_entry.is_some() && sync_entry.unwrap().revguid != sf.revguid` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:350:8 [INFO] [stderr] | [INFO] [stderr] 350 | / match state.syncdb.update(&sf,native_mtime) { [INFO] [stderr] 351 | | Err(e) => panic!("Failed to update sync db: {:?}: {}", native_fname, e), [INFO] [stderr] 352 | | Ok(_) => () [INFO] [stderr] 353 | | } [INFO] [stderr] | |________^ help: try this: `if let Err(e) = state.syncdb.update(&sf,native_mtime) { panic!("Failed to update sync db: {:?}: {}", native_fname, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:375:13 [INFO] [stderr] | [INFO] [stderr] 375 | / match state.syncdb.update(sf,native_mtime) { [INFO] [stderr] 376 | | Err(e) => panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e), [INFO] [stderr] 377 | | Ok(_) => () [INFO] [stderr] 378 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = state.syncdb.update(sf,native_mtime) { panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:405:9 [INFO] [stderr] | [INFO] [stderr] 405 | / match trash::send_to_trash(&sf.nativefile) { [INFO] [stderr] 406 | | Err(e) => panic!("Failed to trash file: {:?}", e), [INFO] [stderr] 407 | | Ok(_) => () [INFO] [stderr] 408 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = trash::send_to_trash(&sf.nativefile) { panic!("Failed to trash file: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/core.rs:422:5 [INFO] [stderr] | [INFO] [stderr] 422 | / match state.syncdb.update(&sf,native_mtime) { [INFO] [stderr] 423 | | Err(e) => panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e), [INFO] [stderr] 424 | | Ok(_) => () [INFO] [stderr] 425 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = state.syncdb.update(&sf,native_mtime) { panic!("Failed to update sync db: {:?}; {:?}", &sf.nativefile, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: usage of `contains_key` followed by `insert` on a `HashMap` [INFO] [stderr] --> src/core.rs:558:13 [INFO] [stderr] | [INFO] [stderr] 558 | / if files_for_id.contains_key(&file_syncid) { [INFO] [stderr] 559 | | files_for_id.get_mut(&file_syncid).unwrap().push(pbs); [INFO] [stderr] 560 | | } else { [INFO] [stderr] 561 | | files_for_id.insert(file_syncid,vec![pbs]); [INFO] [stderr] 562 | | } [INFO] [stderr] | |_____________^ help: consider using: `files_for_id.entry(file_syncid)` [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: called `is_some()` after searching an `Iterator` with find. This is more succinctly expressed by calling `any()`. [INFO] [stderr] --> src/core.rs:624:5 [INFO] [stderr] | [INFO] [stderr] 624 | / state.conf.native_paths.iter().find(|np| { [INFO] [stderr] 625 | | let res = mapping.get_kw_relpath(np); [INFO] [stderr] 626 | | let (_,nat_relpath) = match res { [INFO] [stderr] 627 | | None => return false, [INFO] [stderr] ... | [INFO] [stderr] 632 | | sf.relpath.starts_with(&nat_relpath) [INFO] [stderr] 633 | | }).is_some() [INFO] [stderr] | |________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::search_is_some)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#search_is_some [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/core.rs:690:1 [INFO] [stderr] | [INFO] [stderr] 690 | / pub fn do_sync(state:&mut SyncState) { [INFO] [stderr] 691 | | state.sync_file_cache.flush(); [INFO] [stderr] 692 | | state.files_modifed_by_sync.clear(); [INFO] [stderr] 693 | | [INFO] [stderr] ... | [INFO] [stderr] 853 | | } [INFO] [stderr] 854 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/core.rs:752:27 [INFO] [stderr] | [INFO] [stderr] 752 | let cflicts = state.sync_files_for_id.get(&sid).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&state.sync_files_for_id[&sid]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/commands.rs:25:18 [INFO] [stderr] | [INFO] [stderr] 25 | for (k,_) in &mdhash { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::for_kv_map)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 25 | for k in mdhash.keys() { [INFO] [stderr] | ^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/commands.rs:30:17 [INFO] [stderr] | [INFO] [stderr] 30 | let v = mdhash.get(&k).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&mdhash[&k]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/commands.rs:135:17 [INFO] [stderr] | [INFO] [stderr] 135 | / match fs::remove_file(&syncfile) { [INFO] [stderr] 136 | | Err(e) => warn!("Failed to remove file: {}; Error: {}", &syncfile, e), [INFO] [stderr] 137 | | Ok(_) => () [INFO] [stderr] 138 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = fs::remove_file(&syncfile) { warn!("Failed to remove file: {}; Error: {}", &syncfile, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/commands.rs:148:13 [INFO] [stderr] | [INFO] [stderr] 148 | / match io::stdin().read_line(&mut line) { [INFO] [stderr] 149 | | Err(e) => panic!("failed to read line: {}", e), [INFO] [stderr] 150 | | Ok(_) => () [INFO] [stderr] 151 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = io::stdin().read_line(&mut line) { panic!("failed to read line: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/commands.rs:212:22 [INFO] [stderr] | [INFO] [stderr] 212 | for (_,files) in &syncfiles { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 212 | for files in syncfiles.values() { [INFO] [stderr] | ^^^^^ ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/commands.rs:237:21 [INFO] [stderr] | [INFO] [stderr] 237 | / match sf.save_with_data(&new_conf, Some(syncfile), data) { [INFO] [stderr] 238 | | Err(e) => panic!("Error encrypting file data for {}: {:?}", f, e), [INFO] [stderr] 239 | | Ok(_) => () [INFO] [stderr] 240 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Err(e) = sf.save_with_data(&new_conf, Some(syncfile), data) { panic!("Error encrypting file data for {}: {:?}", f, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/commands.rs:244:13 [INFO] [stderr] | [INFO] [stderr] 244 | count = count + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: replace it with: `count += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/commands.rs:282:8 [INFO] [stderr] | [INFO] [stderr] 282 | if !removed.is_none() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: try: `removed.is_some()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/commands.rs:301:23 [INFO] [stderr] | [INFO] [stderr] 301 | let orig_ek = alice_mconf.state.conf.encryption_key.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `alice_mconf.state.conf.encryption_key` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::clone_on_copy)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/trash.rs:68:41 [INFO] [stderr] | [INFO] [stderr] 68 | } else if cfg!(target_os = "macos") { [INFO] [stderr] | _________________________________________^ [INFO] [stderr] 69 | | return true; [INFO] [stderr] 70 | | } else if cfg!(target_os = "linux") { [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/trash.rs:66:36 [INFO] [stderr] | [INFO] [stderr] 66 | if cfg!(target_os = "windows") { [INFO] [stderr] | ____________________________________^ [INFO] [stderr] 67 | | return true; [INFO] [stderr] 68 | | } else if cfg!(target_os = "macos") { [INFO] [stderr] | |_____^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/trash.rs:219:13 [INFO] [stderr] | [INFO] [stderr] 219 | / match remove_file(trashpath.to_str().unwrap()) { [INFO] [stderr] 220 | | Err(e) => panic!("{}", e), [INFO] [stderr] 221 | | Ok(_) => (), [INFO] [stderr] 222 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = remove_file(trashpath.to_str().unwrap()) { panic!("{}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/trash.rs:253:13 [INFO] [stderr] | [INFO] [stderr] 253 | / match f.write_all(b"zzz") { [INFO] [stderr] 254 | | Err(e) => panic!("{}", e), [INFO] [stderr] 255 | | Ok(_) => (), [INFO] [stderr] 256 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = f.write_all(b"zzz") { panic!("{}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/trash.rs:260:9 [INFO] [stderr] | [INFO] [stderr] 260 | / match trash::send_to_trash(testpath.to_str().unwrap()) { [INFO] [stderr] 261 | | Err(e) => panic!("{}", e), [INFO] [stderr] 262 | | Ok(_) => (), [INFO] [stderr] 263 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = trash::send_to_trash(testpath.to_str().unwrap()) { panic!("{}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:57:5 [INFO] [stderr] | [INFO] [stderr] 57 | / match writeln!(stream, "{}", req) { [INFO] [stderr] 58 | | Err(e) => println!("Failed to write pd request: {}", e), [INFO] [stderr] 59 | | Ok(_) => () [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args_nl ! ( $ ( $ arg ) * ) ) { println!("Failed to write pd request: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:61:5 [INFO] [stderr] | [INFO] [stderr] 61 | / match stream.shutdown(Shutdown::Write) { [INFO] [stderr] 62 | | Err(e) => println!("Failed to shutdown pd request stream: {}", e), [INFO] [stderr] 63 | | Ok(_) => () [INFO] [stderr] 64 | | } [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = stream.shutdown(Shutdown::Write) { println!("Failed to shutdown pd request stream: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/password_daemon.rs:93:13 [INFO] [stderr] | [INFO] [stderr] 93 | remaining = remaining - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `remaining -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:114:21 [INFO] [stderr] | [INFO] [stderr] 114 | / match fs::create_dir_all(&sd) { [INFO] [stderr] 115 | | Err(e) => panic!("Failed to create pd directory: {}", e), [INFO] [stderr] 116 | | Ok(_) => () [INFO] [stderr] 117 | | } [INFO] [stderr] | |_____________________^ help: try this: `if let Err(e) = fs::create_dir_all(&sd) { panic!("Failed to create pd directory: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:125:25 [INFO] [stderr] | [INFO] [stderr] 125 | / match fs::set_permissions(get_socket_dir(), permissions) { [INFO] [stderr] 126 | | Err(e) => panic!("Failed to set socket permissions: {}", e), [INFO] [stderr] 127 | | Ok(_) => () [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________________________^ help: try this: `if let Err(e) = fs::set_permissions(get_socket_dir(), permissions) { panic!("Failed to set socket permissions: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:166:29 [INFO] [stderr] | [INFO] [stderr] 166 | / match write!(stream, "{}", password) { [INFO] [stderr] 167 | | Err(e) => panic!("Failed to write pw to client stream: {}", e), [INFO] [stderr] 168 | | Ok(_) => () [INFO] [stderr] 169 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let Err(e) = $ dst . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) { panic!("Failed to write pw to client stream: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/password_daemon.rs:171:29 [INFO] [stderr] | [INFO] [stderr] 171 | / match stream.shutdown(Shutdown::Write) { [INFO] [stderr] 172 | | Err(e) => panic!("Failed to shutdown client stream: {}", e), [INFO] [stderr] 173 | | Ok(_) => () [INFO] [stderr] 174 | | } [INFO] [stderr] | |_____________________________^ help: try this: `if let Err(e) = stream.shutdown(Shutdown::Write) { panic!("Failed to shutdown client stream: {}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fs_notify.rs:82:9 [INFO] [stderr] | [INFO] [stderr] 82 | / match watcher.watch(state.conf.sync_dir()) { [INFO] [stderr] 83 | | Err(e) => panic!("Failed to watch: {}: {:?}", state.conf.sync_dir(), e), [INFO] [stderr] 84 | | Ok(_) => () [INFO] [stderr] 85 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = watcher.watch(state.conf.sync_dir()) { panic!("Failed to watch: {}: {:?}", state.conf.sync_dir(), e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/fs_notify.rs:88:13 [INFO] [stderr] | [INFO] [stderr] 88 | / match watcher.watch(p) { [INFO] [stderr] 89 | | Err(e) => panic!("Failed to watch: {}: {:?}", p, e), [INFO] [stderr] 90 | | Ok(_) => () [INFO] [stderr] 91 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = watcher.watch(p) { panic!("Failed to watch: {}: {:?}", p, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `dups`. [INFO] [stderr] --> src/dedup.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | for i in 1..dups.len() { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 89 | for in dups.iter().skip(1) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dedup.rs:111:13 [INFO] [stderr] | [INFO] [stderr] 111 | / match remove_file(&dup) { [INFO] [stderr] 112 | | Err(e) => warn!("Failed to remove dup sync file: {}: {}", dup, e), [INFO] [stderr] 113 | | Ok(_) => (), [INFO] [stderr] 114 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = remove_file(&dup) { warn!("Failed to remove dup sync file: {}: {}", dup, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's keys [INFO] [stderr] --> src/dedup.rs:139:19 [INFO] [stderr] | [INFO] [stderr] 139 | for (k, _) in &files_for_id { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#for_kv_map [INFO] [stderr] help: use the corresponding method [INFO] [stderr] | [INFO] [stderr] 139 | for k in files_for_id.keys() { [INFO] [stderr] | ^ ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/dedup.rs:160:17 [INFO] [stderr] | [INFO] [stderr] 160 | / match remove_file(sfname) { [INFO] [stderr] 161 | | Err(e) => panic!("Failed to remove syncfile: {:?}", e), [INFO] [stderr] 162 | | Ok(_) => (), [INFO] [stderr] 163 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = remove_file(sfname) { panic!("Failed to remove syncfile: {:?}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/dedup.rs:204:17 [INFO] [stderr] | [INFO] [stderr] 204 | dup_cand_idx = dup_cand_idx + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `dup_cand_idx += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/testlib.rs:51:17 [INFO] [stderr] | [INFO] [stderr] 51 | / match remove_dir_all(sdb_path_str) { [INFO] [stderr] 52 | | Err(e) => panic!("Failed to remove previous output syncdb: {:?}: {:?}", sdb_path_str, e), [INFO] [stderr] 53 | | Ok(_) => () [INFO] [stderr] 54 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = remove_dir_all(sdb_path_str) { panic!("Failed to remove previous output syncdb: {:?}: {:?}", sdb_path_str, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/testlib.rs:126:17 [INFO] [stderr] | [INFO] [stderr] 126 | / match remove_dir_all(&path) { [INFO] [stderr] 127 | | Err(e) => panic!("Failed to remove test output directory: {:?}: {:?}", path_str, e), [INFO] [stderr] 128 | | Ok(_) => () [INFO] [stderr] 129 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = remove_dir_all(&path) { panic!("Failed to remove test output directory: {:?}: {:?}", path_str, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/testlib.rs:131:13 [INFO] [stderr] | [INFO] [stderr] 131 | / match create_dir_all(&path_str) { [INFO] [stderr] 132 | | Err(e) => panic!("Failed to create test output directory: {:?}: {:?}", path_str, e), [INFO] [stderr] 133 | | Ok(_) => () [INFO] [stderr] 134 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = create_dir_all(&path_str) { panic!("Failed to create test output directory: {:?}: {:?}", path_str, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/testlib.rs:207:9 [INFO] [stderr] | [INFO] [stderr] 207 | / match copy(src,dest.to_str().unwrap()) { [INFO] [stderr] 208 | | Err(e) => panic!("Failed to copy test file {} to {:?}: {}", src, dest, e), [INFO] [stderr] 209 | | Ok(_) => () [INFO] [stderr] 210 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = copy(src,dest.to_str().unwrap()) { panic!("Failed to copy test file {} to {:?}: {}", src, dest, e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/testlib.rs:359:17 [INFO] [stderr] | [INFO] [stderr] 359 | / match f.write_all(text.as_bytes()) { [INFO] [stderr] 360 | | Err(e) => panic!("{}", e), [INFO] [stderr] 361 | | Ok(_) => () [INFO] [stderr] 362 | | } [INFO] [stderr] | |_________________^ help: try this: `if let Err(e) = f.write_all(text.as_bytes()) { panic!("{}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/testlib.rs:374:9 [INFO] [stderr] | [INFO] [stderr] 374 | / match remove_file(out1.to_str().unwrap()) { [INFO] [stderr] 375 | | Err(e) => panic!("{}", e), [INFO] [stderr] 376 | | Ok(_) => () [INFO] [stderr] 377 | | } [INFO] [stderr] | |_________^ help: try this: `if let Err(e) = remove_file(out1.to_str().unwrap()) { panic!("{}", e) }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 28 [INFO] [stderr] --> src/main.rs:46:1 [INFO] [stderr] | [INFO] [stderr] 46 | / fn main() { [INFO] [stderr] 47 | | if !trash::can_trash() { [INFO] [stderr] 48 | | println!("Sorry, sending files to trash is not implemented on this operating system. Exiting."); [INFO] [stderr] 49 | | return; [INFO] [stderr] ... | [INFO] [stderr] 254 | | } [INFO] [stderr] 255 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: casting u32 to i64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:147:52 [INFO] [stderr] | [INFO] [stderr] 147 | password_daemon::start(&pw,ttl as i64); [INFO] [stderr] | ^^^^^^^^^^ help: try: `i64::from(ttl)` [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: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/main.rs:247:47 [INFO] [stderr] | [INFO] [stderr] 247 | thread::sleep(Duration::from_secs(poll_interval as u64)); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(poll_interval)` [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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `grey_crypt`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "4fa175b0e1e3210cd496ca732e98df13722682ca75c8755e9e24d4bf863535ec"` [INFO] running `"docker" "rm" "-f" "4fa175b0e1e3210cd496ca732e98df13722682ca75c8755e9e24d4bf863535ec"` [INFO] [stdout] 4fa175b0e1e3210cd496ca732e98df13722682ca75c8755e9e24d4bf863535ec