[INFO] cloning repository https://github.com/p3nal/cryptopalsrs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/p3nal/cryptopalsrs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fp3nal%2Fcryptopalsrs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fp3nal%2Fcryptopalsrs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d7cd35861c97c63fc2c8989462d1e3b5e5b4e867
[INFO] checking p3nal/cryptopalsrs against 1.95.0 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fp3nal%2Fcryptopalsrs" "/workspace/builds/worker-1-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-1-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/p3nal/cryptopalsrs
[INFO] finished tweaking git repo https://github.com/p3nal/cryptopalsrs
[INFO] tweaked toml for git repo https://github.com/p3nal/cryptopalsrs written to /workspace/builds/worker-1-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/p3nal/cryptopalsrs on toolchain 1.95.0
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/p3nal/cryptopalsrs already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.95.0" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2bc0daf3ef8d98619b28de91b9fa3c863f27b50bb8b44747c068e4dd14a84adc
[INFO] running `Command { std: "docker" "start" "-a" "2bc0daf3ef8d98619b28de91b9fa3c863f27b50bb8b44747c068e4dd14a84adc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2bc0daf3ef8d98619b28de91b9fa3c863f27b50bb8b44747c068e4dd14a84adc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2bc0daf3ef8d98619b28de91b9fa3c863f27b50bb8b44747c068e4dd14a84adc", kill_on_drop: false }`
[INFO] [stdout] 2bc0daf3ef8d98619b28de91b9fa3c863f27b50bb8b44747c068e4dd14a84adc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+1.95.0" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 18ecfc60f04d68d2742c1f5f49d02dd26d9c20b524c0230765c6a7c97cd41e6f
[INFO] running `Command { std: "docker" "start" "-a" "18ecfc60f04d68d2742c1f5f49d02dd26d9c20b524c0230765c6a7c97cd41e6f", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.139
[INFO] [stderr]    Compiling proc-macro2 v1.0.51
[INFO] [stderr]    Compiling pkg-config v0.3.26
[INFO] [stderr]    Compiling quote v1.0.23
[INFO] [stderr]    Compiling cc v1.0.79
[INFO] [stderr]    Compiling syn v1.0.107
[INFO] [stderr]    Compiling openssl v0.10.45
[INFO] [stderr]     Checking once_cell v1.17.0
[INFO] [stderr]     Checking inout v0.1.3
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking cipher v0.4.3
[INFO] [stderr]     Checking aes v0.8.2
[INFO] [stderr]    Compiling openssl-sys v0.9.80
[INFO] [stderr]     Checking getrandom v0.2.8
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling openssl-macros v0.1.0
[INFO] [stderr]     Checking cryptopalsrs v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/s1/s1ch7.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/s3/s3ch18.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/s3/s3ch19.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockEncrypt` and `generic_array::GenericArray`
[INFO] [stdout]  --> src/s3/s3ch19.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | use aes::cipher::{generic_array::GenericArray, BlockEncrypt, KeyInit};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `aes::Aes128`
[INFO] [stdout]  --> src/s3/s3ch19.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use aes::Aes128;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/s3/s3ch24.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `s1ch8::detects_aes_in_ecb`, `s2ch10::xor`, and `s2ch11::generate_random_bytes`
[INFO] [stdout]   --> src/main.rs:9:10
[INFO] [stdout]    |
[INFO] [stdout]  9 |     s2::{s2ch10::xor, s2ch11::generate_random_bytes},
[INFO] [stdout]    |          ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     s3::s3ch18::aes_ctr_crypt,
[INFO] [stdout] 11 |     s4::s4ch25::edit, s1::{s1ch8::detects_aes_in_ecb, s1ch6::read_b64_file_contents, s1ch7::decrypt_aes_in_ecb},
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/s1/s1ch7.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/s3/s3ch18.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Read`
[INFO] [stdout]  --> src/s3/s3ch19.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::io::Read;
[INFO] [stdout]   |     ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `BlockEncrypt` and `generic_array::GenericArray`
[INFO] [stdout]  --> src/s3/s3ch19.rs:3:19
[INFO] [stdout]   |
[INFO] [stdout] 3 | use aes::cipher::{generic_array::GenericArray, BlockEncrypt, KeyInit};
[INFO] [stdout]   |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `aes::Aes128`
[INFO] [stdout]  --> src/s3/s3ch19.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use aes::Aes128;
[INFO] [stdout]   |     ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Duration`
[INFO] [stdout]  --> src/s3/s3ch24.rs:2:17
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::time::{Duration, SystemTime, UNIX_EPOCH};
[INFO] [stdout]   |                 ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hex`
[INFO] [stdout]  --> src/main.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use hex;
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::path::Path`
[INFO] [stdout]  --> src/main.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::path::Path;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `s1ch8::detects_aes_in_ecb`, `s2ch10::xor`, and `s2ch11::generate_random_bytes`
[INFO] [stdout]   --> src/main.rs:9:10
[INFO] [stdout]    |
[INFO] [stdout]  9 |     s2::{s2ch10::xor, s2ch11::generate_random_bytes},
[INFO] [stdout]    |          ^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     s3::s3ch18::aes_ctr_crypt,
[INFO] [stdout] 11 |     s4::s4ch25::edit, s1::{s1ch8::detects_aes_in_ecb, s1ch6::read_b64_file_contents, s1ch7::decrypt_aes_in_ecb},
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/s1/s1ch1.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     base64::encode(hex::decode(hex).unwrap())
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/s1/s1ch6.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     base64::decode(read_to_string(path.as_ref()).unwrap().replace("\n", "")).unwrap()
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/s2/s2ch12.rs:15:36
[INFO] [stdout]    |
[INFO] [stdout] 15 |             random_string: base64::decode(random_string).unwrap().to_vec(),
[INFO] [stdout]    |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/s2/s2ch14.rs:18:45
[INFO] [stdout]    |
[INFO] [stdout] 18 |             random_appended_string: base64::decode(random_appended_string).unwrap().to_vec(),
[INFO] [stdout]    |                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/s3/s3ch17.rs:30:38
[INFO] [stdout]    |
[INFO] [stdout] 30 |             selected_string: base64::decode(list[rand::thread_rng().gen_range(0..list.len())]).unwrap(),
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/s3/s3ch19.rs:114:33
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let plaintext = base64::decode(list_of_strings[i]).unwrap();
[INFO] [stdout]     |                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/s1/s1ch1.rs:7:13
[INFO] [stdout]   |
[INFO] [stdout] 7 |     base64::encode(hex::decode(hex).unwrap())
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/s1/s1ch6.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |     base64::decode(read_to_string(path.as_ref()).unwrap().replace("\n", "")).unwrap()
[INFO] [stdout]   |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/s2/s2ch12.rs:15:36
[INFO] [stdout]    |
[INFO] [stdout] 15 |             random_string: base64::decode(random_string).unwrap().to_vec(),
[INFO] [stdout]    |                                    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/s2/s2ch14.rs:18:45
[INFO] [stdout]    |
[INFO] [stdout] 18 |             random_appended_string: base64::decode(random_appended_string).unwrap().to_vec(),
[INFO] [stdout]    |                                             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]   --> src/s3/s3ch17.rs:30:38
[INFO] [stdout]    |
[INFO] [stdout] 30 |             selected_string: base64::decode(list[rand::thread_rng().gen_range(0..list.len())]).unwrap(),
[INFO] [stdout]    |                                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/s3/s3ch19.rs:114:33
[INFO] [stdout]     |
[INFO] [stdout] 114 |         let plaintext = base64::decode(list_of_strings[i]).unwrap();
[INFO] [stdout]     |                                 ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyInit`
[INFO] [stdout]  --> src/s3/s3ch19.rs:3:62
[INFO] [stdout]   |
[INFO] [stdout] 3 | use aes::cipher::{generic_array::GenericArray, BlockEncrypt, KeyInit};
[INFO] [stdout]   |                                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_normalized_hamming_distance`
[INFO] [stdout]   --> src/s1/s1ch6.rs:57:32
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let (probably_the_keysize, min_normalized_hamming_distance) = keysize_array.iter().min_by(|x, y| x.1.partial_cmp(&y.1).unwrap())...
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_normalized_hamming_distance`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `KeyInit`
[INFO] [stdout]  --> src/s3/s3ch19.rs:3:62
[INFO] [stdout]   |
[INFO] [stdout] 3 | use aes::cipher::{generic_array::GenericArray, BlockEncrypt, KeyInit};
[INFO] [stdout]   |                                                              ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `min_normalized_hamming_distance`
[INFO] [stdout]   --> src/s1/s1ch6.rs:57:32
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let (probably_the_keysize, min_normalized_hamming_distance) = keysize_array.iter().min_by(|x, y| x.1.partial_cmp(&y.1).unwrap())...
[INFO] [stdout]    |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_min_normalized_hamming_distance`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prepended_text_size`
[INFO] [stdout]    --> src/s2/s2ch14.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let prepended_text_size = number_of_prepended_blocks * block_size
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prepended_text_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list_of_strings`
[INFO] [stdout]  --> src/s3/s3ch19.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let list_of_strings = "SSBoYXZlIG1ldCB0aGVtIGF0IGNsb3NlIG9mIGRheQ==
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_strings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `prepended_text_size`
[INFO] [stdout]    --> src/s2/s2ch14.rs:129:9
[INFO] [stdout]     |
[INFO] [stdout] 129 |     let prepended_text_size = number_of_prepended_blocks * block_size
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_prepended_text_size`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line`
[INFO] [stdout]  --> src/s3/s3ch20.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     for line in reader.lines() {
[INFO] [stdout]   |         ^^^^ help: if this is intentional, prefix it with an underscore: `_line`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]   --> src/s3/s3ch20.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn break_fixed_nonce_ctr(path: &Path) {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `list_of_strings`
[INFO] [stdout]  --> src/s3/s3ch19.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     let list_of_strings = "SSBoYXZlIG1ldCB0aGVtIGF0IGNsb3NlIG9mIGRheQ==
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_list_of_strings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/s3/s3ch24.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     for i in (0..time).rev() {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `line`
[INFO] [stdout]  --> src/s3/s3ch20.rs:8:9
[INFO] [stdout]   |
[INFO] [stdout] 8 |     for line in reader.lines() {
[INFO] [stdout]   |         ^^^^ help: if this is intentional, prefix it with an underscore: `_line`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `path`
[INFO] [stdout]   --> src/s3/s3ch20.rs:12:30
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn break_fixed_nonce_ctr(path: &Path) {
[INFO] [stdout]    |                              ^^^^ help: if this is intentional, prefix it with an underscore: `_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_hex_to_base64` is never used
[INFO] [stdout]  --> src/s1/s1ch1.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn convert_hex_to_base64(hex: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixed_or` is never used
[INFO] [stdout]  --> src/s1/s1ch2.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn fixed_or(buf1: &str, buf2: &str) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score` is never used
[INFO] [stdout]   --> src/s1/s1ch3.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn score(text: &str) -> f64 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `single_byte_xor_cypher` is never used
[INFO] [stdout]   --> src/s1/s1ch3.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn single_byte_xor_cypher<T: AsRef<[u8]>>(cypher: T) -> (String, f64, usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_single_character_xor` is never used
[INFO] [stdout]  --> src/s1/s1ch4.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn detect_single_character_xor(path: &Path) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repeating_key_xor` is never used
[INFO] [stdout]  --> src/s1/s1ch5.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn repeating_key_xor<T: AsRef<[u8]>>(message: T, key: T) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_hex_file_contents` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn read_hex_file_contents(path: &Path) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hamming_distance` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:15:4
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn hamming_distance(bytes1: &[u8], bytes2: &[u8]) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_average_hamming_distance` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn calc_average_hamming_distance(keysize: &usize, contents: &Vec<u8>) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_keysize` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn find_keysize(contents: &Vec<u8>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_repeating_key_xor` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn break_repeating_key_xor(path: &Path) -> (String, String) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_aes_in_ecb` is never used
[INFO] [stdout]   --> src/s1/s1ch7.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn encrypt_aes_in_ecb<T: AsRef<[u8]>>(plaintext: T, key: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_similar_blocks` is never used
[INFO] [stdout]  --> src/s1/s1ch8.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn count_similar_blocks<T: AsRef<[u8]>>(line: T, block_size: usize) -> usize {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detects_aes_in_ecb` is never used
[INFO] [stdout]   --> src/s1/s1ch8.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn detects_aes_in_ecb(path: impl AsRef<Path>) -> (String, usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pkcs_7_padding` is never used
[INFO] [stdout]  --> src/s2/s2ch9.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn pkcs_7_padding<T: AsRef<[u8]>>(text: T, block_length: usize) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xor` is never used
[INFO] [stdout]  --> src/s2/s2ch10.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn xor<T: AsRef<[u8]>>(b1: T, b2: T) -> Vec<u8> {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_cbc_encrypt` is never used
[INFO] [stdout]   --> src/s2/s2ch10.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn aes_cbc_encrypt<T: AsRef<[u8]>>(plaintext: T, key: T, iv: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_cbc_decrypt` is never used
[INFO] [stdout]   --> src/s2/s2ch10.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn aes_cbc_decrypt<T: AsRef<[u8]>>(ciphertext: T, key: T, iv: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_random_bytes` is never used
[INFO] [stdout]  --> src/s2/s2ch11.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn generate_random_bytes(length: usize) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encryption_oracle` is never used
[INFO] [stdout]   --> src/s2/s2ch11.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn encryption_oracle<T: AsRef<[u8]>>(text: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mode` is never used
[INFO] [stdout]   --> src/s2/s2ch11.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum Mode {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ebc_cbc_detection_oracle` is never used
[INFO] [stdout]   --> src/s2/s2ch11.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn ebc_cbc_detection_oracle<T: AsRef<[u8]>>(ciphertext: T, block_size: usize) -> Mode {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Oracle` is never constructed
[INFO] [stdout]  --> src/s2/s2ch12.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Oracle {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `encryption_oracle` are never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Oracle {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     /// constructs new Oracle struct, takes in random key length and the random_string in base64
[INFO] [stdout] 13 |     pub fn new(length: usize, random_string: &str) -> Oracle {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn encryption_oracle<T: AsRef<[u8]>>(&self, text: T) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `discover_block_size` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn discover_block_size(oracle: &Oracle) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_mode_operation` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn detect_mode_operation(oracle: &Oracle, block_size: usize) -> crate::s2::s2ch11::Mode {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_a_block` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn crack_a_block(oracle: &Oracle, block_size: usize) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn demo() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cipher` is never constructed
[INFO] [stdout]  --> src/s2/s2ch13.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Cipher {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encrypt`, and `decrypt` are never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:6:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl Cipher {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout]  6 |     pub fn new() -> Cipher {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub fn encrypt(&self, plaintext: &str) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn decrypt(&self, plaintext: Vec<u8>) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `profile_for` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn profile_for(email: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `kv_parsing_routine` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn kv_parsing_routine(input: &str) -> Vec<(&str, &str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_admin` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn check_admin(vec: Vec<(&str, &str)>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `client` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn client(cipher: &Cipher, email: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `server` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn server(cipher: &Cipher, ciphertext: Vec<u8>) -> bool {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_s2ch13` is never used
[INFO] [stdout]  --> src/s2/s2ch13_break.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn break_s2ch13() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Oracle` is never constructed
[INFO] [stdout]  --> src/s2/s2ch14.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Oracle {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `encryption_oracle` are never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Oracle {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     /// constructs new Oracle struct, takes in random key length and the random_appended_string in base64
[INFO] [stdout] 13 |     pub fn new(length: usize, random_appended_string: &str) -> Oracle {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn encryption_oracle<T: AsRef<[u8]>>(&self, text: T) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `number_of_prepended_blocks` is never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn number_of_prepended_blocks(oracle: &Oracle, block_size: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `till_block` is never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn till_block(oracle: &Oracle, number_of_prepended_blocks: usize, block_size: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_a_block` is never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn crack_a_block(oracle: &Oracle, block_size: usize) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo` is never used
[INFO] [stdout]    --> src/s2/s2ch14.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn demo() {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_padding` is never used
[INFO] [stdout]  --> src/s2/s2ch15.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn validate_padding<T: AsRef<[u8]>>(input: T) -> Result<String, String> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cipher` is never constructed
[INFO] [stdout]  --> src/s2/s2ch16.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Cipher {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encrypt`, and `decrypt` are never used
[INFO] [stdout]   --> src/s2/s2ch16.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Cipher {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout]  8 |     pub fn new() -> Cipher {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     fn encrypt(&self, plaintext: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn decrypt(&self, ciphertext: Vec<u8>) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_function` is never used
[INFO] [stdout]   --> src/s2/s2ch16.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn first_function(cipher: &Cipher, input_str: String) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `second_function` is never used
[INFO] [stdout]   --> src/s2/s2ch16.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn second_function(cipher: &Cipher, ciphertext: Vec<u8>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_s2ch16` is never used
[INFO] [stdout]  --> src/s2/s2ch16_break.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn break_s2ch16() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cipher` is never constructed
[INFO] [stdout]  --> src/s3/s3ch17.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Cipher {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `i`
[INFO] [stdout]   --> src/s3/s3ch24.rs:61:9
[INFO] [stdout]    |
[INFO] [stdout] 61 |     for i in (0..time).rev() {
[INFO] [stdout]    |         ^ help: if this is intentional, prefix it with an underscore: `_i`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/s3/s3ch17.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Cipher {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Cipher {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_function` is never used
[INFO] [stdout]   --> src/s3/s3ch17.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn first_function(cipher: &Cipher) -> (Vec<u8>, &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `second_function` is never used
[INFO] [stdout]   --> src/s3/s3ch17.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn second_function<T: AsRef<[u8]>>(cipher: &Cipher, ciphertext: T) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_s3ch17` is never used
[INFO] [stdout]  --> src/s3/s3ch17_break.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn break_s3ch17() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_encrypted_stuff` is never used
[INFO] [stdout]  --> src/s3/s3ch19.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn get_encrypted_stuff() -> Vec<Vec<u8>> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_repeating_key_xor` is never used
[INFO] [stdout]    --> src/s3/s3ch19.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn break_repeating_key_xor(ciphertext: Vec<u8>, keysize: usize) -> (String, Vec<u8>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_me` is never used
[INFO] [stdout]    --> src/s3/s3ch19.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn crack_me() {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_encrypted_stuff` is never used
[INFO] [stdout]  --> src/s3/s3ch20.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn get_encrypted_stuff(path: &Path) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_fixed_nonce_ctr` is never used
[INFO] [stdout]   --> src/s3/s3ch20.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn break_fixed_nonce_ctr(path: &Path) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/s3/s3ch21.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Constants {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     m: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 20 |     r: u32,
[INFO] [stdout] 21 |     a: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 22 |     b: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 23 |     c: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 24 |     s: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 25 |     t: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 26 |     u: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 27 |     // d: u32,
[INFO] [stdout] 28 |     l: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `constants`, `mt`, `index`, `lower_mask`, and `upper_mask` are never read
[INFO] [stdout]   --> src/s3/s3ch21.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct MT19937 {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 33 |     constants: Constants,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 34 |     pub mt: Vec<u32>,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 35 |     index: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 36 |     lower_mask: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 37 |     upper_mask: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `twist` and `extract_number` are never used
[INFO] [stdout]   --> src/s3/s3ch21.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl MT19937 {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn twist(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn extract_number(&mut self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `go_get_coffee_while_this_runs` is never used
[INFO] [stdout]   --> src/s3/s3ch22.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn go_get_coffee_while_this_runs() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_mt19937_seed` is never used
[INFO] [stdout]   --> src/s3/s3ch22.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn crack_mt19937_seed(rng: u32) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ShiftDirection` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum ShiftDirection {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RevShift` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub trait RevShift {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clone_mt19937` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn clone_mt19937(outputs: Vec<u32>) -> Vec<u32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `splice_mt19937` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn splice_mt19937() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mt19937_stream_cipher` is never used
[INFO] [stdout]  --> src/s3/s3ch24.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn mt19937_stream_cipher<T: AsRef<[u8]>>(key: u16, input_text: T) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bruteforce_mt19937_key` is never used
[INFO] [stdout]   --> src/s3/s3ch24.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn bruteforce_mt19937_key<T: AsRef<[u8]>>(ciphertext: &T, known_keystream: T) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_reset_token` is never used
[INFO] [stdout]   --> src/s3/s3ch24.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn password_reset_token() -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_password_token_mt19937_gen` is never used
[INFO] [stdout]   --> src/s3/s3ch24.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn check_password_token_mt19937_gen<T: AsRef<[u8]>>(token: &T) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]  --> src/s2/s2ch9.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 |     let mut text = text.as_ref().clone().to_vec();
[INFO] [stdout]   |                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]   |
[INFO] [stdout]   = note: the type `[u8]` does not implement `Clone`, so calling `clone` on `&[u8]` copies the reference, which does not do anything and can be removed
[INFO] [stdout]   = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `convert_hex_to_base64` is never used
[INFO] [stdout]  --> src/s1/s1ch1.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn convert_hex_to_base64(hex: &str) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fixed_or` is never used
[INFO] [stdout]  --> src/s1/s1ch2.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn fixed_or(buf1: &str, buf2: &str) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `score` is never used
[INFO] [stdout]   --> src/s1/s1ch3.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn score(text: &str) -> f64 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `single_byte_xor_cypher` is never used
[INFO] [stdout]   --> src/s1/s1ch3.rs:41:8
[INFO] [stdout]    |
[INFO] [stdout] 41 | pub fn single_byte_xor_cypher<T: AsRef<[u8]>>(cypher: T) -> (String, f64, usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_single_character_xor` is never used
[INFO] [stdout]  --> src/s1/s1ch4.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn detect_single_character_xor(path: &Path) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `repeating_key_xor` is never used
[INFO] [stdout]  --> src/s1/s1ch5.rs:3:8
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub fn repeating_key_xor<T: AsRef<[u8]>>(message: T, key: T) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `read_hex_file_contents` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn read_hex_file_contents(path: &Path) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hamming_distance` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:15:4
[INFO] [stdout]    |
[INFO] [stdout] 15 | fn hamming_distance(bytes1: &[u8], bytes2: &[u8]) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `calc_average_hamming_distance` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:35:4
[INFO] [stdout]    |
[INFO] [stdout] 35 | fn calc_average_hamming_distance(keysize: &usize, contents: &Vec<u8>) -> f64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_keysize` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:51:4
[INFO] [stdout]    |
[INFO] [stdout] 51 | fn find_keysize(contents: &Vec<u8>) -> usize {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_repeating_key_xor` is never used
[INFO] [stdout]   --> src/s1/s1ch6.rs:61:8
[INFO] [stdout]    |
[INFO] [stdout] 61 | pub fn break_repeating_key_xor(path: &Path) -> (String, String) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_aes_in_ecb` is never used
[INFO] [stdout]   --> src/s1/s1ch7.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn encrypt_aes_in_ecb<T: AsRef<[u8]>>(plaintext: T, key: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_similar_blocks` is never used
[INFO] [stdout]  --> src/s1/s1ch8.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn count_similar_blocks<T: AsRef<[u8]>>(line: T, block_size: usize) -> usize {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detects_aes_in_ecb` is never used
[INFO] [stdout]   --> src/s1/s1ch8.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn detects_aes_in_ecb(path: impl AsRef<Path>) -> (String, usize) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `pkcs_7_padding` is never used
[INFO] [stdout]  --> src/s2/s2ch9.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn pkcs_7_padding<T: AsRef<[u8]>>(text: T, block_length: usize) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `xor` is never used
[INFO] [stdout]  --> src/s2/s2ch10.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn xor<T: AsRef<[u8]>>(b1: T, b2: T) -> Vec<u8> {
[INFO] [stdout]   |        ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_cbc_encrypt` is never used
[INFO] [stdout]   --> src/s2/s2ch10.rs:17:8
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub fn aes_cbc_encrypt<T: AsRef<[u8]>>(plaintext: T, key: T, iv: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `aes_cbc_decrypt` is never used
[INFO] [stdout]   --> src/s2/s2ch10.rs:33:8
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub fn aes_cbc_decrypt<T: AsRef<[u8]>>(ciphertext: T, key: T, iv: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `generate_random_bytes` is never used
[INFO] [stdout]  --> src/s2/s2ch11.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn generate_random_bytes(length: usize) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encryption_oracle` is never used
[INFO] [stdout]   --> src/s2/s2ch11.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn encryption_oracle<T: AsRef<[u8]>>(text: T) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Mode` is never used
[INFO] [stdout]   --> src/s2/s2ch11.rs:39:10
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub enum Mode {
[INFO] [stdout]    |          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ebc_cbc_detection_oracle` is never used
[INFO] [stdout]   --> src/s2/s2ch11.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn ebc_cbc_detection_oracle<T: AsRef<[u8]>>(ciphertext: T, block_size: usize) -> Mode {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Oracle` is never constructed
[INFO] [stdout]  --> src/s2/s2ch12.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct Oracle {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `encryption_oracle` are never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Oracle {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     /// constructs new Oracle struct, takes in random key length and the random_string in base64
[INFO] [stdout] 13 |     pub fn new(length: usize, random_string: &str) -> Oracle {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn encryption_oracle<T: AsRef<[u8]>>(&self, text: T) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `discover_block_size` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:30:8
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub fn discover_block_size(oracle: &Oracle) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `detect_mode_operation` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:49:8
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub fn detect_mode_operation(oracle: &Oracle, block_size: usize) -> crate::s2::s2ch11::Mode {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_a_block` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:54:8
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub fn crack_a_block(oracle: &Oracle, block_size: usize) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo` is never used
[INFO] [stdout]   --> src/s2/s2ch12.rs:82:8
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub fn demo() {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cipher` is never constructed
[INFO] [stdout]  --> src/s2/s2ch13.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Cipher {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encrypt`, and `decrypt` are never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:6:12
[INFO] [stdout]    |
[INFO] [stdout]  5 | impl Cipher {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout]  6 |     pub fn new() -> Cipher {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 12 |     pub fn encrypt(&self, plaintext: &str) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub fn decrypt(&self, plaintext: Vec<u8>) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `profile_for` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn profile_for(email: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `kv_parsing_routine` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:27:8
[INFO] [stdout]    |
[INFO] [stdout] 27 | pub fn kv_parsing_routine(input: &str) -> Vec<(&str, &str)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_admin` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:36:8
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub fn check_admin(vec: Vec<(&str, &str)>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `client` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:44:8
[INFO] [stdout]    |
[INFO] [stdout] 44 | pub fn client(cipher: &Cipher, email: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `server` is never used
[INFO] [stdout]   --> src/s2/s2ch13.rs:48:8
[INFO] [stdout]    |
[INFO] [stdout] 48 | pub fn server(cipher: &Cipher, ciphertext: Vec<u8>) -> bool {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_s2ch13` is never used
[INFO] [stdout]  --> src/s2/s2ch13_break.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn break_s2ch13() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Oracle` is never constructed
[INFO] [stdout]  --> src/s2/s2ch14.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Oracle {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `encryption_oracle` are never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 11 | impl Oracle {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 12 |     /// constructs new Oracle struct, takes in random key length and the random_appended_string in base64
[INFO] [stdout] 13 |     pub fn new(length: usize, random_appended_string: &str) -> Oracle {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn encryption_oracle<T: AsRef<[u8]>>(&self, text: T) -> Vec<u8> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `number_of_prepended_blocks` is never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:52:8
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub fn number_of_prepended_blocks(oracle: &Oracle, block_size: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `till_block` is never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:64:8
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub fn till_block(oracle: &Oracle, number_of_prepended_blocks: usize, block_size: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_a_block` is never used
[INFO] [stdout]   --> src/s2/s2ch14.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn crack_a_block(oracle: &Oracle, block_size: usize) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `demo` is never used
[INFO] [stdout]    --> src/s2/s2ch14.rs:124:8
[INFO] [stdout]     |
[INFO] [stdout] 124 | pub fn demo() {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_padding` is never used
[INFO] [stdout]  --> src/s2/s2ch15.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn validate_padding<T: AsRef<[u8]>>(input: T) -> Result<String, String> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cipher` is never constructed
[INFO] [stdout]  --> src/s2/s2ch16.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub struct Cipher {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `encrypt`, and `decrypt` are never used
[INFO] [stdout]   --> src/s2/s2ch16.rs:8:12
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl Cipher {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout]  8 |     pub fn new() -> Cipher {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 14 |     fn encrypt(&self, plaintext: &str) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     fn decrypt(&self, ciphertext: Vec<u8>) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_function` is never used
[INFO] [stdout]   --> src/s2/s2ch16.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn first_function(cipher: &Cipher, input_str: String) -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `second_function` is never used
[INFO] [stdout]   --> src/s2/s2ch16.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn second_function(cipher: &Cipher, ciphertext: Vec<u8>) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_s2ch16` is never used
[INFO] [stdout]  --> src/s2/s2ch16_break.rs:6:8
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub fn break_s2ch16() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cipher` is never constructed
[INFO] [stdout]  --> src/s3/s3ch17.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Cipher {
[INFO] [stdout]   |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/s3/s3ch17.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl Cipher {
[INFO] [stdout]    | ----------- associated function in this implementation
[INFO] [stdout] 15 |     pub fn new() -> Cipher {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `first_function` is never used
[INFO] [stdout]   --> src/s3/s3ch17.rs:38:8
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub fn first_function(cipher: &Cipher) -> (Vec<u8>, &Vec<u8>) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `second_function` is never used
[INFO] [stdout]   --> src/s3/s3ch17.rs:50:8
[INFO] [stdout]    |
[INFO] [stdout] 50 | pub fn second_function<T: AsRef<[u8]>>(cipher: &Cipher, ciphertext: T) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_s3ch17` is never used
[INFO] [stdout]  --> src/s3/s3ch17_break.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn break_s3ch17() {
[INFO] [stdout]   |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_encrypted_stuff` is never used
[INFO] [stdout]  --> src/s3/s3ch19.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn get_encrypted_stuff() -> Vec<Vec<u8>> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_repeating_key_xor` is never used
[INFO] [stdout]    --> src/s3/s3ch19.rs:126:8
[INFO] [stdout]     |
[INFO] [stdout] 126 | pub fn break_repeating_key_xor(ciphertext: Vec<u8>, keysize: usize) -> (String, Vec<u8>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_me` is never used
[INFO] [stdout]    --> src/s3/s3ch19.rs:148:8
[INFO] [stdout]     |
[INFO] [stdout] 148 | pub fn crack_me() {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_encrypted_stuff` is never used
[INFO] [stdout]  --> src/s3/s3ch20.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn get_encrypted_stuff(path: &Path) {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_fixed_nonce_ctr` is never used
[INFO] [stdout]   --> src/s3/s3ch20.rs:12:8
[INFO] [stdout]    |
[INFO] [stdout] 12 | pub fn break_fixed_nonce_ctr(path: &Path) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple fields are never read
[INFO] [stdout]   --> src/s3/s3ch21.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct Constants {
[INFO] [stdout]    |            --------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 19 |     m: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 20 |     r: u32,
[INFO] [stdout] 21 |     a: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 22 |     b: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 23 |     c: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 24 |     s: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 25 |     t: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 26 |     u: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 27 |     // d: u32,
[INFO] [stdout] 28 |     l: u32,
[INFO] [stdout]    |     ^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `constants`, `mt`, `index`, `lower_mask`, and `upper_mask` are never read
[INFO] [stdout]   --> src/s3/s3ch21.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | pub struct MT19937 {
[INFO] [stdout]    |            ------- fields in this struct
[INFO] [stdout] 33 |     constants: Constants,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 34 |     pub mt: Vec<u32>,
[INFO] [stdout]    |         ^^
[INFO] [stdout] 35 |     index: u32,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 36 |     lower_mask: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 37 |     upper_mask: u32,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `twist` and `extract_number` are never used
[INFO] [stdout]   --> src/s3/s3ch21.rs:80:8
[INFO] [stdout]    |
[INFO] [stdout] 40 | impl MT19937 {
[INFO] [stdout]    | ------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 80 |     fn twist(&mut self) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 95 |     pub fn extract_number(&mut self) -> u32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `go_get_coffee_while_this_runs` is never used
[INFO] [stdout]   --> src/s3/s3ch22.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn go_get_coffee_while_this_runs() -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `crack_mt19937_seed` is never used
[INFO] [stdout]   --> src/s3/s3ch22.rs:28:8
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub fn crack_mt19937_seed(rng: u32) -> u32 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ShiftDirection` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:23:10
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub enum ShiftDirection {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `RevShift` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:28:11
[INFO] [stdout]    |
[INFO] [stdout] 28 | pub trait RevShift {
[INFO] [stdout]    |           ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clone_mt19937` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:60:8
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub fn clone_mt19937(outputs: Vec<u32>) -> Vec<u32> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `splice_mt19937` is never used
[INFO] [stdout]   --> src/s3/s3ch23.rs:81:8
[INFO] [stdout]    |
[INFO] [stdout] 81 | pub fn splice_mt19937() {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `mt19937_stream_cipher` is never used
[INFO] [stdout]  --> src/s3/s3ch24.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn mt19937_stream_cipher<T: AsRef<[u8]>>(key: u16, input_text: T) -> Vec<u8> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `bruteforce_mt19937_key` is never used
[INFO] [stdout]   --> src/s3/s3ch24.rs:22:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub fn bruteforce_mt19937_key<T: AsRef<[u8]>>(ciphertext: &T, known_keystream: T) -> u16 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `password_reset_token` is never used
[INFO] [stdout]   --> src/s3/s3ch24.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn password_reset_token() -> Vec<u8> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_password_token_mt19937_gen` is never used
[INFO] [stdout]   --> src/s3/s3ch24.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn check_password_token_mt19937_gen<T: AsRef<[u8]>>(token: &T) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: call to `.clone()` on a reference in this situation does nothing
[INFO] [stdout]  --> src/s2/s2ch9.rs:2:33
[INFO] [stdout]   |
[INFO] [stdout] 2 |     let mut text = text.as_ref().clone().to_vec();
[INFO] [stdout]   |                                 ^^^^^^^^ help: remove this redundant call
[INFO] [stdout]   |
[INFO] [stdout]   = note: the type `[u8]` does not implement `Clone`, so calling `clone` on `&[u8]` copies the reference, which does not do anything and can be removed
[INFO] [stdout]   = note: `#[warn(noop_method_call)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 9.33s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: openssl v0.10.45
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "18ecfc60f04d68d2742c1f5f49d02dd26d9c20b524c0230765c6a7c97cd41e6f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "18ecfc60f04d68d2742c1f5f49d02dd26d9c20b524c0230765c6a7c97cd41e6f", kill_on_drop: false }`
[INFO] [stdout] 18ecfc60f04d68d2742c1f5f49d02dd26d9c20b524c0230765c6a7c97cd41e6f
