[INFO] cloning repository https://github.com/terrarier2111/Algorithms
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/terrarier2111/Algorithms" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fterrarier2111%2FAlgorithms", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fterrarier2111%2FAlgorithms'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 90d8da743eb9cfc6b596564bffdff845af1bc98c
[INFO] checking terrarier2111/Algorithms against try#012cd62c9add58ab3910e44c137d87db3ab70f61 for pr-155915
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fterrarier2111%2FAlgorithms" "/workspace/builds/worker-7-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/terrarier2111/Algorithms
[INFO] finished tweaking git repo https://github.com/terrarier2111/Algorithms
[INFO] tweaked toml for git repo https://github.com/terrarier2111/Algorithms written to /workspace/builds/worker-7-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/terrarier2111/Algorithms on toolchain 012cd62c9add58ab3910e44c137d87db3ab70f61
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/terrarier2111/Algorithms 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" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 0793b35e3194dacb36cb81114c41e9fb0b13ddc6ff1c69ac3a522bc04ed1aef9
[INFO] running `Command { std: "docker" "start" "-a" "0793b35e3194dacb36cb81114c41e9fb0b13ddc6ff1c69ac3a522bc04ed1aef9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "0793b35e3194dacb36cb81114c41e9fb0b13ddc6ff1c69ac3a522bc04ed1aef9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "0793b35e3194dacb36cb81114c41e9fb0b13ddc6ff1c69ac3a522bc04ed1aef9", kill_on_drop: false }`
[INFO] [stdout] 0793b35e3194dacb36cb81114c41e9fb0b13ddc6ff1c69ac3a522bc04ed1aef9
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc2/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" "+012cd62c9add58ab3910e44c137d87db3ab70f61" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] d64807cab31a6a9265ee8eb217b185943ad8f1a77e98b5096f16b98bb52c3e63
[INFO] running `Command { std: "docker" "start" "-a" "d64807cab31a6a9265ee8eb217b185943ad8f1a77e98b5096f16b98bb52c3e63", kill_on_drop: false }`
[INFO] [stderr]     Checking RustAlgorithms v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:32:94
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let key_offsets: Vec<u8> = key.as_bytes().iter().map(|x| (x & CHAR_MASK) - 1).collect(); /// Calculate the offset on one side of the table
[INFO] [stdout]    |                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     let key_offsets = key_offsets.as_slice();
[INFO] [stdout]    |     ----------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:36:50
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let char_offset = (x.1 & CHAR_MASK) - 1; /// Calculate the offset on the other side of the table
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |         let result = result_fn(char_offset, key_offset);
[INFO] [stdout]    |         ------------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/break_encrypt/caesar.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::error::Error;
[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 imports: `Debug`, `Display`, and `Formatter`
[INFO] [stdout]  --> src/break_encrypt/caesar.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Debug, Display, Formatter};
[INFO] [stdout]   |                ^^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::encrypt::encrypt_caesar`
[INFO] [stdout]  --> src/break_encrypt/caesar.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::encrypt::encrypt_caesar;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     /// Create a buffer to which we write our cipher output later.
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     let mut buffer = input.to_string();
[INFO] [stdout]    |     ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 |     for x in 0..26 { /// Iterate over the number of letters in the alphabet and check for every possible shift
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |         decrypt(inpt, buffer, x);
[INFO] [stdout]    |         ------------------------ rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:20:40
[INFO] [stdout]    |
[INFO] [stdout] 20 |           if buffer == expected_result { /// Compare the result with the expected result
[INFO] [stdout]    |  ________________________________________^
[INFO] [stdout] 21 | |                                        /// we could also add this to a list which we could return later
[INFO] [stdout] 22 | |                                        /// and which contains all possible permutations.
[INFO] [stdout]    | |________________________________________________________________________________________^
[INFO] [stdout] 23 |               return Ok(x);
[INFO] [stdout]    |               ------------ rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |       /// This means that we didn't find the expected result here!
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 | /     return Err(BreakError {
[INFO] [stdout] 28 | |         msg: "".to_string()
[INFO] [stdout] 29 | |     });
[INFO] [stdout]    | |______- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:45:22
[INFO] [stdout]    |
[INFO] [stdout] 45 |       for x in range { /// Iterate over the given range and check for every possible shift
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 46 | |         /// Create a buffer to which we write our cipher output later.
[INFO] [stdout]    | |______________________________________________________________________^
[INFO] [stdout] 47 |           let mut buffer = input.to_string();
[INFO] [stdout]    |           ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::verify`
[INFO] [stdout]   --> src/sudoku/verifier.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 38 |     use super::verify;
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `finalize`
[INFO] [stdout]  --> src/rng/acorn.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::{finalize, xor_shift::{self, gen_u64}, Rng};
[INFO] [stdout]   |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/compression/huffman.rs:1:68
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::{BinaryHeap, HashMap}, fmt::{Debug, Write}, hash::Hash};
[INFO] [stdout]   |                                                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem::transmute`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::mem::transmute;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice::Iter`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::slice::Iter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::hash_map::Values`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::collections::hash_map::Values;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryInto`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::convert::TryInto;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::h1::H1`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use hash::h1::H1;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng::acorn::AcornRng`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use rng::acorn::AcornRng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng::lcg::LCGGenerator64`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use rng::lcg::LCGGenerator64;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng::xor_shift::XorShiftPRng64`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use rng::xor_shift::XorShiftPRng64;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::sudoku::print_constants`
[INFO] [stdout]   --> src/main.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::sudoku::print_constants;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::sudoku::verifier::verify`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::sudoku::verifier::verify;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_mut_refs` has been stable since 1.83.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(const_mut_refs)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_maybe_uninit_write` has been stable since 1.85.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(const_maybe_uninit_write)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:32:94
[INFO] [stdout]    |
[INFO] [stdout] 32 |     let key_offsets: Vec<u8> = key.as_bytes().iter().map(|x| (x & CHAR_MASK) - 1).collect(); /// Calculate the offset on one side of the table
[INFO] [stdout]    |                                                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 33 |     let key_offsets = key_offsets.as_slice();
[INFO] [stdout]    |     ----------------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout]    = note: `#[warn(unused_doc_comments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:36:50
[INFO] [stdout]    |
[INFO] [stdout] 36 |         let char_offset = (x.1 & CHAR_MASK) - 1; /// Calculate the offset on the other side of the table
[INFO] [stdout]    |                                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 37 |         let result = result_fn(char_offset, key_offset);
[INFO] [stdout]    |         ------------------------------------------------ rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::error::Error`
[INFO] [stdout]  --> src/break_encrypt/caesar.rs:1:5
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::error::Error;
[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 imports: `Debug`, `Display`, and `Formatter`
[INFO] [stdout]  --> src/break_encrypt/caesar.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 | use std::fmt::{Debug, Display, Formatter};
[INFO] [stdout]   |                ^^^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::encrypt::encrypt_caesar`
[INFO] [stdout]  --> src/break_encrypt/caesar.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::encrypt::encrypt_caesar;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:14:5
[INFO] [stdout]    |
[INFO] [stdout] 14 |     /// Create a buffer to which we write our cipher output later.
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 15 |     let mut buffer = input.to_string();
[INFO] [stdout]    |     ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:18:22
[INFO] [stdout]    |
[INFO] [stdout] 18 |     for x in 0..26 { /// Iterate over the number of letters in the alphabet and check for every possible shift
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |         decrypt(inpt, buffer, x);
[INFO] [stdout]    |         ------------------------ rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:20:40
[INFO] [stdout]    |
[INFO] [stdout] 20 |           if buffer == expected_result { /// Compare the result with the expected result
[INFO] [stdout]    |  ________________________________________^
[INFO] [stdout] 21 | |                                        /// we could also add this to a list which we could return later
[INFO] [stdout] 22 | |                                        /// and which contains all possible permutations.
[INFO] [stdout]    | |________________________________________________________________________________________^
[INFO] [stdout] 23 |               return Ok(x);
[INFO] [stdout]    |               ------------ rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 |       /// This means that we didn't find the expected result here!
[INFO] [stdout]    |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 27 | /     return Err(BreakError {
[INFO] [stdout] 28 | |         msg: "".to_string()
[INFO] [stdout] 29 | |     });
[INFO] [stdout]    | |______- rustdoc does not generate documentation for expressions
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused doc comment
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:45:22
[INFO] [stdout]    |
[INFO] [stdout] 45 |       for x in range { /// Iterate over the given range and check for every possible shift
[INFO] [stdout]    |  ______________________^
[INFO] [stdout] 46 | |         /// Create a buffer to which we write our cipher output later.
[INFO] [stdout]    | |______________________________________________________________________^
[INFO] [stdout] 47 |           let mut buffer = input.to_string();
[INFO] [stdout]    |           ----------------------------------- rustdoc does not generate documentation for statements
[INFO] [stdout]    |
[INFO] [stdout]    = help: use `//` for a plain comment
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `finalize`
[INFO] [stdout]  --> src/rng/acorn.rs:1:13
[INFO] [stdout]   |
[INFO] [stdout] 1 | use super::{finalize, xor_shift::{self, gen_u64}, Rng};
[INFO] [stdout]   |             ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::Hash`
[INFO] [stdout]  --> src/compression/huffman.rs:1:68
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::{BinaryHeap, HashMap}, fmt::{Debug, Write}, hash::Hash};
[INFO] [stdout]   |                                                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::mem::transmute`
[INFO] [stdout]   --> src/main.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 18 | use std::mem::transmute;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::slice::Iter`
[INFO] [stdout]   --> src/main.rs:19:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | use std::slice::Iter;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::hash_map::Values`
[INFO] [stdout]   --> src/main.rs:20:5
[INFO] [stdout]    |
[INFO] [stdout] 20 | use std::collections::hash_map::Values;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::convert::TryInto`
[INFO] [stdout]   --> src/main.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 21 | use std::convert::TryInto;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `hash::h1::H1`
[INFO] [stdout]   --> src/main.rs:25:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | use hash::h1::H1;
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng::acorn::AcornRng`
[INFO] [stdout]   --> src/main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 26 | use rng::acorn::AcornRng;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng::lcg::LCGGenerator64`
[INFO] [stdout]   --> src/main.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use rng::lcg::LCGGenerator64;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rng::xor_shift::XorShiftPRng64`
[INFO] [stdout]   --> src/main.rs:28:5
[INFO] [stdout]    |
[INFO] [stdout] 28 | use rng::xor_shift::XorShiftPRng64;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::sudoku::print_constants`
[INFO] [stdout]   --> src/main.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 32 | use crate::sudoku::print_constants;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::sudoku::verifier::verify`
[INFO] [stdout]   --> src/main.rs:33:5
[INFO] [stdout]    |
[INFO] [stdout] 33 | use crate::sudoku::verifier::verify;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_mut_refs` has been stable since 1.83.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:2:12
[INFO] [stdout]   |
[INFO] [stdout] 2 | #![feature(const_mut_refs)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(stable_features)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: the feature `const_maybe_uninit_write` has been stable since 1.85.0 and no longer requires an attribute to enable
[INFO] [stdout]  --> src/main.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | #![feature(const_maybe_uninit_write)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sorting/radix.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |         let mut bucket = buckets.get_mut(char_as_num(str_ver[str_ver.len() - 1] as char) as usize).unwrap();
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sorting/radix.rs:39:21
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let mut bucket = result.get_mut(elem).unwrap();
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/encrypt/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]   |         ----^^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/encrypt/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/encrypt/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/encrypt/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]  --> src/util/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     unsafe { input.as_bytes() }
[INFO] [stdout]   |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]  --> src/util/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     unsafe { input.as_bytes() }
[INFO] [stdout]   |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sudoku/base.rs:93:13
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let mut cells = CellArray::new(board);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sorting/radix.rs:25:13
[INFO] [stdout]    |
[INFO] [stdout] 25 |         let mut bucket = buckets.get_mut(char_as_num(str_ver[str_ver.len() - 1] as char) as usize).unwrap();
[INFO] [stdout]    |             ----^^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sorting/radix.rs:39:21
[INFO] [stdout]    |
[INFO] [stdout] 39 |                 let mut bucket = result.get_mut(elem).unwrap();
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]  --> src/encrypt/mod.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 6 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]   |         ----^^^
[INFO] [stdout]   |         |
[INFO] [stdout]   |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/encrypt/mod.rs:13:9
[INFO] [stdout]    |
[INFO] [stdout] 13 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/encrypt/mod.rs:20:9
[INFO] [stdout]    |
[INFO] [stdout] 20 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/encrypt/mod.rs:27:9
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let mut out = unsafe { out.as_bytes_mut() };
[INFO] [stdout]    |         ----^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]  --> src/util/mod.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 |     unsafe { input.as_bytes() }
[INFO] [stdout]   |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]  --> src/util/mod.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 |     unsafe { input.as_bytes() }
[INFO] [stdout]   |     ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/sudoku/base.rs:93:13
[INFO] [stdout]    |
[INFO] [stdout] 93 |         let mut cells = CellArray::new(board);
[INFO] [stdout]    |             ----^^^^^
[INFO] [stdout]    |             |
[INFO] [stdout]    |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash` is never used
[INFO] [stdout]    --> src/main.rs:114:4
[INFO] [stdout]     |
[INFO] [stdout] 114 | fn hash(val: u64) {
[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 `entropy_analysis` is never used
[INFO] [stdout]    --> src/main.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn entropy_analysis(mut rng: impl Rng) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD` is never used
[INFO] [stdout]    --> src/main.rs:173:7
[INFO] [stdout]     |
[INFO] [stdout] 173 | const EXAMPLE_SUDOKU_BOARD: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_2` is never used
[INFO] [stdout]    --> src/main.rs:185:7
[INFO] [stdout]     |
[INFO] [stdout] 185 | const EXAMPLE_SUDOKU_BOARD_2: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_3` is never used
[INFO] [stdout]    --> src/main.rs:197:7
[INFO] [stdout]     |
[INFO] [stdout] 197 | const EXAMPLE_SUDOKU_BOARD_3: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_4` is never used
[INFO] [stdout]    --> src/main.rs:210:7
[INFO] [stdout]     |
[INFO] [stdout] 210 | const EXAMPLE_SUDOKU_BOARD_4: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_5` is never used
[INFO] [stdout]    --> src/main.rs:222:7
[INFO] [stdout]     |
[INFO] [stdout] 222 | const EXAMPLE_SUDOKU_BOARD_5: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_6` is never used
[INFO] [stdout]    --> src/main.rs:235:7
[INFO] [stdout]     |
[INFO] [stdout] 235 | const EXAMPLE_SUDOKU_BOARD_6: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_7` is never used
[INFO] [stdout]    --> src/main.rs:247:7
[INFO] [stdout]     |
[INFO] [stdout] 247 | const EXAMPLE_SUDOKU_BOARD_7: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_8` is never used
[INFO] [stdout]    --> src/main.rs:259:7
[INFO] [stdout]     |
[INFO] [stdout] 259 | const EXAMPLE_SUDOKU_BOARD_8: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/radix.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) fn sort(src: &[i32]) -> Box<[i32]> {
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `char_as_num` is never used
[INFO] [stdout]   --> src/sorting/radix.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn char_as_num(input: char) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `longest` is never used
[INFO] [stdout]   --> src/sorting/radix.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn longest(strs: &HashMap<i32, Box<[u8]>>) -> usize {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/selection.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn sort(src: &mut [i32]) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/bubble.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn sort(src: &mut [i32]) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/insertion.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn sort(src: &mut [usize]) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_caesar` is never used
[INFO] [stdout]  --> src/encrypt/mod.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn encrypt_caesar(input: &str, offset: u8) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_poly` is never used
[INFO] [stdout]   --> src/encrypt/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn encrypt_poly(input: &str, key: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_caesar` is never used
[INFO] [stdout]   --> src/encrypt/mod.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn decrypt_caesar(input: &str, offset: u8) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_poly` is never used
[INFO] [stdout]   --> src/encrypt/mod.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn decrypt_poly(input: &str, key: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MASK` is never used
[INFO] [stdout]  --> src/encrypt/ceasar.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const MASK: u8 = !((1 << 5) | (1 << 6) | (1 << 7)); // TODO: Use this!
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt` is never used
[INFO] [stdout]  --> src/encrypt/ceasar.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn encrypt(input: &[u8], output: &mut [u8], shift_num: u8) {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt` is never used
[INFO] [stdout]   --> src/encrypt/ceasar.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn decrypt(input: &[u8], output: &mut [u8], shift_num: u8) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shift` is never used
[INFO] [stdout]   --> src/encrypt/ceasar.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn shift(x: u8, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unshift` is never used
[INFO] [stdout]   --> src/encrypt/ceasar.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | fn unshift(x: u8, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALPHABET_START` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const ALPHABET_START: u8 = 65; /// this is equal to `'A'` in UTF-8
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALPHABET_END` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const ALPHABET_END: u8 = 90;   /// this is equal to `'Z'` in UTF-8
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAR_MASK` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const CHAR_MASK: u8 = !((1 << 5) | (1 << 6) | (1 << 7)); /// This mask eliminates the bits which are relevant for upper/lower case re...
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn encrypt(input: &[u8], output: &mut [u8], key: &str) {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt` is never used
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn decrypt(input: &[u8], output: &mut [u8], key: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perform_op` is never used
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn perform_op(input: &[u8], output: &mut [u8], key: &str, result_fn: Box<dyn Fn(u8, u8) -> u8>) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BreakError` is never constructed
[INFO] [stdout]  --> src/break_encrypt/mod.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct BreakError {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_caesar` is never used
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn break_caesar(input: &str, expected: &str) -> Result<u8, BreakError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_caesar_permuts_default` is never used
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn break_caesar_permuts_default(input: &str) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_caesar_permuts` is never used
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn break_caesar_permuts(input: &str, range: Range<u8>) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `search_nearest` is never used
[INFO] [stdout]  --> src/search/binary.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn search_nearest(container: &[usize], target: usize) -> usize {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `search_length_limited_nearest` is never used
[INFO] [stdout]   --> src/search/binary.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn search_length_limited_nearest<T: PartialOrd>(container: &[T], target: T, length: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_constants` is never used
[INFO] [stdout]  --> src/sudoku/mod.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn print_constants() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELDS` is never used
[INFO] [stdout]  --> src/sudoku/base.rs:3:11
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub const FIELDS: usize = 9;
[INFO] [stdout]   |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROWS` is never used
[INFO] [stdout]  --> src/sudoku/base.rs:4:11
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub const ROWS: usize = 9;
[INFO] [stdout]   |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLUMNS` is never used
[INFO] [stdout]  --> src/sudoku/base.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub const COLUMNS: usize = 9;
[INFO] [stdout]   |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CELLS` is never used
[INFO] [stdout]  --> src/sudoku/base.rs:6:11
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub const CELLS: usize = ROWS * COLUMNS;
[INFO] [stdout]   |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FIELD_INDICES` is never used
[INFO] [stdout]  --> src/sudoku/base.rs:8:11
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub const FIELD_INDICES: [[usize; 9]; 9] = {
[INFO] [stdout]   |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROW_INDICES` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:29:11
[INFO] [stdout]    |
[INFO] [stdout] 29 | pub const ROW_INDICES: [[usize; 9]; 9] = {
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLUMN_INDICES` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:47:11
[INFO] [stdout]    |
[INFO] [stdout] 47 | pub const COLUMN_INDICES: [[usize; 9]; 9] = {
[INFO] [stdout]    |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `column_by_cell` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:66:14
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub const fn column_by_cell(cell: usize) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_by_cell` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const fn row_by_cell(cell: usize) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `field_by_cell` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const fn field_by_cell(cell: usize) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SudokuBase` is never constructed
[INFO] [stdout]   --> src/sudoku/base.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct SudokuBase {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | impl SudokuBase {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn new(board: &[u8; CELLS]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `META_ARRAY_LEN` is never used
[INFO] [stdout]    --> src/sudoku/base.rs:146:7
[INFO] [stdout]     |
[INFO] [stdout] 146 | const META_ARRAY_LEN: usize = 9_usize.div_ceil(2 * size_of::<u64>() / size_of::<u8>());
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetaArray` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct MetaArray([u64; META_ARRAY_LEN]);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `BASE`, `has_specified`, `get_possibility`, and `set_possibility` are never used
[INFO] [stdout]    --> src/sudoku/base.rs:153:11
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl MetaArray {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 152 |
[INFO] [stdout] 153 |     const BASE: u64 = (1 << 4) - 1;
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn has_specified(&self, num: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn get_possibility(&self, num: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub const fn set_possibility(&mut self, num: usize, val: usize) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CellArray` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub struct CellArray([Cell; CELLS]);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `get_mut` are never used
[INFO] [stdout]    --> src/sudoku/base.rs:182:14
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl CellArray {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     const fn new(board: &[u8; CELLS]) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub const fn get(&self, idx: u8) -> Cell {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub const fn get_mut(&mut self, idx: u8) -> &mut Cell {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cell` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub struct Cell(u16);
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sudoku/base.rs:245:11
[INFO] [stdout]     |
[INFO] [stdout] 243 | impl Cell {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 244 |
[INFO] [stdout] 245 |     const ANY: u16 = ((1 << 10) - 1) & !1;
[INFO] [stdout]     |           ^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     const fn new_val(num: u8) -> Self {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     const fn new_maybe(maybe: u16) -> Self {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub const fn possible_vals_set(self) -> u16 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub const fn possible_vals(self) -> PossibleValsIter {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub const fn may_be(self, val: u8) -> bool {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub const fn set_impossible(&mut self, val: u8) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub const fn set_val(&mut self, val: u8) {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub const fn get_val(self) -> Option<u8> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub const fn has_val(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PossibleValsIter` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:297:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub struct PossibleValsIter(u16);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_impossible` is never used
[INFO] [stdout]  --> src/sudoku/solver.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn set_impossible(base: &mut SudokuBase, cell: usize, val: usize) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_cell_val` is never used
[INFO] [stdout]   --> src/sudoku/solver.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn set_cell_val(base: &mut SudokuBase, cell: usize, final_val: usize) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `solve` is never used
[INFO] [stdout]   --> src/sudoku/solver.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn solve(board: &mut [u8; CELLS]) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXPECTED` is never used
[INFO] [stdout]  --> src/sudoku/verifier.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const EXPECTED: usize = ((1 << 10) - 1) & !1;
[INFO] [stdout]   |       ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `verify` is never used
[INFO] [stdout]  --> src/sudoku/verifier.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn verify(grid: &[u8; CELLS]) -> bool {
[INFO] [stdout]   |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CORRECT` is never used
[INFO] [stdout]   --> src/sudoku/verifier.rs:41:11
[INFO] [stdout]    |
[INFO] [stdout] 41 |     const CORRECT: &[u8; 81] = &[
[INFO] [stdout]    |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `INCORRECT` is never used
[INFO] [stdout]   --> src/sudoku/verifier.rs:53:11
[INFO] [stdout]    |
[INFO] [stdout] 53 |     const INCORRECT: &[u8; 81] = &[
[INFO] [stdout]    |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Rng` is never used
[INFO] [stdout]  --> src/rng/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait Rng {
[INFO] [stdout]   |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize` is never used
[INFO] [stdout]   --> src/rng/mod.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | const fn finalize(val: u64) -> u64 {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `XorShiftPRng64` is never constructed
[INFO] [stdout]  --> src/rng/xor_shift.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct XorShiftPRng64 {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `DEFAULT_SEED`, `new`, `with_seed`, and `rand_u64` are never used
[INFO] [stdout]   --> src/rng/xor_shift.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl XorShiftPRng64 {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub(crate) const DEFAULT_SEED: u64 = 0xC3A5B2678A2F3E41;
[INFO] [stdout]    |                      ^^^^^^^^^^^^
[INFO] [stdout] 11 |
[INFO] [stdout] 12 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub const fn with_seed(seed: u64) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn rand_u64(&mut self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_u64` is never used
[INFO] [stdout]   --> src/rng/xor_shift.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) const fn gen_u64(mut state: u64) -> (u64, u64) {
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LCGGenerator64` is never constructed
[INFO] [stdout]  --> src/rng/lcg.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct LCGGenerator64 {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `DEFAULT_SEED`, `new`, `with_seed`, and `gen_u64` are never used
[INFO] [stdout]   --> src/rng/lcg.rs:9:11
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl LCGGenerator64 {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout]  8 |
[INFO] [stdout]  9 |     const DEFAULT_SEED: u64 = 0xDEADBEEFCAFEBABE;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 10 |
[INFO] [stdout] 11 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub const fn with_seed(seed: u64) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn gen_u64(&mut self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AcornRng` is never used
[INFO] [stdout]  --> src/rng/acorn.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub type AcornRng = GenericAcornRng<16>;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenericAcornRng` is never constructed
[INFO] [stdout]  --> src/rng/acorn.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct GenericAcornRng<const STATE_SIZE: usize> {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `M`, `new`, and `gen_u64` are never used
[INFO] [stdout]   --> src/rng/acorn.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl<const STATE_SIZE: usize> GenericAcornRng<STATE_SIZE> {
[INFO] [stdout]    | --------------------------------------------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 12 |     const M: u64 = 1 << 42;
[INFO] [stdout]    |           ^
[INFO] [stdout] 13 |
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn gen_u64(&mut self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `H1` is never constructed
[INFO] [stdout]  --> src/hash/h1.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct H1 {
[INFO] [stdout]   |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_part`, and `write_partial` are never used
[INFO] [stdout]   --> src/hash/h1.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl H1 {
[INFO] [stdout]    | ------- associated items in this implementation
[INFO] [stdout] 10 |
[INFO] [stdout] 11 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn write_part(&mut self, val: u64) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn write_partial<const RESPECT_BUF: bool>(&mut self, bytes: &[u8]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIX` is never used
[INFO] [stdout]   --> src/hash/h1.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const MIX: u64 = 0b01010101011001010100101010101100111100101000100101011000101001011;
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PADDING` is never used
[INFO] [stdout]   --> src/hash/h1.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const PADDING: u64 = 0b1100101010100010010010101011010110110110111100100101001010100101;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLOCK_SIZE` is never used
[INFO] [stdout]   --> src/hash/h1.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const BLOCK_SIZE: usize = size_of::<u64>();
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_from_buf` is never used
[INFO] [stdout]   --> src/hash/h1.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn u64_from_buf(buf: &[u8]) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_u64` is never used
[INFO] [stdout]   --> src/hash/h1.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn rotate_u64(val: u64, by: usize) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `H2` is never constructed
[INFO] [stdout]  --> src/hash/h2.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct H2 {
[INFO] [stdout]   |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_part`, and `write_buffered` are never used
[INFO] [stdout]   --> src/hash/h2.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl H2 {
[INFO] [stdout]    | ------- associated items in this implementation
[INFO] [stdout] 10 |
[INFO] [stdout] 11 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn write_part(&mut self, val: u64) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn write_buffered<const RESPECT_BUF: bool>(&mut self, bytes: &[u8]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIX` is never used
[INFO] [stdout]   --> src/hash/h2.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const MIX: u64 = 0b01010101011001010100101010101100111100101000100101011000101001011;
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PADDING` is never used
[INFO] [stdout]   --> src/hash/h2.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const PADDING: u64 = 0b1100101010100010010010101011010110110110111100100101001010100101;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLOCK_SIZE` is never used
[INFO] [stdout]   --> src/hash/h2.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const BLOCK_SIZE: usize = size_of::<u64>();
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_from_buf` is never used
[INFO] [stdout]   --> src/hash/h2.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn u64_from_buf(buf: &[u8]) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_u64` is never used
[INFO] [stdout]   --> src/hash/h2.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn rotate_u64(val: u64, by: usize) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_entries` is never used
[INFO] [stdout]   --> src/compression/huffman.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn build_entries(table: &mut HashMap<char, BitArray>, node: &CodeNode, curr_word: &mut BitStream) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pop_bit` is never used
[INFO] [stdout]    --> src/compression/huffman.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl BitStream {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn pop_bit(&mut self) -> Option<u8> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_primes` is never used
[INFO] [stdout]  --> src/prime_finder.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn find_primes(until: u128) -> Vec<u128> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_prime` is never used
[INFO] [stdout]   --> src/prime_finder.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_prime(val: u128) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sqrt_newton` is never used
[INFO] [stdout]   --> src/prime_finder.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn sqrt_newton(n: u128) -> u128 {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]    --> src/main.rs:165:31
[INFO] [stdout]     |
[INFO] [stdout] 165 |     for (dups, cases) in dups.into_iter().enumerate() {
[INFO] [stdout]     |                               ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]     = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]     |
[INFO] [stdout] 165 -     for (dups, cases) in dups.into_iter().enumerate() {
[INFO] [stdout] 165 +     for (dups, cases) in dups.iter().enumerate() {
[INFO] [stdout]     |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]     |
[INFO] [stdout] 165 -     for (dups, cases) in dups.into_iter().enumerate() {
[INFO] [stdout] 165 +     for (dups, cases) in IntoIterator::into_iter(dups).enumerate() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/sudoku/mod.rs:17:39
[INFO] [stdout]    |
[INFO] [stdout] 17 |     for (idx, field) in FIELD_INDICES.into_iter().enumerate() {
[INFO] [stdout]    |                                       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 17 -     for (idx, field) in FIELD_INDICES.into_iter().enumerate() {
[INFO] [stdout] 17 +     for (idx, field) in FIELD_INDICES.iter().enumerate() {
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 17 -     for (idx, field) in FIELD_INDICES.into_iter().enumerate() {
[INFO] [stdout] 17 +     for (idx, field) in IntoIterator::into_iter(FIELD_INDICES).enumerate() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash` is never used
[INFO] [stdout]    --> src/main.rs:114:4
[INFO] [stdout]     |
[INFO] [stdout] 114 | fn hash(val: u64) {
[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 `entropy_analysis` is never used
[INFO] [stdout]    --> src/main.rs:127:4
[INFO] [stdout]     |
[INFO] [stdout] 127 | fn entropy_analysis(mut rng: impl Rng) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD` is never used
[INFO] [stdout]    --> src/main.rs:173:7
[INFO] [stdout]     |
[INFO] [stdout] 173 | const EXAMPLE_SUDOKU_BOARD: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_2` is never used
[INFO] [stdout]    --> src/main.rs:185:7
[INFO] [stdout]     |
[INFO] [stdout] 185 | const EXAMPLE_SUDOKU_BOARD_2: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_3` is never used
[INFO] [stdout]    --> src/main.rs:197:7
[INFO] [stdout]     |
[INFO] [stdout] 197 | const EXAMPLE_SUDOKU_BOARD_3: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_4` is never used
[INFO] [stdout]    --> src/main.rs:210:7
[INFO] [stdout]     |
[INFO] [stdout] 210 | const EXAMPLE_SUDOKU_BOARD_4: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_5` is never used
[INFO] [stdout]    --> src/main.rs:222:7
[INFO] [stdout]     |
[INFO] [stdout] 222 | const EXAMPLE_SUDOKU_BOARD_5: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_6` is never used
[INFO] [stdout]    --> src/main.rs:235:7
[INFO] [stdout]     |
[INFO] [stdout] 235 | const EXAMPLE_SUDOKU_BOARD_6: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_7` is never used
[INFO] [stdout]    --> src/main.rs:247:7
[INFO] [stdout]     |
[INFO] [stdout] 247 | const EXAMPLE_SUDOKU_BOARD_7: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `EXAMPLE_SUDOKU_BOARD_8` is never used
[INFO] [stdout]    --> src/main.rs:259:7
[INFO] [stdout]     |
[INFO] [stdout] 259 | const EXAMPLE_SUDOKU_BOARD_8: &[u8; 81] = &[
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/radix.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub(crate) fn sort(src: &[i32]) -> Box<[i32]> {
[INFO] [stdout]   |               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: feature `int_roundings` is declared but not used
[INFO] [stdout]  --> src/main.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(int_roundings)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `char_as_num` is never used
[INFO] [stdout]   --> src/sorting/radix.rs:63:4
[INFO] [stdout]    |
[INFO] [stdout] 63 | fn char_as_num(input: char) -> u8 {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `longest` is never used
[INFO] [stdout]   --> src/sorting/radix.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn longest(strs: &HashMap<i32, Box<[u8]>>) -> usize {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/selection.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn sort(src: &mut [i32]) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/bubble.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn sort(src: &mut [i32]) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sort` is never used
[INFO] [stdout]  --> src/sorting/insertion.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn sort(src: &mut [usize]) {
[INFO] [stdout]   |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_caesar` is never used
[INFO] [stdout]  --> src/encrypt/mod.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn encrypt_caesar(input: &str, offset: u8) -> String {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt_poly` is never used
[INFO] [stdout]   --> src/encrypt/mod.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn encrypt_poly(input: &str, key: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_caesar` is never used
[INFO] [stdout]   --> src/encrypt/mod.rs:18:8
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub fn decrypt_caesar(input: &str, offset: u8) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt_poly` is never used
[INFO] [stdout]   --> src/encrypt/mod.rs:25:8
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub fn decrypt_poly(input: &str, key: &str) -> String {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MASK` is never used
[INFO] [stdout]  --> src/encrypt/ceasar.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const MASK: u8 = !((1 << 5) | (1 << 6) | (1 << 7)); // TODO: Use this!
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt` is never used
[INFO] [stdout]  --> src/encrypt/ceasar.rs:5:8
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub fn encrypt(input: &[u8], output: &mut [u8], shift_num: u8) {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt` is never used
[INFO] [stdout]   --> src/encrypt/ceasar.rs:14:8
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub fn decrypt(input: &[u8], output: &mut [u8], shift_num: u8) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `shift` is never used
[INFO] [stdout]   --> src/encrypt/ceasar.rs:23:4
[INFO] [stdout]    |
[INFO] [stdout] 23 | fn shift(x: u8, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `unshift` is never used
[INFO] [stdout]   --> src/encrypt/ceasar.rs:32:4
[INFO] [stdout]    |
[INFO] [stdout] 32 | fn unshift(x: u8, offset: u8) -> u8 {
[INFO] [stdout]    |    ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALPHABET_START` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:1:7
[INFO] [stdout]   |
[INFO] [stdout] 1 | const ALPHABET_START: u8 = 65; /// this is equal to `'A'` in UTF-8
[INFO] [stdout]   |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALPHABET_END` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:2:7
[INFO] [stdout]   |
[INFO] [stdout] 2 | const ALPHABET_END: u8 = 90;   /// this is equal to `'Z'` in UTF-8
[INFO] [stdout]   |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CHAR_MASK` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:3:7
[INFO] [stdout]   |
[INFO] [stdout] 3 | const CHAR_MASK: u8 = !((1 << 5) | (1 << 6) | (1 << 7)); /// This mask eliminates the bits which are relevant for upper/lower case re...
[INFO] [stdout]   |       ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `encrypt` is never used
[INFO] [stdout]  --> src/encrypt/polyalphabet.rs:8:8
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub fn encrypt(input: &[u8], output: &mut [u8], key: &str) {
[INFO] [stdout]   |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `decrypt` is never used
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:21:8
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub fn decrypt(input: &[u8], output: &mut [u8], key: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `perform_op` is never used
[INFO] [stdout]   --> src/encrypt/polyalphabet.rs:31:4
[INFO] [stdout]    |
[INFO] [stdout] 31 | fn perform_op(input: &[u8], output: &mut [u8], key: &str, result_fn: Box<dyn Fn(u8, u8) -> u8>) {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BreakError` is never constructed
[INFO] [stdout]  --> src/break_encrypt/mod.rs:6:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub struct BreakError {
[INFO] [stdout]   |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_caesar` is never used
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:10:8
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub fn break_caesar(input: &str, expected: &str) -> Result<u8, BreakError> {
[INFO] [stdout]    |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_caesar_permuts_default` is never used
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn break_caesar_permuts_default(input: &str) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `break_caesar_permuts` is never used
[INFO] [stdout]   --> src/break_encrypt/caesar.rs:42:8
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub fn break_caesar_permuts(input: &str, range: Range<u8>) -> Vec<String> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `search_nearest` is never used
[INFO] [stdout]  --> src/search/binary.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn search_nearest(container: &[usize], target: usize) -> usize {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `search_length_limited_nearest` is never used
[INFO] [stdout]   --> src/search/binary.rs:11:8
[INFO] [stdout]    |
[INFO] [stdout] 11 | pub fn search_length_limited_nearest<T: PartialOrd>(container: &[T], target: T, length: usize) -> usize {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `print_constants` is never used
[INFO] [stdout]  --> src/sudoku/mod.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn print_constants() {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `column_by_cell` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:66:14
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub const fn column_by_cell(cell: usize) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `row_by_cell` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:71:14
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub const fn row_by_cell(cell: usize) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `field_by_cell` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:76:14
[INFO] [stdout]    |
[INFO] [stdout] 76 | pub const fn field_by_cell(cell: usize) -> usize {
[INFO] [stdout]    |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `SudokuBase` is never constructed
[INFO] [stdout]   --> src/sudoku/base.rs:82:12
[INFO] [stdout]    |
[INFO] [stdout] 82 | pub struct SudokuBase {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]   --> src/sudoku/base.rs:92:12
[INFO] [stdout]    |
[INFO] [stdout] 89 | impl SudokuBase {
[INFO] [stdout]    | --------------- associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 92 |     pub fn new(board: &[u8; CELLS]) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `META_ARRAY_LEN` is never used
[INFO] [stdout]    --> src/sudoku/base.rs:146:7
[INFO] [stdout]     |
[INFO] [stdout] 146 | const META_ARRAY_LEN: usize = 9_usize.div_ceil(2 * size_of::<u64>() / size_of::<u8>());
[INFO] [stdout]     |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MetaArray` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 | pub struct MetaArray([u64; META_ARRAY_LEN]);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `BASE`, `has_specified`, `get_possibility`, and `set_possibility` are never used
[INFO] [stdout]    --> src/sudoku/base.rs:153:11
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl MetaArray {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] 152 |
[INFO] [stdout] 153 |     const BASE: u64 = (1 << 4) - 1;
[INFO] [stdout]     |           ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn has_specified(&self, num: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn get_possibility(&self, num: usize) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 168 |     pub const fn set_possibility(&mut self, num: usize, val: usize) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `CellArray` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:177:12
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub struct CellArray([Cell; CELLS]);
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `get_mut` are never used
[INFO] [stdout]    --> src/sudoku/base.rs:182:14
[INFO] [stdout]     |
[INFO] [stdout] 179 | impl CellArray {
[INFO] [stdout]     | -------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 182 |     const fn new(board: &[u8; CELLS]) -> Self {
[INFO] [stdout]     |              ^^^
[INFO] [stdout] ...
[INFO] [stdout] 229 |     pub const fn get(&self, idx: u8) -> Cell {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 234 |     pub const fn get_mut(&mut self, idx: u8) -> &mut Cell {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Cell` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:241:12
[INFO] [stdout]     |
[INFO] [stdout] 241 | pub struct Cell(u16);
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/sudoku/base.rs:245:11
[INFO] [stdout]     |
[INFO] [stdout] 243 | impl Cell {
[INFO] [stdout]     | --------- associated items in this implementation
[INFO] [stdout] 244 |
[INFO] [stdout] 245 |     const ANY: u16 = ((1 << 10) - 1) & !1;
[INFO] [stdout]     |           ^^^
[INFO] [stdout] ...
[INFO] [stdout] 248 |     const fn new_val(num: u8) -> Self {
[INFO] [stdout]     |              ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 253 |     const fn new_maybe(maybe: u16) -> Self {
[INFO] [stdout]     |              ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 258 |     pub const fn possible_vals_set(self) -> u16 {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 263 |     pub const fn possible_vals(self) -> PossibleValsIter {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 268 |     pub const fn may_be(self, val: u8) -> bool {
[INFO] [stdout]     |                  ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 273 |     pub const fn set_impossible(&mut self, val: u8) {
[INFO] [stdout]     |                  ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 278 |     pub const fn set_val(&mut self, val: u8) {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 283 |     pub const fn get_val(self) -> Option<u8> {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 291 |     pub const fn has_val(self) -> bool {
[INFO] [stdout]     |                  ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PossibleValsIter` is never constructed
[INFO] [stdout]    --> src/sudoku/base.rs:297:12
[INFO] [stdout]     |
[INFO] [stdout] 297 | pub struct PossibleValsIter(u16);
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_impossible` is never used
[INFO] [stdout]  --> src/sudoku/solver.rs:3:4
[INFO] [stdout]   |
[INFO] [stdout] 3 | fn set_impossible(base: &mut SudokuBase, cell: usize, val: usize) {
[INFO] [stdout]   |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `set_cell_val` is never used
[INFO] [stdout]   --> src/sudoku/solver.rs:34:4
[INFO] [stdout]    |
[INFO] [stdout] 34 | fn set_cell_val(base: &mut SudokuBase, cell: usize, final_val: usize) {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `solve` is never used
[INFO] [stdout]   --> src/sudoku/solver.rs:66:8
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub fn solve(board: &mut [u8; CELLS]) {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Rng` is never used
[INFO] [stdout]  --> src/rng/mod.rs:5:11
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub trait Rng {
[INFO] [stdout]   |           ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `finalize` is never used
[INFO] [stdout]   --> src/rng/mod.rs:15:10
[INFO] [stdout]    |
[INFO] [stdout] 15 | const fn finalize(val: u64) -> u64 {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `XorShiftPRng64` is never constructed
[INFO] [stdout]  --> src/rng/xor_shift.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct XorShiftPRng64 {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `DEFAULT_SEED`, `new`, `with_seed`, and `rand_u64` are never used
[INFO] [stdout]   --> src/rng/xor_shift.rs:10:22
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl XorShiftPRng64 {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 10 |     pub(crate) const DEFAULT_SEED: u64 = 0xC3A5B2678A2F3E41;
[INFO] [stdout]    |                      ^^^^^^^^^^^^
[INFO] [stdout] 11 |
[INFO] [stdout] 12 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 16 |     pub const fn with_seed(seed: u64) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 23 |     pub fn rand_u64(&mut self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gen_u64` is never used
[INFO] [stdout]   --> src/rng/xor_shift.rs:45:21
[INFO] [stdout]    |
[INFO] [stdout] 45 | pub(crate) const fn gen_u64(mut state: u64) -> (u64, u64) {
[INFO] [stdout]    |                     ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `LCGGenerator64` is never constructed
[INFO] [stdout]  --> src/rng/lcg.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct LCGGenerator64 {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `DEFAULT_SEED`, `new`, `with_seed`, and `gen_u64` are never used
[INFO] [stdout]   --> src/rng/lcg.rs:9:11
[INFO] [stdout]    |
[INFO] [stdout]  7 | impl LCGGenerator64 {
[INFO] [stdout]    | ------------------- associated items in this implementation
[INFO] [stdout]  8 |
[INFO] [stdout]  9 |     const DEFAULT_SEED: u64 = 0xDEADBEEFCAFEBABE;
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout] 10 |
[INFO] [stdout] 11 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 15 |     pub const fn with_seed(seed: u64) -> Self {
[INFO] [stdout]    |                  ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 21 |     pub fn gen_u64(&mut self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type alias `AcornRng` is never used
[INFO] [stdout]  --> src/rng/acorn.rs:3:10
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub type AcornRng = GenericAcornRng<16>;
[INFO] [stdout]   |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GenericAcornRng` is never constructed
[INFO] [stdout]  --> src/rng/acorn.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct GenericAcornRng<const STATE_SIZE: usize> {
[INFO] [stdout]   |            ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `M`, `new`, and `gen_u64` are never used
[INFO] [stdout]   --> src/rng/acorn.rs:12:11
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl<const STATE_SIZE: usize> GenericAcornRng<STATE_SIZE> {
[INFO] [stdout]    | --------------------------------------------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 12 |     const M: u64 = 1 << 42;
[INFO] [stdout]    |           ^
[INFO] [stdout] 13 |
[INFO] [stdout] 14 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn gen_u64(&mut self) -> u64 {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `H1` is never constructed
[INFO] [stdout]  --> src/hash/h1.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct H1 {
[INFO] [stdout]   |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_part`, and `write_partial` are never used
[INFO] [stdout]   --> src/hash/h1.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl H1 {
[INFO] [stdout]    | ------- associated items in this implementation
[INFO] [stdout] 10 |
[INFO] [stdout] 11 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn write_part(&mut self, val: u64) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn write_partial<const RESPECT_BUF: bool>(&mut self, bytes: &[u8]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIX` is never used
[INFO] [stdout]   --> src/hash/h1.rs:42:7
[INFO] [stdout]    |
[INFO] [stdout] 42 | const MIX: u64 = 0b01010101011001010100101010101100111100101000100101011000101001011;
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PADDING` is never used
[INFO] [stdout]   --> src/hash/h1.rs:44:7
[INFO] [stdout]    |
[INFO] [stdout] 44 | const PADDING: u64 = 0b1100101010100010010010101011010110110110111100100101001010100101;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLOCK_SIZE` is never used
[INFO] [stdout]   --> src/hash/h1.rs:46:7
[INFO] [stdout]    |
[INFO] [stdout] 46 | const BLOCK_SIZE: usize = size_of::<u64>();
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_from_buf` is never used
[INFO] [stdout]   --> src/hash/h1.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn u64_from_buf(buf: &[u8]) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_u64` is never used
[INFO] [stdout]   --> src/hash/h1.rs:84:4
[INFO] [stdout]    |
[INFO] [stdout] 84 | fn rotate_u64(val: u64, by: usize) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `H2` is never constructed
[INFO] [stdout]  --> src/hash/h2.rs:3:12
[INFO] [stdout]   |
[INFO] [stdout] 3 | pub struct H2 {
[INFO] [stdout]   |            ^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `write_part`, and `write_buffered` are never used
[INFO] [stdout]   --> src/hash/h2.rs:11:18
[INFO] [stdout]    |
[INFO] [stdout]  9 | impl H2 {
[INFO] [stdout]    | ------- associated items in this implementation
[INFO] [stdout] 10 |
[INFO] [stdout] 11 |     pub const fn new() -> Self {
[INFO] [stdout]    |                  ^^^
[INFO] [stdout] ...
[INFO] [stdout] 19 |     fn write_part(&mut self, val: u64) {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     fn write_buffered<const RESPECT_BUF: bool>(&mut self, bytes: &[u8]) {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `MIX` is never used
[INFO] [stdout]   --> src/hash/h2.rs:35:7
[INFO] [stdout]    |
[INFO] [stdout] 35 | const MIX: u64 = 0b01010101011001010100101010101100111100101000100101011000101001011;
[INFO] [stdout]    |       ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PADDING` is never used
[INFO] [stdout]   --> src/hash/h2.rs:37:7
[INFO] [stdout]    |
[INFO] [stdout] 37 | const PADDING: u64 = 0b1100101010100010010010101011010110110110111100100101001010100101;
[INFO] [stdout]    |       ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BLOCK_SIZE` is never used
[INFO] [stdout]   --> src/hash/h2.rs:39:7
[INFO] [stdout]    |
[INFO] [stdout] 39 | const BLOCK_SIZE: usize = size_of::<u64>();
[INFO] [stdout]    |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u64_from_buf` is never used
[INFO] [stdout]   --> src/hash/h2.rs:74:4
[INFO] [stdout]    |
[INFO] [stdout] 74 | fn u64_from_buf(buf: &[u8]) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `rotate_u64` is never used
[INFO] [stdout]   --> src/hash/h2.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn rotate_u64(val: u64, by: usize) -> u64 {
[INFO] [stdout]    |    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `build_entries` is never used
[INFO] [stdout]   --> src/compression/huffman.rs:79:4
[INFO] [stdout]    |
[INFO] [stdout] 79 | fn build_entries(table: &mut HashMap<char, BitArray>, node: &CodeNode, curr_word: &mut BitStream) {
[INFO] [stdout]    |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `pop_bit` is never used
[INFO] [stdout]    --> src/compression/huffman.rs:211:8
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl BitStream {
[INFO] [stdout]     | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 211 |     fn pop_bit(&mut self) -> Option<u8> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_primes` is never used
[INFO] [stdout]  --> src/prime_finder.rs:1:8
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub fn find_primes(until: u128) -> Vec<u128> {
[INFO] [stdout]   |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_prime` is never used
[INFO] [stdout]   --> src/prime_finder.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 35 | pub fn is_prime(val: u128) -> bool {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `sqrt_newton` is never used
[INFO] [stdout]   --> src/prime_finder.rs:46:4
[INFO] [stdout]    |
[INFO] [stdout] 46 | fn sqrt_newton(n: u128) -> u128 {
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]    --> src/main.rs:165:31
[INFO] [stdout]     |
[INFO] [stdout] 165 |     for (dups, cases) in dups.into_iter().enumerate() {
[INFO] [stdout]     |                               ^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this changes meaning in Rust 2021
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]     = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]     |
[INFO] [stdout] 165 -     for (dups, cases) in dups.into_iter().enumerate() {
[INFO] [stdout] 165 +     for (dups, cases) in dups.iter().enumerate() {
[INFO] [stdout]     |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]     |
[INFO] [stdout] 165 -     for (dups, cases) in dups.into_iter().enumerate() {
[INFO] [stdout] 165 +     for (dups, cases) in IntoIterator::into_iter(dups).enumerate() {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/sudoku/mod.rs:17:39
[INFO] [stdout]    |
[INFO] [stdout] 17 |     for (idx, field) in FIELD_INDICES.into_iter().enumerate() {
[INFO] [stdout]    |                                       ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 17 -     for (idx, field) in FIELD_INDICES.into_iter().enumerate() {
[INFO] [stdout] 17 +     for (idx, field) in FIELD_INDICES.iter().enumerate() {
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 17 -     for (idx, field) in FIELD_INDICES.into_iter().enumerate() {
[INFO] [stdout] 17 +     for (idx, field) in IntoIterator::into_iter(FIELD_INDICES).enumerate() {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: feature `int_roundings` is declared but not used
[INFO] [stdout]  --> src/main.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | #![feature(int_roundings)]
[INFO] [stdout]   |            ^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_features)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.39s
[INFO] running `Command { std: "docker" "inspect" "d64807cab31a6a9265ee8eb217b185943ad8f1a77e98b5096f16b98bb52c3e63", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "d64807cab31a6a9265ee8eb217b185943ad8f1a77e98b5096f16b98bb52c3e63", kill_on_drop: false }`
[INFO] [stdout] d64807cab31a6a9265ee8eb217b185943ad8f1a77e98b5096f16b98bb52c3e63
