[INFO] updating cached repository ShaunApps/cryptopals-challenges [INFO] running `"git" "fetch" "--all"` [INFO] [stdout] Fetching origin [INFO] [stderr] From git://github.com/ShaunApps/cryptopals-challenges [INFO] [stderr] * branch HEAD -> FETCH_HEAD [INFO] running `"git" "clone" "work/cache/sources/gh/ShaunApps/cryptopals-challenges" "work/ex/clippy-test-run/sources/stable/gh/ShaunApps/cryptopals-challenges"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable/gh/ShaunApps/cryptopals-challenges'... [INFO] [stderr] done. [INFO] running `"git" "clone" "work/cache/sources/gh/ShaunApps/cryptopals-challenges" "work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ShaunApps/cryptopals-challenges"` [INFO] [stderr] Cloning into 'work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ShaunApps/cryptopals-challenges'... [INFO] [stderr] done. [INFO] running `"git" "rev-parse" "HEAD"` [INFO] [stdout] d665fe745709477f27425db8575df5bfcb855cfc [INFO] sha for GitHub repo ShaunApps/cryptopals-challenges: d665fe745709477f27425db8575df5bfcb855cfc [INFO] validating manifest of ShaunApps/cryptopals-challenges 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 ShaunApps/cryptopals-challenges 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 ShaunApps/cryptopals-challenges [INFO] finished frobbing ShaunApps/cryptopals-challenges [INFO] frobbed toml for ShaunApps/cryptopals-challenges written to work/ex/clippy-test-run/sources/stable/gh/ShaunApps/cryptopals-challenges/Cargo.toml [INFO] started frobbing ShaunApps/cryptopals-challenges [INFO] finished frobbing ShaunApps/cryptopals-challenges [INFO] frobbed toml for ShaunApps/cryptopals-challenges written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/gh/ShaunApps/cryptopals-challenges/Cargo.toml [INFO] crate ShaunApps/cryptopals-challenges has a lockfile. skipping [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting ShaunApps/cryptopals-challenges against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-7/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/gh/ShaunApps/cryptopals-challenges:/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] 41a51a327ab5be72e59ad9c41b7ab6abe8a1733fbae94b33bbb8710a06a3e372 [INFO] running `"docker" "start" "-a" "41a51a327ab5be72e59ad9c41b7ab6abe8a1733fbae94b33bbb8710a06a3e372"` [INFO] [stderr] Checking cryptopals v0.1.0 (/opt/crater/workdir) [INFO] [stderr] warning: unused import: `hex` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use hex; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufRead` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::io::BufRead; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::path::Path` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:12:5 [INFO] [stderr] | [INFO] [stderr] 12 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `base64` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use base64; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::prelude::*` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use rand::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `OsRng`, `Rng` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:5:12 [INFO] [stderr] | [INFO] [stderr] 5 | use rand::{OsRng, Rng}; [INFO] [stderr] | ^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::fs::File` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:6:5 [INFO] [stderr] | [INFO] [stderr] 6 | use std::fs::File; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufRead` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::io::BufRead; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/challenge_set_1/convert_hex_to_64.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | b64 [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/challenge_set_1/convert_hex_to_64.rs:7:15 [INFO] [stderr] | [INFO] [stderr] 7 | let b64 = base64::encode(&data_as_bytes); [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: unused import: `std::path::Path` [INFO] [stderr] --> src/challenge_set_1/detect_single_char_xor.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `base64` [INFO] [stderr] --> src/challenge_set_1/fixed_XOR.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use base64; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | let result = hex::encode(xor_vec); [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: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | if ((index + 1) == key.as_bytes().len()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `base64` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use base64; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `challenge_set_1::detect_single_char_xor::detect_sing_char_xor` [INFO] [stderr] --> src/main.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use challenge_set_1::detect_single_char_xor::detect_sing_char_xor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `challenge_set_1::single_byte_xor_cipher::single_byte_xor_cipher` [INFO] [stderr] --> src/main.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use challenge_set_1::single_byte_xor_cipher::single_byte_xor_cipher; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `hex` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use hex; [INFO] [stderr] | ^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_imports)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::io; [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufRead` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:9:5 [INFO] [stderr] | [INFO] [stderr] 9 | use std::io::BufRead; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufReader` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::io::BufReader; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::path::Path` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:11:5 [INFO] [stderr] | [INFO] [stderr] 11 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `rand::prelude::*` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:4:5 [INFO] [stderr] | [INFO] [stderr] 4 | use rand::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `OsRng`, `Rng` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:5:12 [INFO] [stderr] | [INFO] [stderr] 5 | use rand::{OsRng, Rng}; [INFO] [stderr] | ^^^^^ ^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::prelude::*` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:7:5 [INFO] [stderr] | [INFO] [stderr] 7 | use std::io::prelude::*; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::io::BufRead` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use std::io::BufRead; [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use std::str; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/challenge_set_1/convert_hex_to_64.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | b64 [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/challenge_set_1/convert_hex_to_64.rs:7:15 [INFO] [stderr] | [INFO] [stderr] 7 | let b64 = base64::encode(&data_as_bytes); [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: unused import: `std::path::Path` [INFO] [stderr] --> src/challenge_set_1/detect_single_char_xor.rs:5:5 [INFO] [stderr] | [INFO] [stderr] 5 | use std::path::Path; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `base64` [INFO] [stderr] --> src/challenge_set_1/fixed_XOR.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use base64; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `std::str::from_utf8` [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:2:5 [INFO] [stderr] | [INFO] [stderr] 2 | use std::str::from_utf8; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: returning the result of a let binding from a block. Consider returning the expression directly. [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:20:5 [INFO] [stderr] | [INFO] [stderr] 20 | result [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] note: this expression can be directly returned [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:19:18 [INFO] [stderr] | [INFO] [stderr] 19 | let result = hex::encode(xor_vec); [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: unnecessary parentheses around `if` condition [INFO] [stderr] --> src/challenge_set_1/repeating_key_xor.rs:11:12 [INFO] [stderr] | [INFO] [stderr] 11 | if ((index + 1) == key.as_bytes().len()) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove these parentheses [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_parens)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `base64` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:1:5 [INFO] [stderr] | [INFO] [stderr] 1 | use base64; [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `super::*` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:88:9 [INFO] [stderr] | [INFO] [stderr] 88 | use super::*; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `challenge_set_1::detect_single_char_xor::detect_sing_char_xor` [INFO] [stderr] --> src/main.rs:8:5 [INFO] [stderr] | [INFO] [stderr] 8 | use challenge_set_1::detect_single_char_xor::detect_sing_char_xor; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `challenge_set_1::single_byte_xor_cipher::single_byte_xor_cipher` [INFO] [stderr] --> src/main.rs:10:5 [INFO] [stderr] | [INFO] [stderr] 10 | use challenge_set_1::single_byte_xor_cipher::single_byte_xor_cipher; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable `phrase` is assigned to, but never used [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | let mut phrase: String = "".to_string(); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_phrase` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `phrase` is never read [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | phrase = match thing { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `error` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:35:21 [INFO] [stderr] | [INFO] [stderr] 35 | Err(error) => String::from(""), [INFO] [stderr] | ^^^^^ help: consider using `_error` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:84:15 [INFO] [stderr] | [INFO] [stderr] 84 | for (key, value) in key_map.iter() { [INFO] [stderr] | ^^^^^ help: consider using `_value` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | Err(e) => String::from(""), [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | let length = data_as_bytes.len(); [INFO] [stderr] | ^^^^^^ help: consider using `_length` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `error` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | Err(error) => String::from(""), [INFO] [stderr] | ^^^^^ help: consider using `_error` instead [INFO] [stderr] [INFO] [stderr] warning: function is never used: `solve_blocks` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:14:1 [INFO] [stderr] | [INFO] [stderr] 14 | fn solve_blocks(blocks: Vec>) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(dead_code)] on by default [INFO] [stderr] [INFO] [stderr] warning: function is never used: `break_ciphertext_into_blocks` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:42:1 [INFO] [stderr] | [INFO] [stderr] 42 | fn break_ciphertext_into_blocks(keysize: u8) -> Vec> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `find_smallest_KEYSIZE` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:76:1 [INFO] [stderr] | [INFO] [stderr] 76 | fn find_smallest_KEYSIZE() -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `normalized_KEYSIZE` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:96:1 [INFO] [stderr] | [INFO] [stderr] 96 | fn normalized_KEYSIZE(key_guess: u8) -> f64 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function is never used: `decrypt` [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:13:1 [INFO] [stderr] | [INFO] [stderr] 13 | / fn decrypt( [INFO] [stderr] 14 | | encrypted_data: &[u8], [INFO] [stderr] 15 | | key: &[u8], [INFO] [stderr] 16 | | ) -> Result, symmetriccipher::SymmetricCipherError> { [INFO] [stderr] ... | [INFO] [stderr] 39 | | Ok(final_result) [INFO] [stderr] 40 | | } [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/challenge_set_1/break_repeating_key_xor.rs:22:37 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn single_byte_xor_cipher(data: &Vec) -> u8 { [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: variable `phrase` is assigned to, but never used [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:24:13 [INFO] [stderr] | [INFO] [stderr] 24 | let mut phrase: String = "".to_string(); [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_variables)] on by default [INFO] [stderr] = note: consider using `_phrase` instead [INFO] [stderr] [INFO] [stderr] warning: value assigned to `phrase` is never read [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:33:13 [INFO] [stderr] | [INFO] [stderr] 33 | phrase = match thing { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_assignments)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `error` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:35:21 [INFO] [stderr] | [INFO] [stderr] 35 | Err(error) => String::from(""), [INFO] [stderr] | ^^^^^ help: consider using `_error` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `value` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:84:15 [INFO] [stderr] | [INFO] [stderr] 84 | for (key, value) in key_map.iter() { [INFO] [stderr] | ^^^^^ help: consider using `_value` instead [INFO] [stderr] [INFO] [stderr] warning: function `find_smallest_KEYSIZE` should have a snake case name such as `find_smallest_keysize` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:76:1 [INFO] [stderr] | [INFO] [stderr] 76 | / fn find_smallest_KEYSIZE() -> Vec { [INFO] [stderr] 77 | | let mut key_map: HashMap = HashMap::new(); [INFO] [stderr] 78 | | [INFO] [stderr] 79 | | for i in 1..=40 { [INFO] [stderr] ... | [INFO] [stderr] 92 | | vec![value1, value2, value3] [INFO] [stderr] 93 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `e` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:44:13 [INFO] [stderr] | [INFO] [stderr] 44 | Err(e) => String::from(""), [INFO] [stderr] | ^ help: consider using `_e` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `length` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:57:9 [INFO] [stderr] | [INFO] [stderr] 57 | let length = data_as_bytes.len(); [INFO] [stderr] | ^^^^^^ help: consider using `_length` instead [INFO] [stderr] [INFO] [stderr] warning: unused variable: `error` [INFO] [stderr] --> src/challenge_set_1/single_byte_xor_cipher.rs:78:21 [INFO] [stderr] | [INFO] [stderr] 78 | Err(error) => String::from(""), [INFO] [stderr] | ^^^^^ help: consider using `_error` instead [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | let value1 = key_map.get(keys[0]).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&key_map[keys[0]]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:90:18 [INFO] [stderr] | [INFO] [stderr] 90 | let value2 = key_map.get(keys[1]).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&key_map[keys[1]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | let value3 = key_map.get(keys[2]).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&key_map[keys[2]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: function `normalized_KEYSIZE` should have a snake case name such as `normalized_keysize` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:96:1 [INFO] [stderr] | [INFO] [stderr] 96 | / fn normalized_KEYSIZE(key_guess: u8) -> f64 { [INFO] [stderr] 97 | | let mut f = File::open("1_challenge_6.txt").unwrap(); [INFO] [stderr] 98 | | [INFO] [stderr] 99 | | let mut contents = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 114 | | final_distance / pairs as f64 [INFO] [stderr] 115 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:106:30 [INFO] [stderr] | [INFO] [stderr] 106 | let mut final_distance = 0 as f64; [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:109:24 [INFO] [stderr] | [INFO] [stderr] 109 | let distance = (edit_distance(a, b) / key_guess) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(edit_distance(a, b) / key_guess)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:114:22 [INFO] [stderr] | [INFO] [stderr] 114 | final_distance / pairs as f64 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(pairs)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | / write_buffer [INFO] [stderr] 28 | | .take_read_buffer() [INFO] [stderr] 29 | | .take_remaining() [INFO] [stderr] 30 | | .iter() [INFO] [stderr] 31 | | .map(|&i| i), [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] 27 | write_buffer [INFO] [stderr] 28 | .take_read_buffer() [INFO] [stderr] 29 | .take_remaining() [INFO] [stderr] 30 | .iter().cloned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module `fixed_XOR` should have a snake case name such as `fixed_xor` [INFO] [stderr] --> src/challenge_set_1/mod.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | pub mod fixed_XOR; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `fixed_XOR` should have a snake case name such as `fixed_xor` [INFO] [stderr] --> src/challenge_set_1/fixed_XOR.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn fixed_XOR(data_1: &str, data_2: &str) -> String { [INFO] [stderr] 20 | | let one = hex::decode(data_1).unwrap(); [INFO] [stderr] 21 | | let two = hex::decode(data_2).unwrap(); [INFO] [stderr] 22 | | let xor = BytesXOR(one) ^ BytesXOR(two); [INFO] [stderr] 23 | | hex::encode(xor.0) [INFO] [stderr] 24 | | } [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/challenge_set_1/single_byte_xor_cipher.rs:6:34 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn rank_char_frequency(data: &Vec) -> i32 { [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: variable does not need to be mutable [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:48:13 [INFO] [stderr] | [INFO] [stderr] 48 | let mut f = File::open("1_challenge_7.txt").unwrap(); [INFO] [stderr] | ----^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(unused_mut)] on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:49:13 [INFO] [stderr] | [INFO] [stderr] 49 | let mut buf_reader = BufReader::new(f); [INFO] [stderr] | ----^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [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/challenge_set_1/break_repeating_key_xor.rs:22:37 [INFO] [stderr] | [INFO] [stderr] 22 | pub fn single_byte_xor_cipher(data: &Vec) -> u8 { [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: function `find_smallest_KEYSIZE` should have a snake case name such as `find_smallest_keysize` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:76:1 [INFO] [stderr] | [INFO] [stderr] 76 | / fn find_smallest_KEYSIZE() -> Vec { [INFO] [stderr] 77 | | let mut key_map: HashMap = HashMap::new(); [INFO] [stderr] 78 | | [INFO] [stderr] 79 | | for i in 1..=40 { [INFO] [stderr] ... | [INFO] [stderr] 92 | | vec![value1, value2, value3] [INFO] [stderr] 93 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(non_snake_case)] on by default [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:89:18 [INFO] [stderr] | [INFO] [stderr] 89 | let value1 = key_map.get(keys[0]).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&key_map[keys[0]]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::get_unwrap)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:90:18 [INFO] [stderr] | [INFO] [stderr] 90 | let value2 = key_map.get(keys[1]).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&key_map[keys[1]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: called `.get().unwrap()` on a HashMap. Using `[]` is more clear and more concise [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:91:18 [INFO] [stderr] | [INFO] [stderr] 91 | let value3 = key_map.get(keys[2]).unwrap().to_owned(); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try this: `&key_map[keys[2]]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap [INFO] [stderr] [INFO] [stderr] warning: function `normalized_KEYSIZE` should have a snake case name such as `normalized_keysize` [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:96:1 [INFO] [stderr] | [INFO] [stderr] 96 | / fn normalized_KEYSIZE(key_guess: u8) -> f64 { [INFO] [stderr] 97 | | let mut f = File::open("1_challenge_6.txt").unwrap(); [INFO] [stderr] 98 | | [INFO] [stderr] 99 | | let mut contents = String::new(); [INFO] [stderr] ... | [INFO] [stderr] 114 | | final_distance / pairs as f64 [INFO] [stderr] 115 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:106:30 [INFO] [stderr] | [INFO] [stderr] 106 | let mut final_distance = 0 as f64; [INFO] [stderr] | ^^^^^^^^ help: try: `f64::from(0)` [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 f64 may become silently lossy if types change [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:109:24 [INFO] [stderr] | [INFO] [stderr] 109 | let distance = (edit_distance(a, b) / key_guess) as f64; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `f64::from(edit_distance(a, b) / key_guess)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: casting i32 to f64 may become silently lossy if types change [INFO] [stderr] --> src/challenge_set_1/break_repeating_key_xor.rs:114:22 [INFO] [stderr] | [INFO] [stderr] 114 | final_distance / pairs as f64 [INFO] [stderr] | ^^^^^^^^^^^^ help: try: `f64::from(pairs)` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cast_lossless [INFO] [stderr] [INFO] [stderr] warning: You are using an explicit closure for cloning elements [INFO] [stderr] --> src/challenge_set_1/challenge_7.rs:27:13 [INFO] [stderr] | [INFO] [stderr] 27 | / write_buffer [INFO] [stderr] 28 | | .take_read_buffer() [INFO] [stderr] 29 | | .take_remaining() [INFO] [stderr] 30 | | .iter() [INFO] [stderr] 31 | | .map(|&i| i), [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] 27 | write_buffer [INFO] [stderr] 28 | .take_read_buffer() [INFO] [stderr] 29 | .take_remaining() [INFO] [stderr] 30 | .iter().cloned(), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module `fixed_XOR` should have a snake case name such as `fixed_xor` [INFO] [stderr] --> src/challenge_set_1/mod.rs:7:1 [INFO] [stderr] | [INFO] [stderr] 7 | pub mod fixed_XOR; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `fixed_XOR` should have a snake case name such as `fixed_xor` [INFO] [stderr] --> src/challenge_set_1/fixed_XOR.rs:19:1 [INFO] [stderr] | [INFO] [stderr] 19 | / pub fn fixed_XOR(data_1: &str, data_2: &str) -> String { [INFO] [stderr] 20 | | let one = hex::decode(data_1).unwrap(); [INFO] [stderr] 21 | | let two = hex::decode(data_2).unwrap(); [INFO] [stderr] 22 | | let xor = BytesXOR(one) ^ BytesXOR(two); [INFO] [stderr] 23 | | hex::encode(xor.0) [INFO] [stderr] 24 | | } [INFO] [stderr] | |_^ [INFO] [stderr] [INFO] [stderr] warning: function `test_fixed_XOR` should have a snake case name such as `test_fixed_xor` [INFO] [stderr] --> src/challenge_set_1/fixed_XOR.rs:31:5 [INFO] [stderr] | [INFO] [stderr] 31 | / fn test_fixed_XOR() { [INFO] [stderr] 32 | | let data_1 = "1c0111001f010100061a024b53535009181c"; [INFO] [stderr] 33 | | let data_2 = "686974207468652062756c6c277320657965"; [INFO] [stderr] 34 | | assert_eq!( [INFO] [stderr] ... | [INFO] [stderr] 37 | | ); [INFO] [stderr] 38 | | } [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/challenge_set_1/single_byte_xor_cipher.rs:6:34 [INFO] [stderr] | [INFO] [stderr] 6 | pub fn rank_char_frequency(data: &Vec) -> i32 { [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] Finished dev [unoptimized + debuginfo] target(s) in 1.64s [INFO] running `"docker" "inspect" "41a51a327ab5be72e59ad9c41b7ab6abe8a1733fbae94b33bbb8710a06a3e372"` [INFO] running `"docker" "rm" "-f" "41a51a327ab5be72e59ad9c41b7ab6abe8a1733fbae94b33bbb8710a06a3e372"` [INFO] [stdout] 41a51a327ab5be72e59ad9c41b7ab6abe8a1733fbae94b33bbb8710a06a3e372