[INFO] cloning repository https://github.com/feadoor/sudoku-utils
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/feadoor/sudoku-utils" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffeadoor%2Fsudoku-utils", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffeadoor%2Fsudoku-utils'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] f6c27f25322921d9875c45b411dd9801c6da1081
[INFO] checking feadoor/sudoku-utils against 5b237c915528dadada3f674b90c7c80368b632be for pr-133502-29
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffeadoor%2Fsudoku-utils" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/feadoor/sudoku-utils
[INFO] finished tweaking git repo https://github.com/feadoor/sudoku-utils
[INFO] tweaked toml for git repo https://github.com/feadoor/sudoku-utils written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/feadoor/sudoku-utils on toolchain 5b237c915528dadada3f674b90c7c80368b632be
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/feadoor/sudoku-utils 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" "+5b237c915528dadada3f674b90c7c80368b632be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking feadoor/sudoku-utils against 5b237c915528dadada3f674b90c7c80368b632be for pr-133502-29
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffeadoor%2Fsudoku-utils" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/feadoor/sudoku-utils
[INFO] finished tweaking git repo https://github.com/feadoor/sudoku-utils
[INFO] tweaked toml for git repo https://github.com/feadoor/sudoku-utils written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/feadoor/sudoku-utils on toolchain 5b237c915528dadada3f674b90c7c80368b632be
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/feadoor/sudoku-utils 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" "+5b237c915528dadada3f674b90c7c80368b632be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[ERROR] error running command: no output for 300 seconds
[INFO] checking feadoor/sudoku-utils against 5b237c915528dadada3f674b90c7c80368b632be for pr-133502-29
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffeadoor%2Fsudoku-utils" "/workspace/builds/worker-3-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-3-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/feadoor/sudoku-utils
[INFO] finished tweaking git repo https://github.com/feadoor/sudoku-utils
[INFO] tweaked toml for git repo https://github.com/feadoor/sudoku-utils written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/feadoor/sudoku-utils on toolchain 5b237c915528dadada3f674b90c7c80368b632be
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/feadoor/sudoku-utils 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" "+5b237c915528dadada3f674b90c7c80368b632be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e
[INFO] running `Command { std: "docker" "start" "06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e" "/opt/rustwide/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-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" "-w" "/opt/rustwide/workdir" "--user" "0:0" "06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e" "/opt/rustwide/cargo-home/bin/cargo" "+5b237c915528dadada3f674b90c7c80368b632be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.180
[INFO] [stderr]    Compiling crossbeam-utils v0.8.22
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.20
[INFO] [stderr]    Compiling crossbeam-deque v0.8.7
[INFO] [stderr]    Compiling portable-atomic v1.13.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]     Checking unicode-width v0.2.2
[INFO] [stderr]     Checking either v1.15.0
[INFO] [stderr]     Checking unit-prefix v0.5.2
[INFO] [stderr]     Checking chacha20 v0.10.1
[INFO] [stderr]     Checking itertools v0.14.0
[INFO] [stderr]     Checking getrandom v0.4.3
[INFO] [stderr]     Checking console v0.16.4
[INFO] [stderr]     Checking rayon v1.12.0
[INFO] [stderr]     Checking rand v0.10.2
[INFO] [stderr]     Checking indicatif v0.18.6
[INFO] [stderr]     Checking sudoku-utils v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/solving/logic.rs:126:14
[INFO] [stdout]     |
[INFO] [stdout] 126 |         for (val, positions) in self.candidate_positions.iter_mut().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `val`
[INFO] [stdout]    --> src/solving/logic.rs:126:14
[INFO] [stdout]     |
[INFO] [stdout] 126 |         for (val, positions) in self.candidate_positions.iter_mut().enumerate() {
[INFO] [stdout]     |              ^^^ help: if this is intentional, prefix it with an underscore: `_val`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `example_generation` is never used
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn example_generation() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DepthFirstTraversable` is never used
[INFO] [stdout]  --> src/generation/dfs_with_progress.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait DepthFirstTraversable {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DepthFirstSearcherWithProgress` is never constructed
[INFO] [stdout]   --> src/generation/dfs_with_progress.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DepthFirstSearcherWithProgress<T: DepthFirstTraversable> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `step`, and `progress_increment` are never used
[INFO] [stdout]   --> src/generation/dfs_with_progress.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<T: DepthFirstTraversable> DepthFirstSearcherWithProgress<T> {
[INFO] [stdout]    | ---------------------------------------------------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new(start_state: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn step(&mut self) -> bool {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn progress_increment(&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Expansion` is never used
[INFO] [stdout]  --> src/generation/expansion.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum Expansion {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `expand` and `plus_n` are never used
[INFO] [stdout]   --> src/generation/expansion.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Expansion {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn expand(&self, sudoku: RegionMaskedSudoku) -> Box<dyn Iterator<Item = (f64, f64, RegionMaskedSudoku)>> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn plus_n(n: usize, symmetry: DihedralSubgroup, excluded_cells_str: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlusNSearchState` is never constructed
[INFO] [stdout]   --> src/generation/expansion.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct PlusNSearchState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `for_sudoku_and_symmetry` is never used
[INFO] [stdout]   --> src/generation/expansion.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PlusNSearchState {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 43 |     pub fn for_sudoku_and_symmetry(n: usize, sudoku: RegionMaskedSudoku, symmetry: DihedralSubgroup, excluded_cells: &[(usize, usize...
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlusNSearchStep` is never used
[INFO] [stdout]   --> src/generation/expansion.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum PlusNSearchStep {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlusNSteps` is never used
[INFO] [stdout]   --> src/generation/expansion.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum PlusNSteps {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Filter` is never used
[INFO] [stdout]   --> src/generation/filter.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Filter {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `matches`, `at_most_n_basic_placements`, `solves_with_basics_after_elims`, and `non_equivalent` are never used
[INFO] [stdout]   --> src/generation/filter.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Filter {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn matches(&self, sudoku: &RegionMaskedSudoku) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn at_most_n_basic_placements(n: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn solves_with_basics_after_elims(elim_str: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn non_equivalent() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `at_most_n_basic_placements` is never used
[INFO] [stdout]   --> src/generation/filter.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn at_most_n_basic_placements(n: usize, sudoku: &RegionMaskedSudoku) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `solves_with_basics_after_elims` is never used
[INFO] [stdout]   --> src/generation/filter.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn solves_with_basics_after_elims(elims: &[((usize, usize), u8)], sudoku: &RegionMaskedSudoku) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `non_equivalent` is never used
[INFO] [stdout]   --> src/generation/filter.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn non_equivalent(sudoku: &Sudoku, seen_minlexes: &Mutex<HashSet<Sudoku>>) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GenerationBase` is never used
[INFO] [stdout]  --> src/generation/generate.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum GenerationBase {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `iter` is never used
[INFO] [stdout]   --> src/generation/generate.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl GenerationBase {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 11 |     pub fn iter(&self) -> Box<dyn Iterator<Item = (f64, f64, RegionMaskedSudoku)> + Send> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TemplateGeneratorState` is never constructed
[INFO] [stdout]   --> src/generation/generate.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct TemplateGeneratorState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `for_template` and `best_branch_digit` are never used
[INFO] [stdout]   --> src/generation/generate.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl TemplateGeneratorState {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn for_template(template: &Template) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn best_branch_digit(&self) -> Option<(usize, BitIter<u16>)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DigitSteps` is never constructed
[INFO] [stdout]   --> src/generation/generate.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct DigitSteps {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegionMaskedSudoku` is never constructed
[INFO] [stdout]   --> src/generation/pipeline.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RegionMaskedSudoku {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PipelineStep` is never used
[INFO] [stdout]   --> src/generation/pipeline.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum PipelineStep {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pipeline` is never constructed
[INFO] [stdout]   --> src/generation/pipeline.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Pipeline {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run_parallel` is never used
[INFO] [stdout]   --> src/generation/pipeline.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Pipeline {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 32 |     pub fn run_parallel<F>(self, bar: &ProgressBar, sink: F)
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_steps` is never used
[INFO] [stdout]   --> src/generation/pipeline.rs:73:4
[INFO] [stdout]    |
[INFO] [stdout] 73 | fn apply_steps<'a>(
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/generation/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl RegionMaskedSudoku {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn sudoku(&self) -> &Sudoku {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn empty_cells(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn place(&mut self, idx: usize, digit: u8) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn unplace(&mut self, idx: usize, digit: u8) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_empty(&self, idx: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn candidates(&self, idx: usize) -> Bitmask<u16> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_DIGITS` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:150:11
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub const ALL_DIGITS: Bitmask<u16> = Bitmask::<u16>::from(0b_111_111_111_0);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROW_INDICES` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:152:11
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub const ROW_INDICES: [usize; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COL_INDICES` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:164:11
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub const COL_INDICES: [usize; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOX_INDICES` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:176:11
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub const BOX_INDICES: [usize; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TemplateDigit` is never used
[INFO] [stdout]  --> src/generation/template.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum TemplateDigit {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Template` is never constructed
[INFO] [stdout]  --> src/generation/template.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Template([TemplateDigit; 81]);
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_str`, `digits`, and `next_digit` are never used
[INFO] [stdout]   --> src/generation/template.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Template {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 11 |     pub fn from_str(s: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn digits(&self) -> impl Iterator<Item = &TemplateDigit> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn next_digit<I: Iterator<Item = char>>(chars: &mut I) -> Option<TemplateDigit> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_clues` is never read
[INFO] [stdout]   --> src/sampling/mask_sampler.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct MaskSampler {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 15 |     min_clues: usize,
[INFO] [stdout] 16 |     max_clues: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `attempt_minimal` and `sample_minimal` are never used
[INFO] [stdout]    --> src/sampling/puzzle_sampler.rs:86:8
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl PuzzleSampler {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     fn attempt_minimal(&self, rng: &mut impl Rng) -> Option<Sudoku> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn sample_minimal(&self, rng: &mut impl Rng) -> Sudoku {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `has_solution`, `count_solutions`, and `is_minimal` are never used
[INFO] [stdout]   --> src/solving/fast_solver.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl FastBruteForceSolver {
[INFO] [stdout]    | ------------------------- associated functions in this implementation
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     pub fn has_solution(sudoku: &Sudoku) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn count_solutions(sudoku: &Sudoku) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn is_minimal(sudoku: &Sudoku) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicSolver` is never constructed
[INFO] [stdout]  --> src/solving/logic.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct BasicSolver {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/solving/logic.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl BasicSolver {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn for_region_masked_sudoku(sudoku: &RegionMaskedSudoku) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn eliminate_candidates(&mut self, elims: &[((usize, usize), u8)]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn step_basics(&mut self) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn solve_basics(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn is_solved(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn empty_cells(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn place_naked_single(&mut self, cell: usize, val: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     fn place_hidden_single(&mut self, cell_mask: Bitmask<u128>, val: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     fn do_naked_singles(&mut self) -> Option<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn do_hidden_singles(&mut self) -> Option<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn do_intersections(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn do_subsets(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_VALUES` is never used
[INFO] [stdout]    --> src/solving/logic.rs:164:11
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub const ALL_VALUES: Bitmask<u16> = Bitmask::<u16>::from(0b111111111);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_CELLS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:165:11
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub const ALL_CELLS: Bitmask<u128> = Bitmask::<u128>::from(0b111111111_111111111_111111111_111111111_111111111_111111111_111111111_...
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_REGIONS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:166:11
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub const ALL_REGIONS: Bitmask<u32> = Bitmask::<u32>::from(0b111111111_111111111_111111111);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REGIONS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:168:11
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub const REGIONS: [Bitmask<u128>; 27] = [
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CELL_REGIONS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:200:11
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub const CELL_REGIONS: [Bitmask::<u32>; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRIADS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:284:11
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub const TRIADS: [(Bitmask::<u128>, Bitmask::<u128>, Bitmask::<u128>); 54] = [
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PEERS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:341:11
[INFO] [stdout]     |
[INFO] [stdout] 341 | pub const PEERS: [Bitmask::<u128>; 81] = [
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Line` is never used
[INFO] [stdout]  --> src/symmetry/minlex.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum Line {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minlex` is never used
[INFO] [stdout]   --> src/symmetry/minlex.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn minlex(sudoku: &Sudoku) -> Sudoku {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `miniline` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn miniline(sudoku: &Sudoku, line: Line, index: usize) -> [u8; 3] {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `miniline_counts` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:111:4
[INFO] [stdout]     |
[INFO] [stdout] 111 | fn miniline_counts(sudoku: &Sudoku) -> Vec<(Line, [usize; 3])> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `counts_to_quaternary_index` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn counts_to_quaternary_index(vals: &[usize; 3]) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `miniline_to_binary_index` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:129:4
[INFO] [stdout]     |
[INFO] [stdout] 129 | fn miniline_to_binary_index(vals: &[u8; 3]) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREE_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:137:7
[INFO] [stdout]     |
[INFO] [stdout] 137 | const THREE_PERMS: [[usize; 3]; 6] = [
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BAND_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:145:7
[INFO] [stdout]     |
[INFO] [stdout] 145 | const BAND_PERMS: [&'static [usize]; 64] = [
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLUMN_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:168:7
[INFO] [stdout]     |
[INFO] [stdout] 168 | const COLUMN_PERMS: [&'static [usize]; 8] = [
[INFO] [stdout]     |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WREATH_PERM_RANGES` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:175:7
[INFO] [stdout]     |
[INFO] [stdout] 175 | const WREATH_PERM_RANGES: [[(usize, usize); 2]; 18] = [
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WREATH_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:199:7
[INFO] [stdout]     |
[INFO] [stdout] 199 | const WREATH_PERMS: [[usize; 9]; 1296] = [
[INFO] [stdout]     |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Symmetry` is never constructed
[INFO] [stdout]  --> src/symmetry/symmetry.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Symmetry<'a> {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `coordinates_preimage`, and `morphed_digits` are never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl<'a> Symmetry<'a> {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn new(row_mapping: &'a [usize; 9], col_mapping: &'a [usize; 9], transpose: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn coordinates_preimage(&self, (r, c): (usize, usize)) -> (usize, usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn morphed_digits(&'a self, sudoku: &'a Sudoku) -> impl Iterator<Item = u8> + 'a {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIHEDRAL_SYMMETRIES` is never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const DIHEDRAL_SYMMETRIES: &'static [Symmetry<'static>; 8] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DihedralSubgroup` is never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum DihedralSubgroup {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `symmetries` and `orbits` are never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl DihedralSubgroup {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] 66 |     #[inline(always)]
[INFO] [stdout] 67 |     pub fn symmetries(&self) -> &'static [Symmetry<'static>] {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn orbits(&self) -> &'static [&'static [usize]] {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DigitMapper` is never constructed
[INFO] [stdout]    --> src/symmetry/symmetry.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct DigitMapper {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `relabel` are never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl DigitMapper {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 106 |
[INFO] [stdout] 107 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn get(&mut self, source: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn relabel<'a, I: Iterator<Item = u8> + 'a>(&'a mut self, digits: I) -> impl Iterator<Item = u8> + 'a {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IDENTITY_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:129:11
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub const IDENTITY_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HORIZONTAL_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const HORIZONTAL_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERTICAL_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:141:11
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub const VERTICAL_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UL_TO_DR_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:147:11
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub const DIAGONAL_UL_TO_DR_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UR_TO_DL_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:153:11
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub const DIAGONAL_UR_TO_DL_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROTATE_CLOCKWISE_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:159:11
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub const ROTATE_CLOCKWISE_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROTATE_ANTICLOCKWISE_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:165:11
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub const ROTATE_ANTICLOCKWISE_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROTATE_CENTRALLY_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:171:11
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub const ROTATE_CENTRALLY_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRIVIAL_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:177:11
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub const TRIVIAL_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CENTRAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:189:11
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub const CENTRAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HORIZONTAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:201:11
[INFO] [stdout]     |
[INFO] [stdout] 201 | pub const HORIZONTAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERTICAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:213:11
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub const VERTICAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UL_TO_DR_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:225:11
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub const DIAGONAL_UL_TO_DR_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UR_TO_DL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:237:11
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub const DIAGONAL_UR_TO_DL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HORIZONTAL_AND_VERTICAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:249:11
[INFO] [stdout]     |
[INFO] [stdout] 249 | pub const HORIZONTAL_AND_VERTICAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DUAL_DIAGONAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:261:11
[INFO] [stdout]     |
[INFO] [stdout] 261 | pub const DUAL_DIAGONAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOURFOLD_ROTATION_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:273:11
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub const FOURFOLD_ROTATION_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FULL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:285:11
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub const FULL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]  --> src/utils/sudoku.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Sudoku {
[INFO] [stdout]   | ----------- associated function in this implementation
[INFO] [stdout] 7 |     #[inline(always)]
[INFO] [stdout] 8 |     pub fn empty() -> Self {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `example_generation` is never used
[INFO] [stdout]   --> src/main.rs:21:4
[INFO] [stdout]    |
[INFO] [stdout] 21 | fn example_generation() {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `DepthFirstTraversable` is never used
[INFO] [stdout]  --> src/generation/dfs_with_progress.rs:1:11
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub trait DepthFirstTraversable {
[INFO] [stdout]   |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DepthFirstSearcherWithProgress` is never constructed
[INFO] [stdout]   --> src/generation/dfs_with_progress.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct DepthFirstSearcherWithProgress<T: DepthFirstTraversable> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `step`, and `progress_increment` are never used
[INFO] [stdout]   --> src/generation/dfs_with_progress.rs:22:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl<T: DepthFirstTraversable> DepthFirstSearcherWithProgress<T> {
[INFO] [stdout]    | ---------------------------------------------------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn new(start_state: T) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     fn step(&mut self) -> bool {
[INFO] [stdout]    |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 72 |     fn progress_increment(&self) -> f64 {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Expansion` is never used
[INFO] [stdout]  --> src/generation/expansion.rs:8:10
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub enum Expansion {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `expand` and `plus_n` are never used
[INFO] [stdout]   --> src/generation/expansion.rs:13:12
[INFO] [stdout]    |
[INFO] [stdout] 12 | impl Expansion {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 13 |     pub fn expand(&self, sudoku: RegionMaskedSudoku) -> Box<dyn Iterator<Item = (f64, f64, RegionMaskedSudoku)>> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     pub fn plus_n(n: usize, symmetry: DihedralSubgroup, excluded_cells_str: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `PlusNSearchState` is never constructed
[INFO] [stdout]   --> src/generation/expansion.rs:32:8
[INFO] [stdout]    |
[INFO] [stdout] 32 | struct PlusNSearchState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `for_sudoku_and_symmetry` is never used
[INFO] [stdout]   --> src/generation/expansion.rs:43:12
[INFO] [stdout]    |
[INFO] [stdout] 42 | impl PlusNSearchState {
[INFO] [stdout]    | --------------------- associated function in this implementation
[INFO] [stdout] 43 |     pub fn for_sudoku_and_symmetry(n: usize, sudoku: RegionMaskedSudoku, symmetry: DihedralSubgroup, excluded_cells: &[(usize, usize...
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlusNSearchStep` is never used
[INFO] [stdout]   --> src/generation/expansion.rs:59:10
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub enum PlusNSearchStep {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlusNSteps` is never used
[INFO] [stdout]   --> src/generation/expansion.rs:64:10
[INFO] [stdout]    |
[INFO] [stdout] 64 | pub enum PlusNSteps {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Filter` is never used
[INFO] [stdout]   --> src/generation/filter.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum Filter {
[INFO] [stdout]    |          ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `matches`, `at_most_n_basic_placements`, `solves_with_basics_after_elims`, and `non_equivalent` are never used
[INFO] [stdout]   --> src/generation/filter.rs:19:12
[INFO] [stdout]    |
[INFO] [stdout] 18 | impl Filter {
[INFO] [stdout]    | ----------- associated items in this implementation
[INFO] [stdout] 19 |     pub fn matches(&self, sudoku: &RegionMaskedSudoku) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     pub fn at_most_n_basic_placements(n: usize) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     pub fn solves_with_basics_after_elims(elim_str: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     pub fn non_equivalent() -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `at_most_n_basic_placements` is never used
[INFO] [stdout]   --> src/generation/filter.rs:49:4
[INFO] [stdout]    |
[INFO] [stdout] 49 | fn at_most_n_basic_placements(n: usize, sudoku: &RegionMaskedSudoku) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `solves_with_basics_after_elims` is never used
[INFO] [stdout]   --> src/generation/filter.rs:60:4
[INFO] [stdout]    |
[INFO] [stdout] 60 | fn solves_with_basics_after_elims(elims: &[((usize, usize), u8)], sudoku: &RegionMaskedSudoku) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `non_equivalent` is never used
[INFO] [stdout]   --> src/generation/filter.rs:67:4
[INFO] [stdout]    |
[INFO] [stdout] 67 | fn non_equivalent(sudoku: &Sudoku, seen_minlexes: &Mutex<HashSet<Sudoku>>) -> bool {
[INFO] [stdout]    |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `GenerationBase` is never used
[INFO] [stdout]  --> src/generation/generate.rs:6:10
[INFO] [stdout]   |
[INFO] [stdout] 6 | pub enum GenerationBase {
[INFO] [stdout]   |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `iter` is never used
[INFO] [stdout]   --> src/generation/generate.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl GenerationBase {
[INFO] [stdout]    | ------------------- method in this implementation
[INFO] [stdout] 11 |     pub fn iter(&self) -> Box<dyn Iterator<Item = (f64, f64, RegionMaskedSudoku)> + Send> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TemplateGeneratorState` is never constructed
[INFO] [stdout]   --> src/generation/generate.rs:20:8
[INFO] [stdout]    |
[INFO] [stdout] 20 | struct TemplateGeneratorState {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `for_template` and `best_branch_digit` are never used
[INFO] [stdout]   --> src/generation/generate.rs:27:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | impl TemplateGeneratorState {
[INFO] [stdout]    | --------------------------- associated items in this implementation
[INFO] [stdout] 27 |     pub fn for_template(template: &Template) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 44 |     fn best_branch_digit(&self) -> Option<(usize, BitIter<u16>)> {
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DigitSteps` is never constructed
[INFO] [stdout]   --> src/generation/generate.rs:52:12
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub struct DigitSteps {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `RegionMaskedSudoku` is never constructed
[INFO] [stdout]   --> src/generation/pipeline.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct RegionMaskedSudoku {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PipelineStep` is never used
[INFO] [stdout]   --> src/generation/pipeline.rs:21:10
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub enum PipelineStep {
[INFO] [stdout]    |          ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Pipeline` is never constructed
[INFO] [stdout]   --> src/generation/pipeline.rs:26:12
[INFO] [stdout]    |
[INFO] [stdout] 26 | pub struct Pipeline {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `run_parallel` is never used
[INFO] [stdout]   --> src/generation/pipeline.rs:32:12
[INFO] [stdout]    |
[INFO] [stdout] 31 | impl Pipeline {
[INFO] [stdout]    | ------------- method in this implementation
[INFO] [stdout] 32 |     pub fn run_parallel<F>(self, bar: &ProgressBar, sink: F)
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_steps` is never used
[INFO] [stdout]   --> src/generation/pipeline.rs:73:4
[INFO] [stdout]    |
[INFO] [stdout] 73 | fn apply_steps<'a>(
[INFO] [stdout]    |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/generation/pipeline.rs:103:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | impl RegionMaskedSudoku {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn empty() -> Self {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 113 |     pub fn sudoku(&self) -> &Sudoku {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 118 |     pub fn empty_cells(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 123 |     pub fn place(&mut self, idx: usize, digit: u8) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 131 |     pub fn unplace(&mut self, idx: usize, digit: u8) {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 139 |     pub fn is_empty(&self, idx: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn candidates(&self, idx: usize) -> Bitmask<u16> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_DIGITS` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:150:11
[INFO] [stdout]     |
[INFO] [stdout] 150 | pub const ALL_DIGITS: Bitmask<u16> = Bitmask::<u16>::from(0b_111_111_111_0);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROW_INDICES` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:152:11
[INFO] [stdout]     |
[INFO] [stdout] 152 | pub const ROW_INDICES: [usize; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COL_INDICES` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:164:11
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub const COL_INDICES: [usize; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BOX_INDICES` is never used
[INFO] [stdout]    --> src/generation/pipeline.rs:176:11
[INFO] [stdout]     |
[INFO] [stdout] 176 | pub const BOX_INDICES: [usize; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TemplateDigit` is never used
[INFO] [stdout]  --> src/generation/template.rs:2:10
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub enum TemplateDigit {
[INFO] [stdout]   |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Template` is never constructed
[INFO] [stdout]  --> src/generation/template.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Template([TemplateDigit; 81]);
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `from_str`, `digits`, and `next_digit` are never used
[INFO] [stdout]   --> src/generation/template.rs:11:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Template {
[INFO] [stdout]    | ------------- associated items in this implementation
[INFO] [stdout] 11 |     pub fn from_str(s: &str) -> Self {
[INFO] [stdout]    |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 18 |     pub fn digits(&self) -> impl Iterator<Item = &TemplateDigit> {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 22 |     fn next_digit<I: Iterator<Item = char>>(chars: &mut I) -> Option<TemplateDigit> {
[INFO] [stdout]    |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `max_clues` is never read
[INFO] [stdout]   --> src/sampling/mask_sampler.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct MaskSampler {
[INFO] [stdout]    |            ----------- field in this struct
[INFO] [stdout] 15 |     min_clues: usize,
[INFO] [stdout] 16 |     max_clues: usize,
[INFO] [stdout]    |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `attempt_minimal` and `sample_minimal` are never used
[INFO] [stdout]    --> src/sampling/puzzle_sampler.rs:86:8
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl PuzzleSampler {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  86 |     fn attempt_minimal(&self, rng: &mut impl Rng) -> Option<Sudoku> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 103 |     pub fn sample_minimal(&self, rng: &mut impl Rng) -> Sudoku {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `has_solution`, `count_solutions`, and `is_minimal` are never used
[INFO] [stdout]   --> src/solving/fast_solver.rs:57:12
[INFO] [stdout]    |
[INFO] [stdout] 55 | impl FastBruteForceSolver {
[INFO] [stdout]    | ------------------------- associated functions in this implementation
[INFO] [stdout] 56 |
[INFO] [stdout] 57 |     pub fn has_solution(sudoku: &Sudoku) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn count_solutions(sudoku: &Sudoku) -> usize {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 69 |     pub fn is_minimal(sudoku: &Sudoku) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `BasicSolver` is never constructed
[INFO] [stdout]  --> src/solving/logic.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct BasicSolver {
[INFO] [stdout]   |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/solving/logic.rs:18:12
[INFO] [stdout]     |
[INFO] [stdout]  15 | impl BasicSolver {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  18 |     pub fn for_region_masked_sudoku(sudoku: &RegionMaskedSudoku) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  34 |     pub fn eliminate_candidates(&mut self, elims: &[((usize, usize), u8)]) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  42 |     pub fn step_basics(&mut self) -> Option<bool> {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  49 |     pub fn solve_basics(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  54 |     pub fn is_solved(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  59 |     pub fn empty_cells(&self) -> usize {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  64 |     fn place_naked_single(&mut self, cell: usize, val: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  74 |     fn place_hidden_single(&mut self, cell_mask: Bitmask<u128>, val: usize) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  84 |     fn do_naked_singles(&mut self) -> Option<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 105 |     fn do_hidden_singles(&mut self) -> Option<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     fn do_intersections(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 141 |     fn do_subsets(&mut self) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_VALUES` is never used
[INFO] [stdout]    --> src/solving/logic.rs:164:11
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub const ALL_VALUES: Bitmask<u16> = Bitmask::<u16>::from(0b111111111);
[INFO] [stdout]     |           ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_CELLS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:165:11
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub const ALL_CELLS: Bitmask<u128> = Bitmask::<u128>::from(0b111111111_111111111_111111111_111111111_111111111_111111111_111111111_...
[INFO] [stdout]     |           ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ALL_REGIONS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:166:11
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub const ALL_REGIONS: Bitmask<u32> = Bitmask::<u32>::from(0b111111111_111111111_111111111);
[INFO] [stdout]     |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `REGIONS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:168:11
[INFO] [stdout]     |
[INFO] [stdout] 168 | pub const REGIONS: [Bitmask<u128>; 27] = [
[INFO] [stdout]     |           ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CELL_REGIONS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:200:11
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub const CELL_REGIONS: [Bitmask::<u32>; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRIADS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:284:11
[INFO] [stdout]     |
[INFO] [stdout] 284 | pub const TRIADS: [(Bitmask::<u128>, Bitmask::<u128>, Bitmask::<u128>); 54] = [
[INFO] [stdout]     |           ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `PEERS` is never used
[INFO] [stdout]    --> src/solving/logic.rs:341:11
[INFO] [stdout]     |
[INFO] [stdout] 341 | pub const PEERS: [Bitmask::<u128>; 81] = [
[INFO] [stdout]     |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Line` is never used
[INFO] [stdout]  --> src/symmetry/minlex.rs:8:6
[INFO] [stdout]   |
[INFO] [stdout] 8 | enum Line {
[INFO] [stdout]   |      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `minlex` is never used
[INFO] [stdout]   --> src/symmetry/minlex.rs:15:8
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub fn minlex(sudoku: &Sudoku) -> Sudoku {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `miniline` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:102:4
[INFO] [stdout]     |
[INFO] [stdout] 102 | fn miniline(sudoku: &Sudoku, line: Line, index: usize) -> [u8; 3] {
[INFO] [stdout]     |    ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `miniline_counts` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:111:4
[INFO] [stdout]     |
[INFO] [stdout] 111 | fn miniline_counts(sudoku: &Sudoku) -> Vec<(Line, [usize; 3])> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `counts_to_quaternary_index` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:122:4
[INFO] [stdout]     |
[INFO] [stdout] 122 | fn counts_to_quaternary_index(vals: &[usize; 3]) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `miniline_to_binary_index` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:129:4
[INFO] [stdout]     |
[INFO] [stdout] 129 | fn miniline_to_binary_index(vals: &[u8; 3]) -> usize {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `THREE_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:137:7
[INFO] [stdout]     |
[INFO] [stdout] 137 | const THREE_PERMS: [[usize; 3]; 6] = [
[INFO] [stdout]     |       ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `BAND_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:145:7
[INFO] [stdout]     |
[INFO] [stdout] 145 | const BAND_PERMS: [&'static [usize]; 64] = [
[INFO] [stdout]     |       ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `COLUMN_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:168:7
[INFO] [stdout]     |
[INFO] [stdout] 168 | const COLUMN_PERMS: [&'static [usize]; 8] = [
[INFO] [stdout]     |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WREATH_PERM_RANGES` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:175:7
[INFO] [stdout]     |
[INFO] [stdout] 175 | const WREATH_PERM_RANGES: [[(usize, usize); 2]; 18] = [
[INFO] [stdout]     |       ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `WREATH_PERMS` is never used
[INFO] [stdout]    --> src/symmetry/minlex.rs:199:7
[INFO] [stdout]     |
[INFO] [stdout] 199 | const WREATH_PERMS: [[usize; 9]; 1296] = [
[INFO] [stdout]     |       ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Symmetry` is never constructed
[INFO] [stdout]  --> src/symmetry/symmetry.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 8 | pub struct Symmetry<'a> {
[INFO] [stdout]   |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `coordinates_preimage`, and `morphed_digits` are never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:17:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl<'a> Symmetry<'a> {
[INFO] [stdout]    | --------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub fn new(row_mapping: &'a [usize; 9], col_mapping: &'a [usize; 9], transpose: bool) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 24 |     pub fn coordinates_preimage(&self, (r, c): (usize, usize)) -> (usize, usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn morphed_digits(&'a self, sudoku: &'a Sudoku) -> impl Iterator<Item = u8> + 'a {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIHEDRAL_SYMMETRIES` is never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:39:11
[INFO] [stdout]    |
[INFO] [stdout] 39 | pub const DIHEDRAL_SYMMETRIES: &'static [Symmetry<'static>; 8] = &[
[INFO] [stdout]    |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `DihedralSubgroup` is never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:52:10
[INFO] [stdout]    |
[INFO] [stdout] 52 | pub enum DihedralSubgroup {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `symmetries` and `orbits` are never used
[INFO] [stdout]   --> src/symmetry/symmetry.rs:67:12
[INFO] [stdout]    |
[INFO] [stdout] 65 | impl DihedralSubgroup {
[INFO] [stdout]    | --------------------- methods in this implementation
[INFO] [stdout] 66 |     #[inline(always)]
[INFO] [stdout] 67 |     pub fn symmetries(&self) -> &'static [Symmetry<'static>] {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 83 |     pub fn orbits(&self) -> &'static [&'static [usize]] {
[INFO] [stdout]    |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `DigitMapper` is never constructed
[INFO] [stdout]    --> src/symmetry/symmetry.rs:100:12
[INFO] [stdout]     |
[INFO] [stdout] 100 | pub struct DigitMapper {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get`, and `relabel` are never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl DigitMapper {
[INFO] [stdout]     | ---------------- associated items in this implementation
[INFO] [stdout] 106 |
[INFO] [stdout] 107 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     fn get(&mut self, source: u8) -> u8 {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 124 |     pub fn relabel<'a, I: Iterator<Item = u8> + 'a>(&'a mut self, digits: I) -> impl Iterator<Item = u8> + 'a {
[INFO] [stdout]     |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `IDENTITY_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:129:11
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub const IDENTITY_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HORIZONTAL_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:135:11
[INFO] [stdout]     |
[INFO] [stdout] 135 | pub const HORIZONTAL_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERTICAL_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:141:11
[INFO] [stdout]     |
[INFO] [stdout] 141 | pub const VERTICAL_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UL_TO_DR_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:147:11
[INFO] [stdout]     |
[INFO] [stdout] 147 | pub const DIAGONAL_UL_TO_DR_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UR_TO_DL_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:153:11
[INFO] [stdout]     |
[INFO] [stdout] 153 | pub const DIAGONAL_UR_TO_DL_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROTATE_CLOCKWISE_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:159:11
[INFO] [stdout]     |
[INFO] [stdout] 159 | pub const ROTATE_CLOCKWISE_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROTATE_ANTICLOCKWISE_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:165:11
[INFO] [stdout]     |
[INFO] [stdout] 165 | pub const ROTATE_ANTICLOCKWISE_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `ROTATE_CENTRALLY_SYMM` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:171:11
[INFO] [stdout]     |
[INFO] [stdout] 171 | pub const ROTATE_CENTRALLY_SYMM: Symmetry<'static> = Symmetry {
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `TRIVIAL_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:177:11
[INFO] [stdout]     |
[INFO] [stdout] 177 | pub const TRIVIAL_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CENTRAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:189:11
[INFO] [stdout]     |
[INFO] [stdout] 189 | pub const CENTRAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HORIZONTAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:201:11
[INFO] [stdout]     |
[INFO] [stdout] 201 | pub const HORIZONTAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `VERTICAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:213:11
[INFO] [stdout]     |
[INFO] [stdout] 213 | pub const VERTICAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UL_TO_DR_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:225:11
[INFO] [stdout]     |
[INFO] [stdout] 225 | pub const DIAGONAL_UL_TO_DR_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DIAGONAL_UR_TO_DL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:237:11
[INFO] [stdout]     |
[INFO] [stdout] 237 | pub const DIAGONAL_UR_TO_DL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `HORIZONTAL_AND_VERTICAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:249:11
[INFO] [stdout]     |
[INFO] [stdout] 249 | pub const HORIZONTAL_AND_VERTICAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `DUAL_DIAGONAL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:261:11
[INFO] [stdout]     |
[INFO] [stdout] 261 | pub const DUAL_DIAGONAL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FOURFOLD_ROTATION_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:273:11
[INFO] [stdout]     |
[INFO] [stdout] 273 | pub const FOURFOLD_ROTATION_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `FULL_SYMM_ORBITS` is never used
[INFO] [stdout]    --> src/symmetry/symmetry.rs:285:11
[INFO] [stdout]     |
[INFO] [stdout] 285 | pub const FULL_SYMM_ORBITS: [&'static [usize]; 81] = [
[INFO] [stdout]     |           ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `empty` is never used
[INFO] [stdout]  --> src/utils/sudoku.rs:8:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Sudoku {
[INFO] [stdout]   | ----------- associated function in this implementation
[INFO] [stdout] 7 |     #[inline(always)]
[INFO] [stdout] 8 |     pub fn empty() -> Self {
[INFO] [stdout]   |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 7.75s
[INFO] running `Command { std: "docker" "inspect" "06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e", kill_on_drop: false }`
[INFO] [stdout] 06d424bd34d14a75eba3cb5e58c0ee280c3cdcb906f341059f946812c873156e
