[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/e2213d71b3e001dfb5997b07e26b3b21ccf97fd6 against master#f609b7e0586f81fefb3523e3e17adf779ac416be for pr-129466-2 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FSkipants%2Fsudoku_solver" "/workspace/builds/worker-0-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-0-tc1/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/Skipants/sudoku_solver on toolchain f609b7e0586f81fefb3523e3e17adf779ac416be [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [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-0-tc1/source/Cargo.toml [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" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] cb65146a3ce51a2aa6531744f4947fd8018a3ee0c2640bd4b9fb48ce02fd30c1 [INFO] running `Command { std: "docker" "start" "-a" "cb65146a3ce51a2aa6531744f4947fd8018a3ee0c2640bd4b9fb48ce02fd30c1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "cb65146a3ce51a2aa6531744f4947fd8018a3ee0c2640bd4b9fb48ce02fd30c1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "cb65146a3ce51a2aa6531744f4947fd8018a3ee0c2640bd4b9fb48ce02fd30c1", kill_on_drop: false }` [INFO] [stdout] cb65146a3ce51a2aa6531744f4947fd8018a3ee0c2640bd4b9fb48ce02fd30c1 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-0-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:ceb6ea022f8a89cebbe621bb4987e73a935bd40dfbb726f832cfff4742a5b95a" "/opt/rustwide/cargo-home/bin/cargo" "+f609b7e0586f81fefb3523e3e17adf779ac416be" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] aada0de61b80a4441f29e9353f09dd5f10b25a2b21d62322e85ae1f1bf476e91 [INFO] running `Command { std: "docker" "start" "-a" "aada0de61b80a4441f29e9353f09dd5f10b25a2b21d62322e85ae1f1bf476e91", kill_on_drop: false }` [INFO] [stderr] warning: no edition set: defaulting to the 2015 edition while the latest is 2021 [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[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[E0106]: missing lifetime specifier [INFO] [stdout] --> src/main.rs:16:53 [INFO] [stdout] | [INFO] [stdout] 16 | fn fill_board_from_file(filename: String) -> Result { [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, std::io::Error> { [INFO] [stdout] | +++++++++ [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 { [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, std::io::Error> { [INFO] [stdout] | +++++++++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0425]: cannot find function `solve` in module `strategies::sole_candidate` [INFO] [stdout] --> src/main.rs:31:31 [INFO] [stdout] | [INFO] [stdout] 31 | strategies::sole_candidate::solve(board, x, y); [INFO] [stdout] | ^^^^^ not found in `strategies::sole_candidate` [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these functions [INFO] [stdout] | [INFO] [stdout] 3 + use strategies::column_row_exclusion::solve; [INFO] [stdout] | [INFO] [stdout] 3 + use strategies::unique_candidate::solve; [INFO] [stdout] | [INFO] [stdout] help: if you import `solve`, refer to it directly [INFO] [stdout] | [INFO] [stdout] 31 - strategies::sole_candidate::solve(board, x, y); [INFO] [stdout] 31 + solve(board, x, y); [INFO] [stdout] | [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: elided lifetime has a name [INFO] [stdout] --> src/cell.rs:14:44 [INFO] [stdout] | [INFO] [stdout] 13 | impl<'a> Cell<'a> { [INFO] [stdout] | -- lifetime `'a` declared here [INFO] [stdout] 14 | pub fn new(candidates: &'a Candidates) -> Cell { [INFO] [stdout] | ^^^^ this elided lifetime gets resolved as `'a` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [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 [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] error[E0425]: cannot find function `solve` in module `strategies::sole_candidate` [INFO] [stdout] --> src/main.rs:31:31 [INFO] [stdout] | [INFO] [stdout] 31 | strategies::sole_candidate::solve(board, x, y); [INFO] [stdout] | ^^^^^ not found in `strategies::sole_candidate` [INFO] [stdout] | [INFO] [stdout] help: consider importing one of these functions [INFO] [stdout] | [INFO] [stdout] 3 + use strategies::column_row_exclusion::solve; [INFO] [stdout] | [INFO] [stdout] 3 + use strategies::unique_candidate::solve; [INFO] [stdout] | [INFO] [stdout] help: if you import `solve`, refer to it directly [INFO] [stdout] | [INFO] [stdout] 31 - strategies::sole_candidate::solve(board, x, y); [INFO] [stdout] 31 + solve(board, x, y); [INFO] [stdout] | [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: elided lifetime has a name [INFO] [stdout] --> src/cell.rs:14:44 [INFO] [stdout] | [INFO] [stdout] 13 | impl<'a> Cell<'a> { [INFO] [stdout] | -- lifetime `'a` declared here [INFO] [stdout] 14 | pub fn new(candidates: &'a Candidates) -> Cell { [INFO] [stdout] | ^^^^ this elided lifetime gets resolved as `'a` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(elided_named_lifetimes)]` on by default [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 [INFO] [stdout] = note: `#[warn(ellipsis_inclusive_range_patterns)]` 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[E0609]: no field `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] | ^^^^^ unknown field [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[E0609]: no field `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] | ^^^^^ unknown field [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[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] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `cell::Cell<'_>` [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] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `cell::Cell<'_>` [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[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: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: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(Coordinate{ x: j, y: i }, cell); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [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[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 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 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[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(Coordinate{ x: j, y: i }, cell); [INFO] [stdout] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [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[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[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 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 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] 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] 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 `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<'_>` [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 `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 `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[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] [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] [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[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] 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: aborting due to 34 previous errors; 2 warnings emitted [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] [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] [stderr] error: could not compile `sudoku_solver` (bin "sudoku_solver") due to 35 previous errors; 2 warnings emitted [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stdout] error: aborting due to 43 previous errors; 2 warnings emitted [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 44 previous errors; 2 warnings emitted [INFO] running `Command { std: "docker" "inspect" "aada0de61b80a4441f29e9353f09dd5f10b25a2b21d62322e85ae1f1bf476e91", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "aada0de61b80a4441f29e9353f09dd5f10b25a2b21d62322e85ae1f1bf476e91", kill_on_drop: false }` [INFO] [stdout] aada0de61b80a4441f29e9353f09dd5f10b25a2b21d62322e85ae1f1bf476e91