[INFO] updating cached repository cjgu/rust_cryptopals [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/cjgu/rust_cryptopals [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/cjgu/rust_cryptopals" "work/ex/clippy-test-run/sources/stable/gh/cjgu/rust_cryptopals"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/cjgu/rust_cryptopals'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/cjgu/rust_cryptopals" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/cjgu/rust_cryptopals"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/cjgu/rust_cryptopals'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] 6ea55b2771faa8672552800c5e9d10047349f45c [INFO] sha for GitHub repo cjgu/rust_cryptopals: 6ea55b2771faa8672552800c5e9d10047349f45c [INFO] validating manifest of cjgu/rust_cryptopals 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 cjgu/rust_cryptopals 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 cjgu/rust_cryptopals [INFO] finished frobbing cjgu/rust_cryptopals [INFO] frobbed toml for cjgu/rust_cryptopals written to work/ex/clippy-test-run/sources/stable/gh/cjgu/rust_cryptopals/Cargo.toml [INFO] started frobbing cjgu/rust_cryptopals [INFO] finished frobbing cjgu/rust_cryptopals [INFO] frobbed toml for cjgu/rust_cryptopals written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/cjgu/rust_cryptopals/Cargo.toml [INFO] crate cjgu/rust_cryptopals has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] [stderr] Blocking waiting for file lock on the registry index [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting cjgu/rust_cryptopals against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-3/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/cjgu/rust_cryptopals:/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] 05f546dedcbf3288d8c40f1ebc1db45f350c55e65612a26cd214af5191df65c6 [INFO] running `"docker" "start" "-a" "05f546dedcbf3288d8c40f1ebc1db45f350c55e65612a26cd214af5191df65c6"` [INFO] [stderr] Checking itertools v0.5.10 [INFO] [stderr] Checking crypto_pals v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/cookie/mod.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | encrypted [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/cookie/mod.rs:57:21 [INFO] [stderr] | [INFO] [stderr] 57 | let encrypted = aes::encrypt_128_ecb(key, &profile_bytes, true); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#let_and_return [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/cookie/mod.rs:59:5 [INFO] [stderr] | [INFO] [stderr] 59 | encrypted [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/cookie/mod.rs:57:21 [INFO] [stderr] | [INFO] [stderr] 57 | let encrypted = aes::encrypt_128_ecb(key, &profile_bytes, true); [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/mod.rs:34:26 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn encode_hex(bytes: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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/utils/mod.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | assert!(bytes.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bytes.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/mod.rs:52:26 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn encode_b64(bytes: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:68:66 [INFO] [stderr] | [INFO] [stderr] 68 | let mut s_in = bytes[..in_len - mod_len].iter().map(|&x| x as u32); [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [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: the operation is ineffective. Consider reducing it to `n` [INFO] [stderr] --> src/utils/mod.rs:79:28 [INFO] [stderr] | [INFO] [stderr] 79 | write(B64_MAP[((n >> 0) & 0x3F) as usize] as u8); [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | let n = (bytes[in_len - 1] as u32) << 16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[in_len - 1])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:90:25 [INFO] [stderr] | [INFO] [stderr] 90 | let n = (bytes[in_len - 2] as u32) << 16 | (bytes[in_len - 1] as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[in_len - 2])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:90:60 [INFO] [stderr] | [INFO] [stderr] 90 | let n = (bytes[in_len - 2] as u32) << 16 | (bytes[in_len - 1] as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[in_len - 1])` [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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/utils/mod.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | 65...90 => d - ('A' as u8), // A-Z [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'A' [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/utils/mod.rs:106:25 [INFO] [stderr] | [INFO] [stderr] 106 | 97...122 => d - ('a' as u8) + 26, // a-z [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [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/utils/mod.rs:107:24 [INFO] [stderr] | [INFO] [stderr] 107 | 48...57 => d - ('0' as u8) + 2 * 26, // 0-9 [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/mod.rs:174:28 [INFO] [stderr] | [INFO] [stderr] 174 | pub fn pkcs_7_padding(buf: &Vec, block_size: usize) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 174 | pub fn pkcs_7_padding(buf: &[u8], block_size: usize) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `buf.clone()` to [INFO] [stderr] | [INFO] [stderr] 177 | let mut output = buf.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:6:29 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn decrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:6:45 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn decrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/aes/mod.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | pad == true || data.len() % 16 == 0, [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `pad` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:25:29 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn encrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:25:45 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn encrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/aes/mod.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | pad == true || data.len() % 16 == 0, [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `pad` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [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/aes/mod.rs:43:29 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:43:45 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &[u8], iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 59 | plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:43:59 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &[u8], pad: bool) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `iv.clone()` to [INFO] [stderr] | [INFO] [stderr] 51 | let mut prev = iv.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/aes/mod.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / let plaintext: Vec; [INFO] [stderr] 56 | | if pad { [INFO] [stderr] 57 | | plaintext = pkcs_7_padding(&data, 16); [INFO] [stderr] 58 | | } else { [INFO] [stderr] 59 | | plaintext = data.clone(); [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let plaintext = if pad { pkcs_7_padding(&data, 16) } else { data.clone() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/aes/mod.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | pad == true || data.len() % 16 == 0, [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `pad` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [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/aes/mod.rs:80:29 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:80:45 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:80:59 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &[u8]) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `iv.clone()` to [INFO] [stderr] | [INFO] [stderr] 85 | let mut prev = iv.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn xor(a: &Vec, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:3:28 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn xor(a: &Vec, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:12:27 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn repeating_key(key: &Vec, length: usize) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:20:57 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn break_repeating_key(key_size: usize, cryptotext: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/xor/mod.rs:23:48 [INFO] [stderr] | [INFO] [stderr] 23 | let (key, _) = search_single_char_key(&cryptotext [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 24 | | .iter() [INFO] [stderr] 25 | | .dropping(i) [INFO] [stderr] 26 | | .step(key_size) [INFO] [stderr] 27 | | .map(|&x| x) [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 23 | let (key, _) = search_single_char_key(&cryptotext [INFO] [stderr] 24 | .iter() [INFO] [stderr] 25 | .dropping(i) [INFO] [stderr] 26 | .step(key_size).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:35:43 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn search_single_char_key(ciphertext: &Vec) -> (u8, u32) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:60:35 [INFO] [stderr] | [INFO] [stderr] 60 | pub fn score_plaintext(plaintext: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/xor/mod.rs:73:11 [INFO] [stderr] | [INFO] [stderr] 73 | }) [INFO] [stderr] | ___________^ [INFO] [stderr] 74 | | .fold(0, |acc, x| acc + x) [INFO] [stderr] | |__________________________________^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [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/xor/mod.rs:77:28 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn hamming_distance(a: &Vec, b: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:77:41 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn hamming_distance(a: &Vec, b: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/xor/mod.rs:80:38 [INFO] [stderr] | [INFO] [stderr] 80 | c.iter().map(|&x| x.count_ones()).fold(0, |acc, x| acc + x) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [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/cookie/mod.rs:52:41 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn encrypt_cookie(email: &str, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cookie/mod.rs:62:45 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn decrypt_cookie(cookie: Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:13:51 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn detection_oracle_random_method(ciphertext: &Vec) -> CipherMode { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/aes_oracle/mod.rs:71:26 [INFO] [stderr] | [INFO] [stderr] 71 | for block_pos in 1..block_size + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `1..=block_size` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/aes_oracle/mod.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | for block_pos in 1..block_size + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `1..=block_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [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/aes_oracle/mod.rs:204:43 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn encrypt_ecb_extra_and_random(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 204 | pub fn encrypt_ecb_extra_and_random(data: &[u8], key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 209 | let mut plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:204:58 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn encrypt_ecb_extra_and_random(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:217:32 [INFO] [stderr] | [INFO] [stderr] 217 | pub fn encrypt_ecb_extra(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 217 | pub fn encrypt_ecb_extra(data: &[u8], key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 220 | let mut plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:217:47 [INFO] [stderr] | [INFO] [stderr] 217 | pub fn encrypt_ecb_extra(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:227:36 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn encrypt_random_method(data: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 227 | pub fn encrypt_random_method(data: &[u8]) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 240 | let mut plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/mod.rs:34:26 [INFO] [stderr] | [INFO] [stderr] 34 | pub fn encode_hex(bytes: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [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/utils/mod.rs:35:13 [INFO] [stderr] | [INFO] [stderr] 35 | assert!(bytes.len() > 0); [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!bytes.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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/mod.rs:52:26 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn encode_b64(bytes: &Vec) -> String { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:68:66 [INFO] [stderr] | [INFO] [stderr] 68 | let mut s_in = bytes[..in_len - mod_len].iter().map(|&x| x as u32); [INFO] [stderr] | ^^^^^^^^ help: try: `u32::from(x)` [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: the operation is ineffective. Consider reducing it to `n` [INFO] [stderr] --> src/utils/mod.rs:79:28 [INFO] [stderr] | [INFO] [stderr] 79 | write(B64_MAP[((n >> 0) & 0x3F) as usize] as u8); [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: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:85:25 [INFO] [stderr] | [INFO] [stderr] 85 | let n = (bytes[in_len - 1] as u32) << 16; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[in_len - 1])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:90:25 [INFO] [stderr] | [INFO] [stderr] 90 | let n = (bytes[in_len - 2] as u32) << 16 | (bytes[in_len - 1] as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[in_len - 2])` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/utils/mod.rs:90:60 [INFO] [stderr] | [INFO] [stderr] 90 | let n = (bytes[in_len - 2] as u32) << 16 | (bytes[in_len - 1] as u32) << 8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(bytes[in_len - 1])` [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 character literal to u8. `char`s are 4 bytes wide in rust, so casting to u8 truncates them [INFO] [stderr] --> src/utils/mod.rs:105:24 [INFO] [stderr] | [INFO] [stderr] 105 | 65...90 => d - ('A' as u8), // A-Z [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'A' [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/utils/mod.rs:106:25 [INFO] [stderr] | [INFO] [stderr] 106 | 97...122 => d - ('a' as u8) + 26, // a-z [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'a' [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/utils/mod.rs:107:24 [INFO] [stderr] | [INFO] [stderr] 107 | 48...57 => d - ('0' as u8) + 2 * 26, // 0-9 [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: Consider using a byte literal instead: [INFO] [stderr] b'0' [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/utils/mod.rs:174:28 [INFO] [stderr] | [INFO] [stderr] 174 | pub fn pkcs_7_padding(buf: &Vec, block_size: usize) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 174 | pub fn pkcs_7_padding(buf: &[u8], block_size: usize) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `buf.clone()` to [INFO] [stderr] | [INFO] [stderr] 177 | let mut output = buf.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:6:29 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn decrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:6:45 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn decrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/aes/mod.rs:9:9 [INFO] [stderr] | [INFO] [stderr] 9 | pad == true || data.len() % 16 == 0, [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `pad` [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: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:25:29 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn encrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:25:45 [INFO] [stderr] | [INFO] [stderr] 25 | pub fn encrypt_128_ecb(key: &Vec, data: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/aes/mod.rs:28:9 [INFO] [stderr] | [INFO] [stderr] 28 | pad == true || data.len() % 16 == 0, [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `pad` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [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/aes/mod.rs:43:29 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:43:45 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &[u8], iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 59 | plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:43:59 [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec, pad: bool) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 43 | pub fn encrypt_128_cbc(key: &Vec, data: &Vec, iv: &[u8], pad: bool) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `iv.clone()` to [INFO] [stderr] | [INFO] [stderr] 51 | let mut prev = iv.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `if _ { .. } else { .. }` is an expression [INFO] [stderr] --> src/aes/mod.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 55 | / let plaintext: Vec; [INFO] [stderr] 56 | | if pad { [INFO] [stderr] 57 | | plaintext = pkcs_7_padding(&data, 16); [INFO] [stderr] 58 | | } else { [INFO] [stderr] 59 | | plaintext = data.clone(); [INFO] [stderr] 60 | | } [INFO] [stderr] | |_____^ help: it is more idiomatic to write: `let plaintext = if pad { pkcs_7_padding(&data, 16) } else { data.clone() };` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::useless_let_if_seq)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#useless_let_if_seq [INFO] [stderr] [INFO] [stderr] warning: equality checks against true are unnecessary [INFO] [stderr] --> src/aes/mod.rs:47:9 [INFO] [stderr] | [INFO] [stderr] 47 | pad == true || data.len() % 16 == 0, [INFO] [stderr] | ^^^^^^^^^^^ help: try simplifying it as shown: `pad` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_comparison [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/aes/mod.rs:80:29 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:80:45 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes/mod.rs:80:59 [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 80 | pub fn decrypt_128_cbc(key: &Vec, data: &Vec, iv: &[u8]) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `iv.clone()` to [INFO] [stderr] | [INFO] [stderr] 85 | let mut prev = iv.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:3:15 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn xor(a: &Vec, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:3:28 [INFO] [stderr] | [INFO] [stderr] 3 | pub fn xor(a: &Vec, b: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:12:27 [INFO] [stderr] | [INFO] [stderr] 12 | pub fn repeating_key(key: &Vec, length: usize) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:20:57 [INFO] [stderr] | [INFO] [stderr] 20 | pub fn break_repeating_key(key_size: usize, cryptotext: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/xor/mod.rs:23:48 [INFO] [stderr] | [INFO] [stderr] 23 | let (key, _) = search_single_char_key(&cryptotext [INFO] [stderr] | ________________________________________________^ [INFO] [stderr] 24 | | .iter() [INFO] [stderr] 25 | | .dropping(i) [INFO] [stderr] 26 | | .step(key_size) [INFO] [stderr] 27 | | .map(|&x| x) [INFO] [stderr] | |________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::map_clone)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#map_clone [INFO] [stderr] help: Consider calling the dedicated `cloned` method [INFO] [stderr] | [INFO] [stderr] 23 | let (key, _) = search_single_char_key(&cryptotext [INFO] [stderr] 24 | .iter() [INFO] [stderr] 25 | .dropping(i) [INFO] [stderr] 26 | .step(key_size).cloned() [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:35:43 [INFO] [stderr] | [INFO] [stderr] 35 | pub fn search_single_char_key(ciphertext: &Vec) -> (u8, u32) { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:60:35 [INFO] [stderr] | [INFO] [stderr] 60 | pub fn score_plaintext(plaintext: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/xor/mod.rs:73:11 [INFO] [stderr] | [INFO] [stderr] 73 | }) [INFO] [stderr] | ___________^ [INFO] [stderr] 74 | | .fold(0, |acc, x| acc + x) [INFO] [stderr] | |__________________________________^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_fold)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [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/xor/mod.rs:77:28 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn hamming_distance(a: &Vec, b: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/xor/mod.rs:77:41 [INFO] [stderr] | [INFO] [stderr] 77 | pub fn hamming_distance(a: &Vec, b: &Vec) -> u32 { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this `.fold` can be written more succinctly using another method [INFO] [stderr] --> src/xor/mod.rs:80:38 [INFO] [stderr] | [INFO] [stderr] 80 | c.iter().map(|&x| x.count_ones()).fold(0, |acc, x| acc + x) [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `.sum()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [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/cookie/mod.rs:52:41 [INFO] [stderr] | [INFO] [stderr] 52 | pub fn encrypt_cookie(email: &str, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/cookie/mod.rs:62:45 [INFO] [stderr] | [INFO] [stderr] 62 | pub fn decrypt_cookie(cookie: Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:13:51 [INFO] [stderr] | [INFO] [stderr] 13 | pub fn detection_oracle_random_method(ciphertext: &Vec) -> CipherMode { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/aes_oracle/mod.rs:71:26 [INFO] [stderr] | [INFO] [stderr] 71 | for block_pos in 1..block_size + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `1..=block_size` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::range_plus_one)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [INFO] [stderr] [INFO] [stderr] warning: an inclusive range would be more readable [INFO] [stderr] --> src/aes_oracle/mod.rs:159:26 [INFO] [stderr] | [INFO] [stderr] 159 | for block_pos in 1..block_size + 1 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: use: `1..=block_size` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#range_plus_one [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/aes_oracle/mod.rs:204:43 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn encrypt_ecb_extra_and_random(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 204 | pub fn encrypt_ecb_extra_and_random(data: &[u8], key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 209 | let mut plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:204:58 [INFO] [stderr] | [INFO] [stderr] 204 | pub fn encrypt_ecb_extra_and_random(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:217:32 [INFO] [stderr] | [INFO] [stderr] 217 | pub fn encrypt_ecb_extra(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 217 | pub fn encrypt_ecb_extra(data: &[u8], key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 220 | let mut plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:217:47 [INFO] [stderr] | [INFO] [stderr] 217 | pub fn encrypt_ecb_extra(data: &Vec, key: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ help: change this to: `&[u8]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/aes_oracle/mod.rs:227:36 [INFO] [stderr] | [INFO] [stderr] 227 | pub fn encrypt_random_method(data: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] help: change this to [INFO] [stderr] | [INFO] [stderr] 227 | pub fn encrypt_random_method(data: &[u8]) -> Vec { [INFO] [stderr] | ^^^^^ [INFO] [stderr] help: change `data.clone()` to [INFO] [stderr] | [INFO] [stderr] 240 | let mut plaintext = data.to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: casting u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/find_single_char_xor_string_bin.rs:44:42 [INFO] [stderr] | [INFO] [stderr] 44 | println!("Key: {:?}", char::from_u32(high_score_key as u32).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(high_score_key)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/find_single_char_xor_string_bin.rs:44:42 [INFO] [stderr] | [INFO] [stderr] 44 | println!("Key: {:?}", char::from_u32(high_score_key as u32).unwrap()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `u32::from(high_score_key)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/xor_search_single_char_bin.rs:28:42 [INFO] [stderr] | [INFO] [stderr] 28 | println!("Key: {:?}", char::from_u32(key as u32).unwrap()); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(key)` [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 u8 to u32 may become silently lossy if types change [INFO] [stderr] --> src/xor_search_single_char_bin.rs:28:42 [INFO] [stderr] | [INFO] [stderr] 28 | println!("Key: {:?}", char::from_u32(key as u32).unwrap()); [INFO] [stderr] | ^^^^^^^^^^ help: try: `u32::from(key)` [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] Finished dev [unoptimized + debuginfo] target(s) in 12.49s [INFO] running `"docker" "inspect" "05f546dedcbf3288d8c40f1ebc1db45f350c55e65612a26cd214af5191df65c6"` [INFO] running `"docker" "rm" "-f" "05f546dedcbf3288d8c40f1ebc1db45f350c55e65612a26cd214af5191df65c6"` [INFO] [stdout] 05f546dedcbf3288d8c40f1ebc1db45f350c55e65612a26cd214af5191df65c6