[INFO] cloning repository https://github.com/Skipants/sudoku_solver
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Skipants/sudoku_solver" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkipants%2Fsudoku_solver", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkipants%2Fsudoku_solver'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] e2213d71b3e001dfb5997b07e26b3b21ccf97fd6
[INFO] checking Skipants/sudoku_solver against try#b28cc4eb48a6415b914e8ad0308be255ff8d73ed for pr-156508
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkipants%2Fsudoku_solver" "/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/Skipants/sudoku_solver
[INFO] finished tweaking git repo https://github.com/Skipants/sudoku_solver
[INFO] tweaked toml for git repo https://github.com/Skipants/sudoku_solver written to /workspace/builds/worker-3-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Skipants/sudoku_solver on toolchain b28cc4eb48a6415b914e8ad0308be255ff8d73ed
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Skipants/sudoku_solver 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" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[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/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 011656e32ad4ec0291cb0c54c44637378554085ec4b2187887e3eac4317ed0b2
[INFO] running `Command { std: "docker" "start" "-a" "011656e32ad4ec0291cb0c54c44637378554085ec4b2187887e3eac4317ed0b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "011656e32ad4ec0291cb0c54c44637378554085ec4b2187887e3eac4317ed0b2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "011656e32ad4ec0291cb0c54c44637378554085ec4b2187887e3eac4317ed0b2", kill_on_drop: false }`
[INFO] [stdout] 011656e32ad4ec0291cb0c54c44637378554085ec4b2187887e3eac4317ed0b2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-3-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" "+b28cc4eb48a6415b914e8ad0308be255ff8d73ed" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] f3de92fffb0f5ca6a11597ff3a4fac2c10b1105ccd15035f6a98b607b7cd68b4
[INFO] running `Command { std: "docker" "start" "-a" "f3de92fffb0f5ca6a11597ff3a4fac2c10b1105ccd15035f6a98b607b7cd68b4", kill_on_drop: false }`
[INFO] [stderr] warning: `package.edition` is unspecified, defaulting to `2015` while the latest is `2024`
[INFO] [stderr]     Checking sudoku_solver v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error[E0583]: file not found for module `sole_candidate`
[INFO] [stdout]  --> src/strategies/mod.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub mod sole_candidate;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `sole_candidate`, create file "src/strategies/sole_candidate.rs" or "src/strategies/sole_candidate/mod.rs"
[INFO] [stdout]   = note: if there is a `mod sole_candidate` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0583]: file not found for module `sole_candidate`
[INFO] [stdout]  --> src/strategies/mod.rs:2:1
[INFO] [stdout]   |
[INFO] [stdout] 2 | pub mod sole_candidate;
[INFO] [stdout]   | ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = help: to create the module `sole_candidate`, create file "src/strategies/sole_candidate.rs" or "src/strategies/sole_candidate/mod.rs"
[INFO] [stdout]   = note: if there is a `mod sole_candidate` elsewhere in the crate already, import it with `use crate::...` instead
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `sudoku_cell_bitmask`
[INFO] [stdout]  --> src/strategies/column_row_exclusion.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sudoku_cell_bitmask;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^ no `sudoku_cell_bitmask` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `sudoku_cell_bitmask`
[INFO] [stdout]  --> src/strategies/unique_candidate.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sudoku_cell_bitmask;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^ no `sudoku_cell_bitmask` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0106]: missing lifetime specifier
[INFO] [stdout]   --> src/main.rs:16:53
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn fill_board_from_file(filename: String) -> Result<Board, std::io::Error> {
[INFO] [stdout]    |                                                     ^^^^^ expected named lifetime parameter
[INFO] [stdout]    |
[INFO] [stdout]    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
[INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn fill_board_from_file(filename: String) -> Result<Board<'static>, std::io::Error> {
[INFO] [stdout]    |                                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `sudoku_cell_bitmask`
[INFO] [stdout]  --> src/strategies/column_row_exclusion.rs:3:5
[INFO] [stdout]   |
[INFO] [stdout] 3 | use sudoku_cell_bitmask;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^ no `sudoku_cell_bitmask` in the root
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `sudoku_cell_bitmask`
[INFO] [stdout]  --> src/strategies/unique_candidate.rs:2:5
[INFO] [stdout]   |
[INFO] [stdout] 2 | use sudoku_cell_bitmask;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^ no `sudoku_cell_bitmask` in the root
[INFO] [stdout]   |
[INFO] [stdout]   = note: unresolved item `strategies::column_row_exclusion::test::sudoku_cell_bitmask` exists but is inaccessible
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `x` in this scope
[INFO] [stdout]   --> src/main.rs:31:44
[INFO] [stdout]    |
[INFO] [stdout] 31 |         strategies::sole_candidate::solve(board, x, y);
[INFO] [stdout]    |                                                  ^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0106]: missing lifetime specifier
[INFO] [stdout]   --> src/main.rs:16:53
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn fill_board_from_file(filename: String) -> Result<Board, std::io::Error> {
[INFO] [stdout]    |                                                     ^^^^^ expected named lifetime parameter
[INFO] [stdout]    |
[INFO] [stdout]    = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
[INFO] [stdout] help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`, or if you will only have owned values
[INFO] [stdout]    |
[INFO] [stdout] 16 | fn fill_board_from_file(filename: String) -> Result<Board<'static>, std::io::Error> {
[INFO] [stdout]    |                                                          +++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `y` in this scope
[INFO] [stdout]   --> src/main.rs:31:47
[INFO] [stdout]    |
[INFO] [stdout] 31 |         strategies::sole_candidate::solve(board, x, y);
[INFO] [stdout]    |                                                     ^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cell.rs:18:6
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 1...9 => Contents::Value(candidates.value),
[INFO] [stdout]    |                  ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `x` in this scope
[INFO] [stdout]   --> src/main.rs:31:44
[INFO] [stdout]    |
[INFO] [stdout] 31 |         strategies::sole_candidate::solve(board, x, y);
[INFO] [stdout]    |                                                  ^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0425]: cannot find value `y` in this scope
[INFO] [stdout]   --> src/main.rs:31:47
[INFO] [stdout]    |
[INFO] [stdout] 31 |         strategies::sole_candidate::solve(board, x, y);
[INFO] [stdout]    |                                                     ^ not found in this scope
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: `...` range patterns are deprecated
[INFO] [stdout]   --> src/cell.rs:18:6
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 1...9 => Contents::Value(candidates.value),
[INFO] [stdout]    |                  ^^^ help: use `..=` for an inclusive range
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2015) but is a hard error in Rust 2021!
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stdout]    = note: `#[warn(ellipsis_inclusive_range_patterns)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0615]: attempted to take value of method `value` on type `&'a Candidates`
[INFO] [stdout]   --> src/cell.rs:17:31
[INFO] [stdout]    |
[INFO] [stdout] 17 |             contents: match candidates.value {
[INFO] [stdout]    |                                        ^^^^^ method, not a field
[INFO] [stdout]    |
[INFO] [stdout] help: use parentheses to call the method
[INFO] [stdout]    |
[INFO] [stdout] 17 |             contents: match candidates.value() {
[INFO] [stdout]    |                                             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0615]: attempted to take value of method `value` on type `&'a Candidates`
[INFO] [stdout]   --> src/cell.rs:17:31
[INFO] [stdout]    |
[INFO] [stdout] 17 |             contents: match candidates.value {
[INFO] [stdout]    |                                        ^^^^^ method, not a field
[INFO] [stdout]    |
[INFO] [stdout] help: use parentheses to call the method
[INFO] [stdout]    |
[INFO] [stdout] 17 |             contents: match candidates.value() {
[INFO] [stdout]    |                                             ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0615]: attempted to take value of method `value` on type `&'a Candidates`
[INFO] [stdout]   --> src/cell.rs:18:41
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 1...9 => Contents::Value(candidates.value),
[INFO] [stdout]    |                                                     ^^^^^ method, not a field
[INFO] [stdout]    |
[INFO] [stdout] help: use parentheses to call the method
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 1...9 => Contents::Value(candidates.value()),
[INFO] [stdout]    |                                                          ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0615]: attempted to take value of method `value` on type `&'a Candidates`
[INFO] [stdout]   --> src/cell.rs:18:41
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 1...9 => Contents::Value(candidates.value),
[INFO] [stdout]    |                                                     ^^^^^ method, not a field
[INFO] [stdout]    |
[INFO] [stdout] help: use parentheses to call the method
[INFO] [stdout]    |
[INFO] [stdout] 18 |                 1...9 => Contents::Value(candidates.value()),
[INFO] [stdout]    |                                                          ++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 |             cells: [[Cell::new(Candidates::new_default()); 9]; 9],
[INFO] [stdout]    |                      --------- ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&Candidates`, found `Candidates`
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/cell.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(candidates: &'a Candidates) -> Cell {
[INFO] [stdout]    |            ^^^ --------------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 16 |             cells: [[Cell::new(&Candidates::new_default()); 9]; 9],
[INFO] [stdout]    |                                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:16:23
[INFO] [stdout]    |
[INFO] [stdout] 16 |             cells: [[Cell::new(Candidates::new_default()); 9]; 9],
[INFO] [stdout]    |                      --------- ^^^^^^^^^^^^^^^^^^^^^^^^^ expected `&Candidates`, found `Candidates`
[INFO] [stdout]    |                      |
[INFO] [stdout]    |                      arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/cell.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(candidates: &'a Candidates) -> Cell {
[INFO] [stdout]    |            ^^^ --------------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 16 |             cells: [[Cell::new(&Candidates::new_default()); 9]; 9],
[INFO] [stdout]    |                                +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:22:38
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 let candidates = Candidates::new(value);
[INFO] [stdout]    |                                  --------------- ^^^^^ expected `u8`, found `i32`
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/candidates.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn new(value: u8) -> Candidates {
[INFO] [stdout]    |            ^^^ ---------
[INFO] [stdout] help: you can convert an `i32` to a `u8` and panic if the converted value doesn't fit
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 let candidates = Candidates::new(value.try_into().unwrap());
[INFO] [stdout]    |                                                       ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:23:26
[INFO] [stdout]    |
[INFO] [stdout] 23 |                 let cell = Cell::new(candidates);
[INFO] [stdout]    |                            --------- ^^^^^^^^^^ expected `&Candidates`, found `Candidates`
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/cell.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(candidates: &'a Candidates) -> Cell {
[INFO] [stdout]    |            ^^^ --------------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 23 |                 let cell = Cell::new(&candidates);
[INFO] [stdout]    |                                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:22:38
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 let candidates = Candidates::new(value);
[INFO] [stdout]    |                                  --------------- ^^^^^ expected `u8`, found `i32`
[INFO] [stdout]    |                                  |
[INFO] [stdout]    |                                  arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/candidates.rs:24:9
[INFO] [stdout]    |
[INFO] [stdout] 24 |     pub fn new(value: u8) -> Candidates {
[INFO] [stdout]    |            ^^^ ---------
[INFO] [stdout] help: you can convert an `i32` to a `u8` and panic if the converted value doesn't fit
[INFO] [stdout]    |
[INFO] [stdout] 22 |                 let candidates = Candidates::new(value.try_into().unwrap());
[INFO] [stdout]    |                                                       ++++++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:23:26
[INFO] [stdout]    |
[INFO] [stdout] 23 |                 let cell = Cell::new(candidates);
[INFO] [stdout]    |                            --------- ^^^^^^^^^^ expected `&Candidates`, found `Candidates`
[INFO] [stdout]    |                            |
[INFO] [stdout]    |                            arguments to this function are incorrect
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/cell.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 |     pub fn new(candidates: &'a Candidates) -> Cell {
[INFO] [stdout]    |            ^^^ --------------------------
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]    |
[INFO] [stdout] 23 |                 let cell = Cell::new(&candidates);
[INFO] [stdout]    |                                      +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:25:44
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout]    |                                                        ^ expected `u8`, found `usize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:25:44
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout]    |                                                        ^ expected `u8`, found `usize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:25:50
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout]    |                                                              ^ expected `u8`, found `usize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]   --> src/board.rs:25:50
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout]    |                                                              ^ expected `u8`, found `usize`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]   --> src/board.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout]    |                       ^^^^^^^^^^^ ----  ------------------------ expected `cell::Cell<'_>`, found `Coordinate`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected `Coordinate`, found `cell::Cell<'_>`
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/board.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn update_cell(&self, coordinate: Coordinate, cell: Cell) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] help: swap these arguments
[INFO] [stdout]    |
[INFO] [stdout] 25 -                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout] 25 +                 board.update_cell(Coordinate{ x: j, y: i }, cell);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: arguments to this method are incorrect
[INFO] [stdout]   --> src/board.rs:25:11
[INFO] [stdout]    |
[INFO] [stdout] 25 |                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout]    |                       ^^^^^^^^^^^ ----  ------------------------ expected `cell::Cell<'_>`, found `Coordinate`
[INFO] [stdout]    |                                   |
[INFO] [stdout]    |                                   expected `Coordinate`, found `cell::Cell<'_>`
[INFO] [stdout]    |
[INFO] [stdout] note: method defined here
[INFO] [stdout]   --> src/board.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |     pub fn update_cell(&self, coordinate: Coordinate, cell: Cell) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] help: swap these arguments
[INFO] [stdout]    |
[INFO] [stdout] 25 -                 board.update_cell(cell, Coordinate{ x: j, y: i });
[INFO] [stdout] 25 +                 board.update_cell(Coordinate{ x: j, y: i }, cell);
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `cell::Cell<'_>: Copy` is not satisfied
[INFO] [stdout]   --> src/board.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 |             cells: [[Cell::new(Candidates::new_default()); 9]; 9],
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Copy` is not implemented for `cell::Cell<'_>`
[INFO] [stdout]   --> src/cell.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Cell<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout]    = help: consider using `core::array::from_fn` to initialize the array
[INFO] [stdout]    = help: see https://doc.rust-lang.org/stable/std/array/fn.from_fn.html for more information
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `cell::Cell<'_>: Copy` is not satisfied
[INFO] [stdout]   --> src/board.rs:16:13
[INFO] [stdout]    |
[INFO] [stdout] 16 |             cells: [[Cell::new(Candidates::new_default()); 9]; 9],
[INFO] [stdout]    |                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]    |
[INFO] [stdout] help: the trait `Copy` is not implemented for `cell::Cell<'_>`
[INFO] [stdout]   --> src/cell.rs:8:1
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct Cell<'a> {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    = note: the `Copy` trait is required because this value will be copied for each element of the array
[INFO] [stdout]    = help: consider using `core::array::from_fn` to initialize the array
[INFO] [stdout]    = help: see https://doc.rust-lang.org/stable/std/array/fn.from_fn.html for more information
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `y` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:41:28
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if self.cells[coordinate.y][coordinate.x].contents == Contents::Value { return }
[INFO] [stdout]    |                                  ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `x` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:41:42
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if self.cells[coordinate.y][coordinate.x].contents == Contents::Value { return }
[INFO] [stdout]    |                                                ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `y` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:41:28
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if self.cells[coordinate.y][coordinate.x].contents == Contents::Value { return }
[INFO] [stdout]    |                                  ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `x` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:41:42
[INFO] [stdout]    |
[INFO] [stdout] 41 |         if self.cells[coordinate.y][coordinate.x].contents == Contents::Value { return }
[INFO] [stdout]    |                                                ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `y` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |         self.cells[coordinate.y][coordinate.x] = cell;
[INFO] [stdout]    |                               ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `x` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:45:39
[INFO] [stdout]    |
[INFO] [stdout] 45 |         self.cells[coordinate.y][coordinate.x] = cell;
[INFO] [stdout]    |                                             ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `y` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:45:25
[INFO] [stdout]    |
[INFO] [stdout] 45 |         self.cells[coordinate.y][coordinate.x] = cell;
[INFO] [stdout]    |                               ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `x` of struct `Coordinate` is private
[INFO] [stdout]   --> src/board.rs:45:39
[INFO] [stdout]    |
[INFO] [stdout] 45 |         self.cells[coordinate.y][coordinate.x] = cell;
[INFO] [stdout]    |                                             ^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `cell::Contents`
[INFO] [stdout]   --> src/board.rs:47:20
[INFO] [stdout]    |
[INFO] [stdout] 47 |         if cell.contents == Contents::Value {
[INFO] [stdout]    |            ------------- ^^ --------------- fn(u8) -> cell::Contents {cell::Contents::Value}
[INFO] [stdout]    |            |
[INFO] [stdout]    |            cell::Contents
[INFO] [stdout]    |
[INFO] [stdout] note: an implementation of `PartialEq<fn(u8) -> cell::Contents {cell::Contents::Value}>` might be missing for `cell::Contents`
[INFO] [stdout]   --> src/cell.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub enum Contents {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^ must implement `PartialEq<fn(u8) -> cell::Contents {cell::Contents::Value}>`
[INFO] [stdout] help: use parentheses to construct this tuple variant
[INFO] [stdout]    |
[INFO] [stdout] 47 |         if cell.contents == Contents::Value(/* u8 */) {
[INFO] [stdout]    |                                            ++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `&board::Board<'a>`
[INFO] [stdout]   --> src/board.rs:56:23
[INFO] [stdout]    |
[INFO] [stdout] 56 |         for row in &self.values {
[INFO] [stdout]    |                          ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `answered_count`, `cells`, `fresh_coordinates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `board::Board<'_>`
[INFO] [stdout]   --> src/board.rs:88:61
[INFO] [stdout]    |
[INFO] [stdout] 88 |         assert_eq!(format!("{:x}", 0x01FF), format!("{:x}", board.candidates[3][6]));
[INFO] [stdout]    |                                                                   ^^^^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `answered_count`, `cells`, `fresh_coordinates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `board::Board<'_>`
[INFO] [stdout]   --> src/board.rs:89:61
[INFO] [stdout]    |
[INFO] [stdout] 89 |         assert_eq!(format!("{:x}", 0x0004), format!("{:x}", board.candidates[0][2]));
[INFO] [stdout]    |                                                                   ^^^^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `answered_count`, `cells`, `fresh_coordinates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:30:35
[INFO] [stdout]    |
[INFO] [stdout] 30 |                 possible_candidates &= !board.candidates[y_a][x];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:31:35
[INFO] [stdout]    |
[INFO] [stdout] 31 |                 possible_candidates &= !board.candidates[y_b][x];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 |                     board.candidates[block_exclusion][x] &= !possible_candidates;
[INFO] [stdout]    |                           ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `sudoku_solver` (bin "sudoku_solver") due to 33 previous errors; 1 warning emitted
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:50:35
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 possible_candidates &= !board.candidates[y][x_a];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 possible_candidates &= !board.candidates[y][x_b];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     board.candidates[y][block_exclusion] &= !possible_candidates;
[INFO] [stdout]    |                           ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `board::Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:83:9
[INFO] [stdout]    |
[INFO] [stdout] 83 |         board.candidates = [
[INFO] [stdout]    |               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `board::Board<'_>`
[INFO] [stdout]    --> src/strategies/column_row_exclusion.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 |         ], board.candidates);
[INFO] [stdout]     |                  ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `board::Board<'_>`
[INFO] [stdout]    --> src/strategies/column_row_exclusion.rs:124:9
[INFO] [stdout]     |
[INFO] [stdout] 124 |         board.candidates = [
[INFO] [stdout]     |               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `board::Board<'_>`
[INFO] [stdout]    --> src/strategies/column_row_exclusion.rs:149:12
[INFO] [stdout]     |
[INFO] [stdout] 149 |         ], board.candidates);
[INFO] [stdout]     |                  ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `&mut board::Board<'_>`
[INFO] [stdout]  --> src/strategies/unique_candidate.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |             if board.values[y][x] != 0 { continue }
[INFO] [stdout]   |                      ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 |             let bitmask = board.candidates[y][x];
[INFO] [stdout]    |                                 ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `&mut board::Board<'_>`
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 |                 board.values[y][x] = value;
[INFO] [stdout]    |                       ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `answered_count` of struct `board::Board` is private
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |                 board.answered_count += 1;
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `fresh_coordinates` of struct `board::Board` is private
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 |                 board.fresh_coordinates.push((x, y));
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `board::Board<'_>`
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:40:9
[INFO] [stdout]    |
[INFO] [stdout] 40 |         board.candidates[7][0] = 0x08;
[INFO] [stdout]    |               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `board::Board<'_>`
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 |         ], board.values);
[INFO] [stdout]    |                  ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `fresh_coordinates` of struct `board::Board` is private
[INFO] [stdout]   --> src/main.rs:28:37
[INFO] [stdout]    |
[INFO] [stdout] 28 |     while let Some(Coordinate) = board.fresh_coordinates.pop() {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `board::Board<'_>`
[INFO] [stdout]   --> src/main.rs:85:12
[INFO] [stdout]    |
[INFO] [stdout] 85 |         ], board.values, "\nleft:\n{}\n\nright:\n{}", Board::new(initial_values), board);
[INFO] [stdout]    |                  ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0369]: binary operation `==` cannot be applied to type `cell::Contents`
[INFO] [stdout]   --> src/board.rs:47:20
[INFO] [stdout]    |
[INFO] [stdout] 47 |         if cell.contents == Contents::Value {
[INFO] [stdout]    |            ------------- ^^ --------------- fn(u8) -> cell::Contents {cell::Contents::Value}
[INFO] [stdout]    |            |
[INFO] [stdout]    |            cell::Contents
[INFO] [stdout]    |
[INFO] [stdout] note: an implementation of `PartialEq<fn(u8) -> cell::Contents {cell::Contents::Value}>` might be missing for `cell::Contents`
[INFO] [stdout]   --> src/cell.rs:3:1
[INFO] [stdout]    |
[INFO] [stdout]  3 | pub enum Contents {
[INFO] [stdout]    | ^^^^^^^^^^^^^^^^^ must implement `PartialEq<fn(u8) -> cell::Contents {cell::Contents::Value}>`
[INFO] [stdout] help: use parentheses to construct this tuple variant
[INFO] [stdout]    |
[INFO] [stdout] 47 |         if cell.contents == Contents::Value(/* u8 */) {
[INFO] [stdout]    |                                            ++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `&Board<'a>`
[INFO] [stdout]   --> src/board.rs:56:23
[INFO] [stdout]    |
[INFO] [stdout] 56 |         for row in &self.values {
[INFO] [stdout]    |                          ^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `answered_count`, `cells`, `fresh_coordinates`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0106, E0277, E0308, E0369, E0425, E0432, E0583, E0609, E0615...
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:30:35
[INFO] [stdout]    |
[INFO] [stdout] 30 |                 possible_candidates &= !board.candidates[y_a][x];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0106`.
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:31:35
[INFO] [stdout]    |
[INFO] [stdout] 31 |                 possible_candidates &= !board.candidates[y_b][x];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:38:15
[INFO] [stdout]    |
[INFO] [stdout] 38 |                     board.candidates[block_exclusion][x] &= !possible_candidates;
[INFO] [stdout]    |                           ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:50:35
[INFO] [stdout]    |
[INFO] [stdout] 50 |                 possible_candidates &= !board.candidates[y][x_a];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:51:35
[INFO] [stdout]    |
[INFO] [stdout] 51 |                 possible_candidates &= !board.candidates[y][x_b];
[INFO] [stdout]    |                                               ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/column_row_exclusion.rs:58:15
[INFO] [stdout]    |
[INFO] [stdout] 58 |                     board.candidates[y][block_exclusion] &= !possible_candidates;
[INFO] [stdout]    |                           ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `&mut Board<'_>`
[INFO] [stdout]  --> src/strategies/unique_candidate.rs:8:13
[INFO] [stdout]   |
[INFO] [stdout] 8 |             if board.values[y][x] != 0 { continue }
[INFO] [stdout]   |                      ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `candidates` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:10:24
[INFO] [stdout]    |
[INFO] [stdout] 10 |             let bitmask = board.candidates[y][x];
[INFO] [stdout]    |                                 ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `values` on type `&mut Board<'_>`
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:14:11
[INFO] [stdout]    |
[INFO] [stdout] 14 |                 board.values[y][x] = value;
[INFO] [stdout]    |                       ^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `answered_count` of struct `Board` is private
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:15:11
[INFO] [stdout]    |
[INFO] [stdout] 15 |                 board.answered_count += 1;
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `fresh_coordinates` of struct `Board` is private
[INFO] [stdout]   --> src/strategies/unique_candidate.rs:16:11
[INFO] [stdout]    |
[INFO] [stdout] 16 |                 board.fresh_coordinates.push((x, y));
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0616]: field `fresh_coordinates` of struct `Board` is private
[INFO] [stdout]   --> src/main.rs:28:37
[INFO] [stdout]    |
[INFO] [stdout] 28 |     while let Some(Coordinate) = board.fresh_coordinates.pop() {
[INFO] [stdout]    |                                        ^^^^^^^^^^^^^^^^^ private field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0106, E0277, E0308, E0369, E0425, E0432, E0583, E0609, E0615...
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0106`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `sudoku_solver` (bin "sudoku_solver" test) due to 42 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "f3de92fffb0f5ca6a11597ff3a4fac2c10b1105ccd15035f6a98b607b7cd68b4", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "f3de92fffb0f5ca6a11597ff3a4fac2c10b1105ccd15035f6a98b607b7cd68b4", kill_on_drop: false }`
[INFO] [stdout] f3de92fffb0f5ca6a11597ff3a4fac2c10b1105ccd15035f6a98b607b7cd68b4
