[INFO] crate encryptfile 0.1.3 is already in cache [INFO] extracting crate encryptfile 0.1.3 into work/ex/clippy-test-run/sources/stable/reg/encryptfile/0.1.3 [INFO] extracting crate encryptfile 0.1.3 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/encryptfile/0.1.3 [INFO] validating manifest of encryptfile-0.1.3 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 encryptfile-0.1.3 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 encryptfile-0.1.3 [INFO] finished frobbing encryptfile-0.1.3 [INFO] frobbed toml for encryptfile-0.1.3 written to work/ex/clippy-test-run/sources/stable/reg/encryptfile/0.1.3/Cargo.toml [INFO] started frobbing encryptfile-0.1.3 [INFO] finished frobbing encryptfile-0.1.3 [INFO] frobbed toml for encryptfile-0.1.3 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/encryptfile/0.1.3/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 encryptfile-0.1.3 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/encryptfile/0.1.3:/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] ced0cb6a677db51ce54daf71fdd56d7fdc9e47370169d555fe3a8484b10fdc04 [INFO] running `"docker" "start" "-a" "ced0cb6a677db51ce54daf71fdd56d7fdc9e47370169d555fe3a8484b10fdc04"` [INFO] [stderr] Checking encryptfile v0.1.3 (/opt/crater/workdir) [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/config.rs:328:21 [INFO] [stderr] | [INFO] [stderr] 328 | key: key [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/crypto_util.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | 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: redundant field names in struct initialization [INFO] [stderr] --> src/config.rs:328:21 [INFO] [stderr] | [INFO] [stderr] 328 | key: key [INFO] [stderr] | ^^^^^^^^ help: replace it with: `key` [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/crypto_util.rs:56:13 [INFO] [stderr] | [INFO] [stderr] 56 | 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: unneeded return statement [INFO] [stderr] --> src/config.rs:363:9 [INFO] [stderr] | [INFO] [stderr] 363 | return &self.mode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.mode` [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/config.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | return &self.input_stream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.input_stream` [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/config.rs:369:9 [INFO] [stderr] | [INFO] [stderr] 369 | return &self.output_stream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.output_stream` [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/config.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | return &self.output_format; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.output_format` [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/config.rs:375:9 [INFO] [stderr] | [INFO] [stderr] 375 | return &self.output_options; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.output_options` [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/config.rs:378:9 [INFO] [stderr] | [INFO] [stderr] 378 | return &self.rng_mode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.rng_mode` [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/config.rs:381:9 [INFO] [stderr] | [INFO] [stderr] 381 | return &self.initialization_vector; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.initialization_vector` [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/config.rs:384:9 [INFO] [stderr] | [INFO] [stderr] 384 | return &self.password; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.password` [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/config.rs:387:9 [INFO] [stderr] | [INFO] [stderr] 387 | return &self.salt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.salt` [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/config.rs:390:9 [INFO] [stderr] | [INFO] [stderr] 390 | return &self.encryption_method; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.encryption_method` [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/config.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | return self.buffer_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.buffer_size` [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/crypt.rs:19:20 [INFO] [stderr] | [INFO] [stderr] 19 | const MAGIC: u64 = 0xDEADBEEEEEEFCAFE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0xDEAD_BEEE_EEEF_CAFE` [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: unused import: `Read` [INFO] [stderr] --> src/lib.rs:77:15 [INFO] [stderr] | [INFO] [stderr] 77 | use std::io::{Read, Write}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Write` [INFO] [stderr] --> src/lib.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | use std::io::{Read, Write}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/crypt.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | let mut buf = state.read_buf; [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/crypt.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | let mut buf = state.read_buf; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `config::Config` [INFO] [stderr] --> src/config.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | / pub fn new() -> Self { [INFO] [stderr] 228 | | let mut def_opts = HashSet::new(); [INFO] [stderr] 229 | | def_opts.insert(OutputOption::IncludeKeyMetadata); [INFO] [stderr] 230 | | [INFO] [stderr] ... | [INFO] [stderr] 244 | | } [INFO] [stderr] 245 | | } [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] 224 | impl Default for config::Config { [INFO] [stderr] 225 | fn default() -> Self { [INFO] [stderr] 226 | Self::new() [INFO] [stderr] 227 | } [INFO] [stderr] 228 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/config.rs:398:9 [INFO] [stderr] | [INFO] [stderr] 398 | / match &self.derived_key { [INFO] [stderr] 399 | | &None => None, [INFO] [stderr] 400 | | &Some(ref ks) => { [INFO] [stderr] 401 | | Some(ks.clone().key) [INFO] [stderr] 402 | | } [INFO] [stderr] 403 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 398 | match self.derived_key { [INFO] [stderr] 399 | None => None, [INFO] [stderr] 400 | Some(ref ks) => { [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/crypt.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | / match remove_file(&self.filename) { [INFO] [stderr] 40 | | Err(e) => println!("Failed to remove temporary file: {}: {}", &self.filename, e), [INFO] [stderr] 41 | | Ok(_) => (), [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = remove_file(&self.filename) { println!("Failed to remove temporary file: {}: {}", &self.filename, 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 don't need to add `&` to all patterns [INFO] [stderr] --> src/crypt.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | / match c.get_password() { [INFO] [stderr] 111 | | &PasswordType::Unknown | [INFO] [stderr] 112 | | &PasswordType::Func(_) | [INFO] [stderr] 113 | | &PasswordType::Text(_, PasswordKeyGenMethod::ReadFromFile) => (), [INFO] [stderr] ... | [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [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] 110 | match *c.get_password() { [INFO] [stderr] 111 | PasswordType::Unknown | [INFO] [stderr] 112 | PasswordType::Func(_) | [INFO] [stderr] 113 | PasswordType::Text(_, PasswordKeyGenMethod::ReadFromFile) => (), [INFO] [stderr] 114 | PasswordType::Text(_, [INFO] [stderr] 115 | PasswordKeyGenMethod::Scrypt(ScryptLogN(logn), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/crypt.rs:212:13 [INFO] [stderr] | [INFO] [stderr] 212 | iv: state.iv.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.iv` [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: useless use of `format!` [INFO] [stderr] --> src/crypt.rs:258:57 [INFO] [stderr] | [INFO] [stderr] 258 | Err(EncryptError::UnexpectedEnumVariant(format!("Illegal password type (unknown \ [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 259 | | or func)"))) [INFO] [stderr] | |___________________________________________________________________________^ [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] help: consider using .to_string() [INFO] [stderr] | [INFO] [stderr] 258 | Err(EncryptError::UnexpectedEnumVariant("Illegal password type (unknown \ [INFO] [stderr] 259 | or func)".to_string())) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/config.rs:363:9 [INFO] [stderr] | [INFO] [stderr] 363 | return &self.mode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.mode` [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/config.rs:366:9 [INFO] [stderr] | [INFO] [stderr] 366 | return &self.input_stream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.input_stream` [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/config.rs:369:9 [INFO] [stderr] | [INFO] [stderr] 369 | return &self.output_stream; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.output_stream` [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/config.rs:372:9 [INFO] [stderr] | [INFO] [stderr] 372 | return &self.output_format; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.output_format` [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/config.rs:375:9 [INFO] [stderr] | [INFO] [stderr] 375 | return &self.output_options; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.output_options` [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/config.rs:378:9 [INFO] [stderr] | [INFO] [stderr] 378 | return &self.rng_mode; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.rng_mode` [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/config.rs:381:9 [INFO] [stderr] | [INFO] [stderr] 381 | return &self.initialization_vector; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.initialization_vector` [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/config.rs:384:9 [INFO] [stderr] | [INFO] [stderr] 384 | return &self.password; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.password` [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/config.rs:387:9 [INFO] [stderr] | [INFO] [stderr] 387 | return &self.salt; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.salt` [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/config.rs:390:9 [INFO] [stderr] | [INFO] [stderr] 390 | return &self.encryption_method; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `&self.encryption_method` [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/config.rs:393:9 [INFO] [stderr] | [INFO] [stderr] 393 | return self.buffer_size; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `self.buffer_size` [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/crypt.rs:19:20 [INFO] [stderr] | [INFO] [stderr] 19 | const MAGIC: u64 = 0xDEADBEEEEEEFCAFE; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: consider: `0xDEAD_BEEE_EEEF_CAFE` [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 don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | / match m { [INFO] [stderr] 229 | | &PasswordKeyGenMethod::ReadFromFile => Err(EncryptError::InvalidPasswordGenMethod), [INFO] [stderr] 230 | | &PasswordKeyGenMethod::Scrypt(ref logn, ref r, ref p) => { [INFO] [stderr] 231 | | Ok(make_scrypt_key(pw, salt, logn, r, p)) [INFO] [stderr] 232 | | } [INFO] [stderr] 233 | | } [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] 228 | match *m { [INFO] [stderr] 229 | PasswordKeyGenMethod::ReadFromFile => Err(EncryptError::InvalidPasswordGenMethod), [INFO] [stderr] 230 | PasswordKeyGenMethod::Scrypt(ref logn, ref r, ref p) => { [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/lib.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | / match c.validate() { [INFO] [stderr] 278 | | Err(e) => return Err(EncryptError::ValidateFailed(e)), [INFO] [stderr] 279 | | Ok(_) => (), [INFO] [stderr] 280 | | }; [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = c.validate() { return Err(EncryptError::ValidateFailed(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: unused import: `Read` [INFO] [stderr] --> src/lib.rs:77:15 [INFO] [stderr] | [INFO] [stderr] 77 | use std::io::{Read, Write}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `Write` [INFO] [stderr] --> src/lib.rs:77:21 [INFO] [stderr] | [INFO] [stderr] 77 | use std::io::{Read, Write}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/crypt.rs:174:9 [INFO] [stderr] | [INFO] [stderr] 174 | let mut buf = state.read_buf; [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/crypt.rs:239:9 [INFO] [stderr] | [INFO] [stderr] 239 | let mut buf = state.read_buf; [INFO] [stderr] | ----^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: you should consider adding a `Default` implementation for `config::Config` [INFO] [stderr] --> src/config.rs:227:5 [INFO] [stderr] | [INFO] [stderr] 227 | / pub fn new() -> Self { [INFO] [stderr] 228 | | let mut def_opts = HashSet::new(); [INFO] [stderr] 229 | | def_opts.insert(OutputOption::IncludeKeyMetadata); [INFO] [stderr] 230 | | [INFO] [stderr] ... | [INFO] [stderr] 244 | | } [INFO] [stderr] 245 | | } [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] 224 | impl Default for config::Config { [INFO] [stderr] 225 | fn default() -> Self { [INFO] [stderr] 226 | Self::new() [INFO] [stderr] 227 | } [INFO] [stderr] 228 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to both the expression and the patterns [INFO] [stderr] --> src/config.rs:398:9 [INFO] [stderr] | [INFO] [stderr] 398 | / match &self.derived_key { [INFO] [stderr] 399 | | &None => None, [INFO] [stderr] 400 | | &Some(ref ks) => { [INFO] [stderr] 401 | | Some(ks.clone().key) [INFO] [stderr] 402 | | } [INFO] [stderr] 403 | | } [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: try [INFO] [stderr] | [INFO] [stderr] 398 | match self.derived_key { [INFO] [stderr] 399 | None => None, [INFO] [stderr] 400 | Some(ref ks) => { [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/crypt.rs:39:13 [INFO] [stderr] | [INFO] [stderr] 39 | / match remove_file(&self.filename) { [INFO] [stderr] 40 | | Err(e) => println!("Failed to remove temporary file: {}: {}", &self.filename, e), [INFO] [stderr] 41 | | Ok(_) => (), [INFO] [stderr] 42 | | } [INFO] [stderr] | |_____________^ help: try this: `if let Err(e) = remove_file(&self.filename) { println!("Failed to remove temporary file: {}: {}", &self.filename, 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 don't need to add `&` to all patterns [INFO] [stderr] --> src/crypt.rs:110:5 [INFO] [stderr] | [INFO] [stderr] 110 | / match c.get_password() { [INFO] [stderr] 111 | | &PasswordType::Unknown | [INFO] [stderr] 112 | | &PasswordType::Func(_) | [INFO] [stderr] 113 | | &PasswordType::Text(_, PasswordKeyGenMethod::ReadFromFile) => (), [INFO] [stderr] ... | [INFO] [stderr] 122 | | } [INFO] [stderr] 123 | | } [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] 110 | match *c.get_password() { [INFO] [stderr] 111 | PasswordType::Unknown | [INFO] [stderr] 112 | PasswordType::Func(_) | [INFO] [stderr] 113 | PasswordType::Text(_, PasswordKeyGenMethod::ReadFromFile) => (), [INFO] [stderr] 114 | PasswordType::Text(_, [INFO] [stderr] 115 | PasswordKeyGenMethod::Scrypt(ScryptLogN(logn), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: using `clone` on a `Copy` type [INFO] [stderr] --> src/crypt.rs:212:13 [INFO] [stderr] | [INFO] [stderr] 212 | iv: state.iv.clone(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try removing the `clone` call: `state.iv` [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: useless use of `format!` [INFO] [stderr] --> src/crypt.rs:258:57 [INFO] [stderr] | [INFO] [stderr] 258 | Err(EncryptError::UnexpectedEnumVariant(format!("Illegal password type (unknown \ [INFO] [stderr] | _________________________________________________________^ [INFO] [stderr] 259 | | or func)"))) [INFO] [stderr] | |___________________________________________________________________________^ [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] help: consider using .to_string() [INFO] [stderr] | [INFO] [stderr] 258 | Err(EncryptError::UnexpectedEnumVariant("Illegal password type (unknown \ [INFO] [stderr] 259 | or func)".to_string())) [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/crypt.rs:478:9 [INFO] [stderr] | [INFO] [stderr] 478 | fout_stream.write(&z).unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: you don't need to add `&` to all patterns [INFO] [stderr] --> src/lib.rs:228:5 [INFO] [stderr] | [INFO] [stderr] 228 | / match m { [INFO] [stderr] 229 | | &PasswordKeyGenMethod::ReadFromFile => Err(EncryptError::InvalidPasswordGenMethod), [INFO] [stderr] 230 | | &PasswordKeyGenMethod::Scrypt(ref logn, ref r, ref p) => { [INFO] [stderr] 231 | | Ok(make_scrypt_key(pw, salt, logn, r, p)) [INFO] [stderr] 232 | | } [INFO] [stderr] 233 | | } [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] 228 | match *m { [INFO] [stderr] 229 | PasswordKeyGenMethod::ReadFromFile => Err(EncryptError::InvalidPasswordGenMethod), [INFO] [stderr] 230 | PasswordKeyGenMethod::Scrypt(ref logn, ref r, ref p) => { [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/lib.rs:277:5 [INFO] [stderr] | [INFO] [stderr] 277 | / match c.validate() { [INFO] [stderr] 278 | | Err(e) => return Err(EncryptError::ValidateFailed(e)), [INFO] [stderr] 279 | | Ok(_) => (), [INFO] [stderr] 280 | | }; [INFO] [stderr] | |_____^ help: try this: `if let Err(e) = c.validate() { return Err(EncryptError::ValidateFailed(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: use of `unwrap_or` followed by a function call [INFO] [stderr] --> src/lib.rs:364:52 [INFO] [stderr] | [INFO] [stderr] 364 | let skip_long: i32 = env::var("SKIP_LONG").unwrap_or("0".to_owned()).parse().unwrap(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `unwrap_or_else(|_| "0".to_owned())` [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: useless use of `format!` [INFO] [stderr] --> src/lib.rs:424:35 [INFO] [stderr] | [INFO] [stderr] 424 | check_eq(&expected, &key, format!("Func pwkey variant failed")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Func pwkey variant failed".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/lib.rs:460:37 [INFO] [stderr] | [INFO] [stderr] 460 | check_eq(&expected, &geniv, format!("Data iv variant failed")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Data iv variant failed".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/lib.rs:472:37 [INFO] [stderr] | [INFO] [stderr] 472 | check_eq(&geniv, &expected, format!("Func iv variant failed")); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider using .to_string(): `"Func iv variant failed".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] error: aborting due to previous error [INFO] [stderr] [INFO] [stderr] error: Could not compile `encryptfile`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> examples/simple.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | c.buffer_size(1048576*1) [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: the operation is ineffective. Consider reducing it to `1048576` [INFO] [stderr] --> examples/simple.rs:24:19 [INFO] [stderr] | [INFO] [stderr] 24 | c.buffer_size(1048576*1) [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::identity_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "ced0cb6a677db51ce54daf71fdd56d7fdc9e47370169d555fe3a8484b10fdc04"` [INFO] running `"docker" "rm" "-f" "ced0cb6a677db51ce54daf71fdd56d7fdc9e47370169d555fe3a8484b10fdc04"` [INFO] [stdout] ced0cb6a677db51ce54daf71fdd56d7fdc9e47370169d555fe3a8484b10fdc04