[INFO] crate argon2rs 0.2.5 is already in cache [INFO] extracting crate argon2rs 0.2.5 into work/ex/clippy-test-run/sources/stable/reg/argon2rs/0.2.5 [INFO] extracting crate argon2rs 0.2.5 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/argon2rs/0.2.5 [INFO] validating manifest of argon2rs-0.2.5 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 argon2rs-0.2.5 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 argon2rs-0.2.5 [INFO] removed path dependency cargon from argon2rs-0.2.5 [INFO] finished frobbing argon2rs-0.2.5 [INFO] frobbed toml for argon2rs-0.2.5 written to work/ex/clippy-test-run/sources/stable/reg/argon2rs/0.2.5/Cargo.toml [INFO] started frobbing argon2rs-0.2.5 [INFO] removed path dependency cargon from argon2rs-0.2.5 [INFO] finished frobbing argon2rs-0.2.5 [INFO] frobbed toml for argon2rs-0.2.5 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/argon2rs/0.2.5/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 argon2rs-0.2.5 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/argon2rs/0.2.5:/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] e81c9f819489c5b6232f59c1e5a9714b24d6f62c58d8033fe50d425d039e869f [INFO] running `"docker" "start" "-a" "e81c9f819489c5b6232f59c1e5a9714b24d6f62c58d8033fe50d425d039e869f"` [INFO] [stderr] Compiling cargon v0.0.1 [INFO] [stderr] Checking argon2rs v0.2.5 (/opt/crater/workdir) [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/octword.rs:64:1 [INFO] [stderr] | [INFO] [stderr] 64 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::deprecated_cfg_attr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/argon2.rs:66:1 [INFO] [stderr] | [INFO] [stderr] 66 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/argon2.rs:161:17 [INFO] [stderr] | [INFO] [stderr] 161 | passes: passes, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `passes` [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/argon2.rs:162:17 [INFO] [stderr] | [INFO] [stderr] 162 | lanes: lanes, [INFO] [stderr] | ^^^^^^^^^^^^ help: replace it with: `lanes` [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/argon2.rs:164:17 [INFO] [stderr] | [INFO] [stderr] 164 | kib: kib, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `kib` [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/argon2.rs:165:17 [INFO] [stderr] | [INFO] [stderr] 165 | variant: variant, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `variant` [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: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/argon2.rs:186:5 [INFO] [stderr] | [INFO] [stderr] 186 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/argon2.rs:278:5 [INFO] [stderr] | [INFO] [stderr] 278 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/argon2.rs:391:5 [INFO] [stderr] | [INFO] [stderr] 391 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/argon2.rs:502:1 [INFO] [stderr] | [INFO] [stderr] 502 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/argon2.rs:508:1 [INFO] [stderr] | [INFO] [stderr] 508 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/argon2.rs:584:17 [INFO] [stderr] | [INFO] [stderr] 584 | let (k, x) = (&[3; TEST_SECRETLEN], &[4; TEST_ADLEN]); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::many_single_char_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: 5th binding whose name is just one char [INFO] [stderr] --> src/verifier.rs:44:9 [INFO] [stderr] | [INFO] [stderr] 44 | let d = maybe!(delut(n[3])); [INFO] [stderr] | ^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#many_single_char_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/verifier.rs:265:29 [INFO] [stderr] | [INFO] [stderr] 265 | hash: hash, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `hash` [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/verifier.rs:266:29 [INFO] [stderr] | [INFO] [stderr] 266 | salt: salt, [INFO] [stderr] | ^^^^^^^^^^ help: replace it with: `salt` [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/verifier.rs:267:29 [INFO] [stderr] | [INFO] [stderr] 267 | key: key, [INFO] [stderr] | ^^^^^^^^ help: replace it with: `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/verifier.rs:268:29 [INFO] [stderr] | [INFO] [stderr] 268 | 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: `cfg_attr` is deprecated for rustfmt and got replaced by tool_attributes [INFO] [stderr] --> src/verifier.rs:278:5 [INFO] [stderr] | [INFO] [stderr] 278 | #[cfg_attr(rustfmt, rustfmt_skip)] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use: `#[rustfmt::skip]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#deprecated_cfg_attr [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/octword.rs:105:28 [INFO] [stderr] | [INFO] [stderr] 105 | fn lo(n: u64) -> u64 { n & 0xffffffff } [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unreadable_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unreadable_literal [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/block.rs:106:9 [INFO] [stderr] | [INFO] [stderr] 106 | rv [INFO] [stderr] | ^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::let_and_return)] on by default [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/block.rs:105:18 [INFO] [stderr] | [INFO] [stderr] 105 | let rv = unsafe { (&mut (*p)[wr], &(*p)[rd0], &(*p)[rd1]) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: long literal lacking separators [INFO] [stderr] --> src/argon2.rs:30:11 [INFO] [stderr] | [INFO] [stderr] 30 | ((n & 0xffffffff) as u32, (n >> 32) as u32) [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [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/argon2.rs:155:19 [INFO] [stderr] | [INFO] [stderr] 155 | } else if 0x00ffffff < lanes { [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0x00ff_ffff` [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/argon2.rs:192:48 [INFO] [stderr] | [INFO] [stderr] 192 | assert!(4 <= out.len() && out.len() <= 0xffffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [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/argon2.rs:193:28 [INFO] [stderr] | [INFO] [stderr] 193 | assert!(p.len() <= 0xffffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [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/argon2.rs:194:45 [INFO] [stderr] | [INFO] [stderr] 194 | assert!(8 <= s.len() && s.len() <= 0xffffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [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/argon2.rs:196:28 [INFO] [stderr] | [INFO] [stderr] 196 | assert!(x.len() <= 0xffffffff); [INFO] [stderr] | ^^^^^^^^^^ help: consider: `0xffff_ffff` [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: operator precedence can trip the unwary [INFO] [stderr] --> src/argon2.rs:376:34 [INFO] [stderr] | [INFO] [stderr] 376 | let relpos: u32 = (r_ - 1 - (r_ * (j1_ * j1_ >> 32) >> 32)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(r_ * (j1_ * j1_ >> 32)) >> 32` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::precedence)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: operator precedence can trip the unwary [INFO] [stderr] --> src/argon2.rs:376:40 [INFO] [stderr] | [INFO] [stderr] 376 | let relpos: u32 = (r_ - 1 - (r_ * (j1_ * j1_ >> 32) >> 32)) as u32; [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: consider parenthesizing your expression: `(j1_ * j1_) >> 32` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#precedence [INFO] [stderr] [INFO] [stderr] warning: Constants have by default a `'static` lifetime [INFO] [stderr] --> src/verifier.rs:17:15 [INFO] [stderr] | [INFO] [stderr] 17 | const LUT64: &'static [u8; 64] = [INFO] [stderr] | -^^^^^^^--------- help: consider removing `'static`: `&[u8; 64]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::const_static_lifetime)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#const_static_lifetime [INFO] [stderr] [INFO] [stderr] warning: method is never used: `iter` [INFO] [stderr] --> src/block.rs:118:5 [INFO] [stderr] | [INFO] [stderr] 118 | pub fn iter(&self) -> Iter> { self.0.iter() } [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/block.rs:62:48 [INFO] [stderr] | [INFO] [stderr] 62 | let rv: &mut [u8; per_kib!(u8)] = unsafe { mem::transmute(&mut b.0) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `&mut *(&mut b.0 as *mut [octword::u64x2; 64] as *mut [u8; 1024])` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::transmute_ptr_to_ptr)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/block.rs:67:44 [INFO] [stderr] | [INFO] [stderr] 67 | let rv: &[u8; per_kib!(u8)] = unsafe { mem::transmute(&b.0) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(&b.0 as *const [octword::u64x2; 64] as *const [u8; 1024])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: transmute from a reference to a reference [INFO] [stderr] --> src/block.rs:72:46 [INFO] [stderr] | [INFO] [stderr] 72 | let rv: &[u64; per_kib!(u64)] = unsafe { mem::transmute(&b.0) }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: try: `&*(&b.0 as *const [octword::u64x2; 64] as *const [u64; 128])` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#transmute_ptr_to_ptr [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/argon2.rs:33:20 [INFO] [stderr] | [INFO] [stderr] 33 | fn xor_all(blocks: &Vec<&Block>) -> Block { [INFO] [stderr] | ^^^^^^^^^^^^ help: change this to: `&[&Block]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/argon2.rs:34:8 [INFO] [stderr] | [INFO] [stderr] 34 | if blocks.len() == 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `blocks.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: this function has too many arguments (10/7) [INFO] [stderr] --> src/argon2.rs:67:1 [INFO] [stderr] | [INFO] [stderr] 67 | / fn h0(lanes: u32, hash_length: u32, memory_kib: u32, passes: u32, version: u32, [INFO] [stderr] 68 | | variant: Variant, p: &[u8], s: &[u8], k: &[u8], x: &[u8]) [INFO] [stderr] 69 | | -> [u8; 72] { [INFO] [stderr] 70 | | let mut rv = [0 as u8; 72]; [INFO] [stderr] ... | [INFO] [stderr] 78 | | rv [INFO] [stderr] 79 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::too_many_arguments)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: The function/method `len` doesn't need a mutable reference [INFO] [stderr] --> src/argon2.rs:71:13 [INFO] [stderr] | [INFO] [stderr] 71 | b2hash!(&mut rv[0..DEF_B2HASH_LEN]; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/argon2.rs:157:19 [INFO] [stderr] | [INFO] [stderr] 157 | } else if (kib as u64) < 8 * lanes as u64 { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(kib)` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cast_lossless)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/argon2.rs:157:38 [INFO] [stderr] | [INFO] [stderr] 157 | } else if (kib as u64) < 8 * lanes as u64 { [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(lanes)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/argon2.rs:158:46 [INFO] [stderr] | [INFO] [stderr] 158 | Result::Err(ParamErr::MinKiB(8 * lanes as u64)) [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `u64::from(lanes)` [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: this function has too many arguments (8/7) [INFO] [stderr] --> src/argon2.rs:187:5 [INFO] [stderr] | [INFO] [stderr] 187 | / fn hash_impl(&self, out: &mut [u8], p: &[u8], s: &[u8], k: &[u8], [INFO] [stderr] 188 | | x: &[u8], mut h0_fn: F, mut pass_fn: G) [INFO] [stderr] 189 | | where F: FnMut(&[u8]) -> (), [INFO] [stderr] 190 | | G: FnMut(u32, &Matrix) -> () [INFO] [stderr] ... | [INFO] [stderr] 223 | | h_prime(out, block::as_u8(&xor_all(&blocks.col(self.lanelen - 1)))); [INFO] [stderr] 224 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/argon2.rs:296:5 [INFO] [stderr] | [INFO] [stderr] 296 | / fn fill_block(&self, blks: &mut Matrix, pass: u32, lane: u32, slice: u32, [INFO] [stderr] 297 | | idx: u32, j1: u32, j2: u32) { [INFO] [stderr] 298 | | let slicelen = self.lanelen / SLICES_PER_LANE; [INFO] [stderr] 299 | | let ls = self.lanes; [INFO] [stderr] ... | [INFO] [stderr] 310 | | g(wr, rd, refblk); [INFO] [stderr] 311 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: The function/method `len` doesn't need a mutable reference [INFO] [stderr] --> src/argon2.rs:53:21 [INFO] [stderr] | [INFO] [stderr] 53 | b2hash!(&mut out; $($bytes),*); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 347 | let mut tmp = b2hash!(&len32(out), input); [INFO] [stderr] | --------------------------- in this macro invocation [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `len` doesn't need a mutable reference [INFO] [stderr] --> src/argon2.rs:352:21 [INFO] [stderr] | [INFO] [stderr] 352 | b2hash!(&mut tmp; &tmp); [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: The function/method `len` doesn't need a mutable reference [INFO] [stderr] --> src/argon2.rs:358:17 [INFO] [stderr] | [INFO] [stderr] 358 | b2hash!(&mut out[wr_at..wr_at + len]; &tmp); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: this function has too many arguments (8/7) [INFO] [stderr] --> src/argon2.rs:363:1 [INFO] [stderr] | [INFO] [stderr] 363 | / fn index_alpha(pass: u32, lane: u32, slice: u32, lanes: u32, sliceidx: u32, [INFO] [stderr] 364 | | slicelen: u32, j1: u32, j2: u32) [INFO] [stderr] 365 | | -> u32 { [INFO] [stderr] 366 | | let lanelen = slicelen * 4; [INFO] [stderr] ... | [INFO] [stderr] 381 | | } [INFO] [stderr] 382 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#too_many_arguments [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/argon2.rs:375:22 [INFO] [stderr] | [INFO] [stderr] 375 | let (r_, j1_) = (r as u64, j1 as u64); [INFO] [stderr] | ^^^^^^^^ help: try: `u64::from(r)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/argon2.rs:375:32 [INFO] [stderr] | [INFO] [stderr] 375 | let (r_, j1_) = (r as u64, j1 as u64); [INFO] [stderr] | ^^^^^^^^^ help: try: `u64::from(j1)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: this .into_iter() call is equivalent to .iter() and will not move the array [INFO] [stderr] --> src/argon2.rs:400:58 [INFO] [stderr] | [INFO] [stderr] 400 | for (k, &(lo, hi)) in rv.arg.iter_mut().zip(args.into_iter()) { [INFO] [stderr] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::into_iter_on_array)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_array [INFO] [stderr] [INFO] [stderr] warning: casting u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/argon2.rs:401:24 [INFO] [stderr] | [INFO] [stderr] 401 | *k = u64x2(lo as u64, hi as u64); [INFO] [stderr] | ^^^^^^^^^ help: try: `u64::from(lo)` [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 u32 to u64 may become silently lossy if types change [INFO] [stderr] --> src/argon2.rs:401:35 [INFO] [stderr] | [INFO] [stderr] 401 | *k = u64x2(lo as u64, hi as u64); [INFO] [stderr] | ^^^^^^^^^ help: try: `u64::from(hi)` [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: the operation is ineffective. Consider reducing it to `8 * row` [INFO] [stderr] --> src/argon2.rs:504:10 [INFO] [stderr] | [INFO] [stderr] 504 | p!(b[8 * row + 0], b[8 * row + 1], b[8 * row + 2], b[8 * row + 3], [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] warning: the operation is ineffective. Consider reducing it to `8 * row` [INFO] [stderr] --> src/argon2.rs:504:10 [INFO] [stderr] | [INFO] [stderr] 504 | p!(b[8 * row + 0], b[8 * row + 1], b[8 * row + 2], b[8 * row + 3], [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `col` [INFO] [stderr] --> src/argon2.rs:510:10 [INFO] [stderr] | [INFO] [stderr] 510 | p!(b[8 * 0 + col], b[8 * 1 + col], b[8 * 2 + col], b[8 * 3 + col], [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/argon2.rs:510:10 [INFO] [stderr] | [INFO] [stderr] 510 | p!(b[8 * 0 + col], b[8 * 1 + col], b[8 * 2 + col], b[8 * 3 + col], [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::erasing_op)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] error: this operation will always return zero. This is likely not the intended outcome [INFO] [stderr] --> src/argon2.rs:510:10 [INFO] [stderr] | [INFO] [stderr] 510 | p!(b[8 * 0 + col], b[8 * 1 + col], b[8 * 2 + col], b[8 * 3 + col], [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#erasing_op [INFO] [stderr] [INFO] [stderr] warning: the operation is ineffective. Consider reducing it to `8` [INFO] [stderr] --> src/argon2.rs:510:26 [INFO] [stderr] | [INFO] [stderr] 510 | p!(b[8 * 0 + col], b[8 * 1 + col], b[8 * 2 + col], b[8 * 3 + col], [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#identity_op [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/verifier.rs:67:32 [INFO] [stderr] | [INFO] [stderr] 67 | if bytes.len() % 4 != 1 && bytes.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bytes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/verifier.rs:113:12 [INFO] [stderr] | [INFO] [stderr] 113 | if self.enc.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!self.enc.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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/verifier.rs:226:23 [INFO] [stderr] | [INFO] [stderr] 226 | v if v == 'd' as u8 => Variant::Argon2d, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::char_lit_as_u8)] on by default [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'd' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: casting character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/verifier.rs:227:23 [INFO] [stderr] | [INFO] [stderr] 227 | v if v == 'i' as u8 => Variant::Argon2i, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'i' [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#char_lit_as_u8 [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/verifier.rs:287:22 [INFO] [stderr] | [INFO] [stderr] 287 | bytes if bytes.len() > 0 => format!(",keyid={}", bytes), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bytes.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/verifier.rs:291:22 [INFO] [stderr] | [INFO] [stderr] 291 | bytes if bytes.len() > 0 => format!(",data={}", bytes), [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bytes.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: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/verifier.rs:322:19 [INFO] [stderr] | [INFO] [stderr] 322 | salt: s.iter().cloned().collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::iter_cloned_collect)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/verifier.rs:323:18 [INFO] [stderr] | [INFO] [stderr] 323 | key: k.iter().cloned().collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: called `cloned().collect()` on a slice to create a `Vec`. Calling `to_vec()` is both faster and more readable [INFO] [stderr] --> src/verifier.rs:324:19 [INFO] [stderr] | [INFO] [stderr] 324 | data: x.iter().cloned().collect(), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#iter_cloned_collect [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/verifier.rs:359:14 [INFO] [stderr] | [INFO] [stderr] 359 | (1 & (rv as u32).wrapping_sub(1) >> 8).wrapping_sub(1) == 0 [INFO] [stderr] | ^^^^^^^^^^^ help: try: `u32::from(rv)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] error: aborting due to 3 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `argon2rs`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] error: build failed [INFO] running `"docker" "inspect" "e81c9f819489c5b6232f59c1e5a9714b24d6f62c58d8033fe50d425d039e869f"` [INFO] running `"docker" "rm" "-f" "e81c9f819489c5b6232f59c1e5a9714b24d6f62c58d8033fe50d425d039e869f"` [INFO] [stdout] e81c9f819489c5b6232f59c1e5a9714b24d6f62c58d8033fe50d425d039e869f