[INFO] crate libfortress 1.0.1 is already in cache [INFO] extracting crate libfortress 1.0.1 into work/ex/clippy-test-run/sources/stable/reg/libfortress/1.0.1 [INFO] extracting crate libfortress 1.0.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/libfortress/1.0.1 [INFO] validating manifest of libfortress-1.0.1 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 libfortress-1.0.1 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 libfortress-1.0.1 [INFO] finished frobbing libfortress-1.0.1 [INFO] frobbed toml for libfortress-1.0.1 written to work/ex/clippy-test-run/sources/stable/reg/libfortress/1.0.1/Cargo.toml [INFO] started frobbing libfortress-1.0.1 [INFO] finished frobbing libfortress-1.0.1 [INFO] frobbed toml for libfortress-1.0.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/libfortress/1.0.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting libfortress-1.0.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-5/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/libfortress/1.0.1:/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] 7a28c5193ffb19d0f0ab1aedc24e593b2d2fcf0929535f8c1c5422ae67646de2 [INFO] running `"docker" "start" "-a" "7a28c5193ffb19d0f0ab1aedc24e593b2d2fcf0929535f8c1c5422ae67646de2"` [INFO] [stderr] Checking fortresscrypto v1.0.1 [INFO] [stderr] Checking hyper v0.11.27 [INFO] [stderr] Checking hyper-tls v0.1.4 [INFO] [stderr] Checking reqwest v0.8.8 [INFO] [stderr] Checking libfortress v1.0.1 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/database_object/directory.rs:52:4 [INFO] [stderr] | [INFO] [stderr] 52 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/directory.rs:53:4 [INFO] [stderr] | [INFO] [stderr] 53 | entries: entries, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `entries` [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/database_object/directory.rs:54:4 [INFO] [stderr] | [INFO] [stderr] 54 | history: history, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `history` [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/database_object/directory.rs:82:4 [INFO] [stderr] | [INFO] [stderr] 82 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/directory.rs:84:4 [INFO] [stderr] | [INFO] [stderr] 84 | time: time, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `time` [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/database_object/directory.rs:104:4 [INFO] [stderr] | [INFO] [stderr] 104 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/directory.rs:106:4 [INFO] [stderr] | [INFO] [stderr] 106 | time: time, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `time` [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/database_object/entry.rs:31:4 [INFO] [stderr] | [INFO] [stderr] 31 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/entry.rs:33:4 [INFO] [stderr] | [INFO] [stderr] 33 | time_created: time_created, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `time_created` [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/database_object/entry.rs:182:4 [INFO] [stderr] | [INFO] [stderr] 182 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/sync_parameters.rs:41:4 [INFO] [stderr] | [INFO] [stderr] 41 | master_key: master_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `master_key` [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/lib.rs:96:4 [INFO] [stderr] | [INFO] [stderr] 96 | objects: objects, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `objects` [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/lib.rs:97:4 [INFO] [stderr] | [INFO] [stderr] 97 | root_directory: root_directory, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `root_directory` [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/lib.rs:98:4 [INFO] [stderr] | [INFO] [stderr] 98 | sync_parameters: sync_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sync_parameters` [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/lib.rs:100:4 [INFO] [stderr] | [INFO] [stderr] 100 | encryption_parameters: encryption_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryption_parameters` [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/lib.rs:101:4 [INFO] [stderr] | [INFO] [stderr] 101 | file_key_suite: file_key_suite, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_key_suite` [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/lib.rs:212:4 [INFO] [stderr] | [INFO] [stderr] 212 | encryption_parameters: encryption_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryption_parameters` [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/lib.rs:213:4 [INFO] [stderr] | [INFO] [stderr] 213 | file_key_suite: file_key_suite, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_key_suite` [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/lib.rs:353:5 [INFO] [stderr] | [INFO] [stderr] 353 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/lib.rs:354:5 [INFO] [stderr] | [INFO] [stderr] 354 | mac: mac, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mac` [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/database_object/directory.rs:52:4 [INFO] [stderr] | [INFO] [stderr] 52 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/directory.rs:53:4 [INFO] [stderr] | [INFO] [stderr] 53 | entries: entries, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `entries` [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/database_object/directory.rs:54:4 [INFO] [stderr] | [INFO] [stderr] 54 | history: history, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `history` [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/database_object/directory.rs:82:4 [INFO] [stderr] | [INFO] [stderr] 82 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/directory.rs:84:4 [INFO] [stderr] | [INFO] [stderr] 84 | time: time, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `time` [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/database_object/directory.rs:104:4 [INFO] [stderr] | [INFO] [stderr] 104 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/directory.rs:106:4 [INFO] [stderr] | [INFO] [stderr] 106 | time: time, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `time` [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/database_object/entry.rs:31:4 [INFO] [stderr] | [INFO] [stderr] 31 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/database_object/entry.rs:33:4 [INFO] [stderr] | [INFO] [stderr] 33 | time_created: time_created, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `time_created` [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/database_object/entry.rs:182:4 [INFO] [stderr] | [INFO] [stderr] 182 | data: data, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `data` [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/sync_parameters.rs:41:4 [INFO] [stderr] | [INFO] [stderr] 41 | master_key: master_key, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `master_key` [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/lib.rs:96:4 [INFO] [stderr] | [INFO] [stderr] 96 | objects: objects, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `objects` [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/lib.rs:97:4 [INFO] [stderr] | [INFO] [stderr] 97 | root_directory: root_directory, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `root_directory` [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/lib.rs:98:4 [INFO] [stderr] | [INFO] [stderr] 98 | sync_parameters: sync_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `sync_parameters` [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/lib.rs:100:4 [INFO] [stderr] | [INFO] [stderr] 100 | encryption_parameters: encryption_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryption_parameters` [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/lib.rs:101:4 [INFO] [stderr] | [INFO] [stderr] 101 | file_key_suite: file_key_suite, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_key_suite` [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/lib.rs:212:4 [INFO] [stderr] | [INFO] [stderr] 212 | encryption_parameters: encryption_parameters, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `encryption_parameters` [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/lib.rs:213:4 [INFO] [stderr] | [INFO] [stderr] 213 | file_key_suite: file_key_suite, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `file_key_suite` [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/lib.rs:353:5 [INFO] [stderr] | [INFO] [stderr] 353 | id: id, [INFO] [stderr] | ^^^^^^ help: replace it with: `id` [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/lib.rs:354:5 [INFO] [stderr] | [INFO] [stderr] 354 | mac: mac, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `mac` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/database_object/directory.rs:155:3 [INFO] [stderr] | [INFO] [stderr] 155 | 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/database_object/entry.rs:118:3 [INFO] [stderr] | [INFO] [stderr] 118 | return Some(new_entry); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(new_entry)` [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/database_object/entry.rs:136:3 [INFO] [stderr] | [INFO] [stderr] 136 | 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: long literal lacking separators [INFO] [stderr] --> src/lib.rs:662:34 [INFO] [stderr] | [INFO] [stderr] 662 | timestamp.as_secs().checked_mul(1000000000).unwrap().checked_add(timestamp.subsec_nanos() as u64).unwrap() [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_000_000` [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: long literal lacking separators [INFO] [stderr] --> src/lib.rs:783:30 [INFO] [stderr] | [INFO] [stderr] 783 | let string = random_string(100000, true, true, true, "0%"); [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/lib.rs:785:27 [INFO] [stderr] | [INFO] [stderr] 785 | assert!(string.len() == 100000); [INFO] [stderr] | ^^^^^^ help: consider: `100_000` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/database_object/directory.rs:155:3 [INFO] [stderr] | [INFO] [stderr] 155 | 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/database_object/entry.rs:118:3 [INFO] [stderr] | [INFO] [stderr] 118 | return Some(new_entry); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `Some(new_entry)` [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/database_object/entry.rs:136:3 [INFO] [stderr] | [INFO] [stderr] 136 | 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: long literal lacking separators [INFO] [stderr] --> src/lib.rs:662:34 [INFO] [stderr] | [INFO] [stderr] 662 | timestamp.as_secs().checked_mul(1000000000).unwrap().checked_add(timestamp.subsec_nanos() as u64).unwrap() [INFO] [stderr] | ^^^^^^^^^^ help: consider: `1_000_000_000` [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: you should consider adding a `Default` implementation for `database_object::directory::Directory` [INFO] [stderr] --> src/database_object/directory.rs:18:2 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn new() -> Directory { [INFO] [stderr] | _____^ [INFO] [stderr] 19 | | let mut rng = OsRng::new().expect("OsRng failed to initialize"); [INFO] [stderr] 20 | | [INFO] [stderr] 21 | | Directory { [INFO] [stderr] ... | [INFO] [stderr] 25 | | } [INFO] [stderr] 26 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 17 | impl Default for database_object::directory::Directory { [INFO] [stderr] 18 | fn default() -> Self { [INFO] [stderr] 19 | Self::new() [INFO] [stderr] 20 | } [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/database_object/directory.rs:173:44 [INFO] [stderr] | [INFO] [stderr] 173 | Directory::from_history(d.id, d.history).ok_or(serde::de::Error::custom("Invalid history")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| serde::de::Error::custom("Invalid history"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `database_object::entry::Entry` [INFO] [stderr] --> src/database_object/entry.rs:23:2 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn new() -> Entry { [INFO] [stderr] | _____^ [INFO] [stderr] 24 | | let mut rng = OsRng::new().expect("OsRng failed to initialize"); [INFO] [stderr] 25 | | [INFO] [stderr] 26 | | Entry::inner_new(rng.gen(), Vec::new(), unix_timestamp()).unwrap() [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | impl Default for database_object::entry::Entry { [INFO] [stderr] 23 | fn default() -> Self { [INFO] [stderr] 24 | Self::new() [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/database_object/entry.rs:166:65 [INFO] [stderr] | [INFO] [stderr] 166 | Entry::inner_new(entry.id, entry.history, entry.time_created).ok_or(serde::de::Error::custom("Invalid history")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| serde::de::Error::custom("Invalid history"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/database_object/entry.rs:233:15 [INFO] [stderr] | [INFO] [stderr] 233 | time: time.unwrap_or(unix_timestamp()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(unix_timestamp)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/database_object/mod.rs:19:3 [INFO] [stderr] | [INFO] [stderr] 19 | match self { [INFO] [stderr] | _________^ [INFO] [stderr] 20 | | &DatabaseObject::Entry(ref e) => e.get_id(), [INFO] [stderr] 21 | | &DatabaseObject::Directory(ref d) => d.get_id(), [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 19 | match *self { [INFO] [stderr] 20 | DatabaseObject::Entry(ref e) => e.get_id(), [INFO] [stderr] 21 | DatabaseObject::Directory(ref d) => d.get_id(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `database_object_map::DatabaseObjectMap` [INFO] [stderr] --> src/database_object_map.rs:31:2 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn new() -> DatabaseObjectMap { [INFO] [stderr] | _____^ [INFO] [stderr] 32 | | DatabaseObjectMap { [INFO] [stderr] 33 | | inner: HashMap::new(), [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:91:24 [INFO] [stderr] | [INFO] [stderr] 91 | let root_directory = root.get_id().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*root.get_id()` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:125:3 [INFO] [stderr] | [INFO] [stderr] 125 | match self.objects.get(&self.root_directory).unwrap() { [INFO] [stderr] | _________^ [INFO] [stderr] 126 | | &DatabaseObject::Directory(ref dir) => dir, [INFO] [stderr] 127 | | _ => panic!(), [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 125 | match *self.objects.get(&self.root_directory).unwrap() { [INFO] [stderr] 126 | DatabaseObject::Directory(ref dir) => dir, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:132:3 [INFO] [stderr] | [INFO] [stderr] 132 | match self.objects.get_mut(&self.root_directory).unwrap() { [INFO] [stderr] | _________^ [INFO] [stderr] 133 | | &mut DatabaseObject::Directory(ref mut dir) => dir, [INFO] [stderr] 134 | | _ => panic!(), [INFO] [stderr] 135 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 132 | match *self.objects.get_mut(&self.root_directory).unwrap() { [INFO] [stderr] 133 | DatabaseObject::Directory(ref mut dir) => dir, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:149:3 [INFO] [stderr] | [INFO] [stderr] 149 | match self.objects.get(id)? { [INFO] [stderr] | _________^ [INFO] [stderr] 150 | | &DatabaseObject::Entry(ref entry) => Some(entry), [INFO] [stderr] 151 | | _ => None, [INFO] [stderr] 152 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 149 | match *(self.objects.get(id)?) { [INFO] [stderr] 150 | DatabaseObject::Entry(ref entry) => Some(entry), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:156:3 [INFO] [stderr] | [INFO] [stderr] 156 | match self.objects.get_mut(id)? { [INFO] [stderr] | _________^ [INFO] [stderr] 157 | | &mut DatabaseObject::Entry(ref mut entry) => Some(entry), [INFO] [stderr] 158 | | _ => None, [INFO] [stderr] 159 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 156 | match *(self.objects.get_mut(id)?) { [INFO] [stderr] 157 | DatabaseObject::Entry(ref mut entry) => Some(entry), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:165:50 [INFO] [stderr] | [INFO] [stderr] 165 | let parent_directory = path.as_ref().parent().ok_or(io::Error::new(io::ErrorKind::NotFound, "Bad path"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, "Bad path"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/lib.rs:227:6 [INFO] [stderr] | [INFO] [stderr] 227 | if self.do_not_set_testing == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.do_not_set_testing` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:269:26 [INFO] [stderr] | [INFO] [stderr] 269 | let database_changed = queued_updates.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!queued_updates.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:402:81 [INFO] [stderr] | [INFO] [stderr] 402 | fn sync_decrypt_and_sort_diffs(&self, updates: &[DiffObjectResponseUpdate]) -> (Vec<(&Entry, Entry)>, Vec<(&Directory, Directory)>, Vec<&DatabaseObject>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:434:4 [INFO] [stderr] | [INFO] [stderr] 434 | match local_object { [INFO] [stderr] | _____________^ [INFO] [stderr] 435 | | &DatabaseObject::Entry(ref local_entry) => match server_object { [INFO] [stderr] 436 | | DatabaseObject::Entry(server_entry) => entry_updates.push((local_entry, server_entry)), [INFO] [stderr] 437 | | _ => { [INFO] [stderr] ... | [INFO] [stderr] 450 | | }, [INFO] [stderr] 451 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 434 | match *local_object { [INFO] [stderr] 435 | DatabaseObject::Entry(ref local_entry) => match server_object { [INFO] [stderr] 436 | DatabaseObject::Entry(server_entry) => entry_updates.push((local_entry, server_entry)), [INFO] [stderr] 437 | _ => { [INFO] [stderr] 438 | // This shouldn't happen, but we'll fix using our copy [INFO] [stderr] 439 | reuploads.push(local_object); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:642:5 [INFO] [stderr] | [INFO] [stderr] 642 | if alphabet.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `alphabet.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:662:67 [INFO] [stderr] | [INFO] [stderr] 662 | timestamp.as_secs().checked_mul(1000000000).unwrap().checked_add(timestamp.subsec_nanos() as u64).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(timestamp.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:697:18 [INFO] [stderr] | [INFO] [stderr] 697 | let old_salt = db.encryption_parameters.salt.clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `db.encryption_parameters.salt` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `database_object::directory::Directory` [INFO] [stderr] --> src/database_object/directory.rs:18:2 [INFO] [stderr] | [INFO] [stderr] 18 | pub fn new() -> Directory { [INFO] [stderr] | _____^ [INFO] [stderr] 19 | | let mut rng = OsRng::new().expect("OsRng failed to initialize"); [INFO] [stderr] 20 | | [INFO] [stderr] 21 | | Directory { [INFO] [stderr] ... | [INFO] [stderr] 25 | | } [INFO] [stderr] 26 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 17 | impl Default for database_object::directory::Directory { [INFO] [stderr] 18 | fn default() -> Self { [INFO] [stderr] 19 | Self::new() [INFO] [stderr] 20 | } [INFO] [stderr] 21 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:766:65 [INFO] [stderr] | [INFO] [stderr] 766 | assert!(random_string(10000, true, false, false, "").contains("A")); [INFO] [stderr] | ^^^ help: try using a char instead: `'A'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:767:65 [INFO] [stderr] | [INFO] [stderr] 767 | assert!(random_string(10000, false, true, false, "").contains("a")); [INFO] [stderr] | ^^^ help: try using a char instead: `'a'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:768:65 [INFO] [stderr] | [INFO] [stderr] 768 | assert!(random_string(10000, false, false, true, "").contains("0")); [INFO] [stderr] | ^^^ help: try using a char instead: `'0'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:769:67 [INFO] [stderr] | [INFO] [stderr] 769 | assert!(random_string(10000, false, false, false, "%").contains("%")); [INFO] [stderr] | ^^^ help: try using a char instead: `'%'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:771:66 [INFO] [stderr] | [INFO] [stderr] 771 | assert!(!random_string(10000, true, false, false, "").contains("a")); [INFO] [stderr] | ^^^ help: try using a char instead: `'a'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:772:66 [INFO] [stderr] | [INFO] [stderr] 772 | assert!(!random_string(10000, false, true, false, "").contains("A")); [INFO] [stderr] | ^^^ help: try using a char instead: `'A'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:773:66 [INFO] [stderr] | [INFO] [stderr] 773 | assert!(!random_string(10000, false, false, true, "").contains("A")); [INFO] [stderr] | ^^^ help: try using a char instead: `'A'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/lib.rs:774:71 [INFO] [stderr] | [INFO] [stderr] 774 | assert!(!random_string(10000, false, false, false, "$%^&").contains("A")); [INFO] [stderr] | ^^^ help: try using a char instead: `'A'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/database_object/directory.rs:173:44 [INFO] [stderr] | [INFO] [stderr] 173 | Directory::from_history(d.id, d.history).ok_or(serde::de::Error::custom("Invalid history")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| serde::de::Error::custom("Invalid history"))` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::or_fun_call)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: you seem to want to iterate on a map's values [INFO] [stderr] --> src/lib.rs:794:17 [INFO] [stderr] | [INFO] [stderr] 794 | for (_, o) in &bins { [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] 794 | for o in bins.values() { [INFO] [stderr] | ^ ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:795:21 [INFO] [stderr] | [INFO] [stderr] 795 | chi_squared += ((*o as f64 - e) * (*o as f64 - e)) / e; [INFO] [stderr] | ^^^^^^^^^ help: try: `f64::from(*o)` [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: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:795:39 [INFO] [stderr] | [INFO] [stderr] 795 | chi_squared += ((*o as f64 - e) * (*o as f64 - e)) / e; [INFO] [stderr] | ^^^^^^^^^ help: try: `f64::from(*o)` [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: you should consider adding a `Default` implementation for `database_object::entry::Entry` [INFO] [stderr] --> src/database_object/entry.rs:23:2 [INFO] [stderr] | [INFO] [stderr] 23 | pub fn new() -> Entry { [INFO] [stderr] | _____^ [INFO] [stderr] 24 | | let mut rng = OsRng::new().expect("OsRng failed to initialize"); [INFO] [stderr] 25 | | [INFO] [stderr] 26 | | Entry::inner_new(rng.gen(), Vec::new(), unix_timestamp()).unwrap() [INFO] [stderr] 27 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 22 | impl Default for database_object::entry::Entry { [INFO] [stderr] 23 | fn default() -> Self { [INFO] [stderr] 24 | Self::new() [INFO] [stderr] 25 | } [INFO] [stderr] 26 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/database_object/entry.rs:166:65 [INFO] [stderr] | [INFO] [stderr] 166 | Entry::inner_new(entry.id, entry.history, entry.time_created).ok_or(serde::de::Error::custom("Invalid history")) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| serde::de::Error::custom("Invalid history"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:904:22 [INFO] [stderr] | [INFO] [stderr] 904 | let tmp_entry_id = entry.get_id().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*entry.get_id()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:917:28 [INFO] [stderr] | [INFO] [stderr] 917 | db.get_root_mut().remove(tmp_entry_id.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `tmp_entry_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:918:25 [INFO] [stderr] | [INFO] [stderr] 918 | db.get_root_mut().add(tmp_entry_id.clone()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `tmp_entry_id` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/database_object/mod.rs:19:3 [INFO] [stderr] | [INFO] [stderr] 19 | match self { [INFO] [stderr] | _________^ [INFO] [stderr] 20 | | &DatabaseObject::Entry(ref e) => e.get_id(), [INFO] [stderr] 21 | | &DatabaseObject::Directory(ref d) => d.get_id(), [INFO] [stderr] 22 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::match_ref_pats)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 19 | match *self { [INFO] [stderr] 20 | DatabaseObject::Entry(ref e) => e.get_id(), [INFO] [stderr] 21 | DatabaseObject::Directory(ref d) => d.get_id(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you should consider deriving a `Default` implementation for `database_object_map::DatabaseObjectMap` [INFO] [stderr] --> src/database_object_map.rs:31:2 [INFO] [stderr] | [INFO] [stderr] 31 | pub fn new() -> DatabaseObjectMap { [INFO] [stderr] | _____^ [INFO] [stderr] 32 | | DatabaseObjectMap { [INFO] [stderr] 33 | | inner: HashMap::new(), [INFO] [stderr] 34 | | } [INFO] [stderr] 35 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::new_without_default_derive)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#new_without_default_derive [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 26 | #[derive(Default)] [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1021:17 [INFO] [stderr] | [INFO] [stderr] 1021 | directory.add(id1.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `id1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1022:17 [INFO] [stderr] | [INFO] [stderr] 1022 | directory.add(id2.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `id2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1023:17 [INFO] [stderr] | [INFO] [stderr] 1023 | directory.add(id3.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `id3` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1024:20 [INFO] [stderr] | [INFO] [stderr] 1024 | directory.remove(id2.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `id2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1025:20 [INFO] [stderr] | [INFO] [stderr] 1025 | directory.remove(id3.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `id3` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:1026:17 [INFO] [stderr] | [INFO] [stderr] 1026 | directory.add(id2.clone()); [INFO] [stderr] | ^^^^^^^^^^^ help: try removing the `clone` call: `id2` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#clone_on_copy [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/lib.rs:91:24 [INFO] [stderr] | [INFO] [stderr] 91 | let root_directory = root.get_id().clone(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try dereferencing it: `*root.get_id()` [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] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:125:3 [INFO] [stderr] | [INFO] [stderr] 125 | match self.objects.get(&self.root_directory).unwrap() { [INFO] [stderr] | _________^ [INFO] [stderr] 126 | | &DatabaseObject::Directory(ref dir) => dir, [INFO] [stderr] 127 | | _ => panic!(), [INFO] [stderr] 128 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 125 | match *self.objects.get(&self.root_directory).unwrap() { [INFO] [stderr] 126 | DatabaseObject::Directory(ref dir) => dir, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:132:3 [INFO] [stderr] | [INFO] [stderr] 132 | match self.objects.get_mut(&self.root_directory).unwrap() { [INFO] [stderr] | _________^ [INFO] [stderr] 133 | | &mut DatabaseObject::Directory(ref mut dir) => dir, [INFO] [stderr] 134 | | _ => panic!(), [INFO] [stderr] 135 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 132 | match *self.objects.get_mut(&self.root_directory).unwrap() { [INFO] [stderr] 133 | DatabaseObject::Directory(ref mut dir) => dir, [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:149:3 [INFO] [stderr] | [INFO] [stderr] 149 | match self.objects.get(id)? { [INFO] [stderr] | _________^ [INFO] [stderr] 150 | | &DatabaseObject::Entry(ref entry) => Some(entry), [INFO] [stderr] 151 | | _ => None, [INFO] [stderr] 152 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 149 | match *(self.objects.get(id)?) { [INFO] [stderr] 150 | DatabaseObject::Entry(ref entry) => Some(entry), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:156:3 [INFO] [stderr] | [INFO] [stderr] 156 | match self.objects.get_mut(id)? { [INFO] [stderr] | _________^ [INFO] [stderr] 157 | | &mut DatabaseObject::Entry(ref mut entry) => Some(entry), [INFO] [stderr] 158 | | _ => None, [INFO] [stderr] 159 | | } [INFO] [stderr] | |_________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 156 | match *(self.objects.get_mut(id)?) { [INFO] [stderr] 157 | DatabaseObject::Entry(ref mut entry) => Some(entry), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: use of `ok_or` followed by a function call [INFO] [stderr] --> src/lib.rs:165:50 [INFO] [stderr] | [INFO] [stderr] 165 | let parent_directory = path.as_ref().parent().ok_or(io::Error::new(io::ErrorKind::NotFound, "Bad path"))?; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `ok_or_else(|| io::Error::new(io::ErrorKind::NotFound, "Bad path"))` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#or_fun_call [INFO] [stderr] [INFO] [stderr] warning: equality checks against false can be replaced by a negation [INFO] [stderr] --> src/lib.rs:227:6 [INFO] [stderr] | [INFO] [stderr] 227 | if self.do_not_set_testing == false { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try simplifying it as shown: `!self.do_not_set_testing` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::bool_comparison)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:269:26 [INFO] [stderr] | [INFO] [stderr] 269 | let database_changed = queued_updates.len() > 0; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!queued_updates.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: very complex type used. Consider factoring parts into `type` definitions [INFO] [stderr] --> src/lib.rs:402:81 [INFO] [stderr] | [INFO] [stderr] 402 | fn sync_decrypt_and_sort_diffs(&self, updates: &[DiffObjectResponseUpdate]) -> (Vec<(&Entry, Entry)>, Vec<(&Directory, Directory)>, Vec<&DatabaseObject>) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::type_complexity)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#type_complexity [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:434:4 [INFO] [stderr] | [INFO] [stderr] 434 | match local_object { [INFO] [stderr] | _____________^ [INFO] [stderr] 435 | | &DatabaseObject::Entry(ref local_entry) => match server_object { [INFO] [stderr] 436 | | DatabaseObject::Entry(server_entry) => entry_updates.push((local_entry, server_entry)), [INFO] [stderr] 437 | | _ => { [INFO] [stderr] ... | [INFO] [stderr] 450 | | }, [INFO] [stderr] 451 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#match_ref_pats [INFO] [stderr] help: instead of prefixing all patterns with `&`, you can dereference the expression [INFO] [stderr] | [INFO] [stderr] 434 | match *local_object { [INFO] [stderr] 435 | DatabaseObject::Entry(ref local_entry) => match server_object { [INFO] [stderr] 436 | DatabaseObject::Entry(server_entry) => entry_updates.push((local_entry, server_entry)), [INFO] [stderr] 437 | _ => { [INFO] [stderr] 438 | // This shouldn't happen, but we'll fix using our copy [INFO] [stderr] 439 | reuploads.push(local_object); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/lib.rs:642:5 [INFO] [stderr] | [INFO] [stderr] 642 | if alphabet.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `alphabet.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/lib.rs:662:67 [INFO] [stderr] | [INFO] [stderr] 662 | timestamp.as_secs().checked_mul(1000000000).unwrap().checked_add(timestamp.subsec_nanos() as u64).unwrap() [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u64::from(timestamp.subsec_nanos())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> tests/sync_server/mod.rs:41:31 [INFO] [stderr] | [INFO] [stderr] 41 | None => unknown_ids.push(object.id.clone()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `object.id` [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] Finished dev [unoptimized + debuginfo] target(s) in 45.05s [INFO] running `"docker" "inspect" "7a28c5193ffb19d0f0ab1aedc24e593b2d2fcf0929535f8c1c5422ae67646de2"` [INFO] running `"docker" "rm" "-f" "7a28c5193ffb19d0f0ab1aedc24e593b2d2fcf0929535f8c1c5422ae67646de2"` [INFO] [stdout] 7a28c5193ffb19d0f0ab1aedc24e593b2d2fcf0929535f8c1c5422ae67646de2