[INFO] fetching crate rs_sudoku 0.1.2...
[INFO] testing rs_sudoku-0.1.2 against beta-2026-04-21 for beta-1.96-2
[INFO] extracting crate rs_sudoku 0.1.2 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate rs_sudoku 0.1.2
[INFO] finished tweaking crates.io crate rs_sudoku 0.1.2
[INFO] tweaked toml for crates.io crate rs_sudoku 0.1.2 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rs_sudoku 0.1.2 on toolchain beta-2026-04-21
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 53 packages to latest compatible versions
[INFO] [stderr]       Adding criterion v0.2.11 (available: v0.8.2)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+beta-2026-04-21" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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" "+beta-2026-04-21" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 8de813854e21ac743b46cb37450da14d465a4b51ee849e94a77e5bd261028c75
[INFO] running `Command { std: "docker" "start" "-a" "8de813854e21ac743b46cb37450da14d465a4b51ee849e94a77e5bd261028c75", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "8de813854e21ac743b46cb37450da14d465a4b51ee849e94a77e5bd261028c75", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8de813854e21ac743b46cb37450da14d465a4b51ee849e94a77e5bd261028c75", kill_on_drop: false }`
[INFO] [stdout] 8de813854e21ac743b46cb37450da14d465a4b51ee849e94a77e5bd261028c75
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fea68ebcc78d0667fc3b6645acb2d25caad4650b9148011059f8ee75cad02965
[INFO] running `Command { std: "docker" "start" "-a" "fea68ebcc78d0667fc3b6645acb2d25caad4650b9148011059f8ee75cad02965", kill_on_drop: false }`
[INFO] [stderr]    Compiling rs_sudoku v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> src/candidate_set.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         (self.0 & !SOLVED)
[INFO] [stdout]    |         ^                ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 60 -         (self.0 & !SOLVED)
[INFO] [stdout] 60 +         self.0 & !SOLVED 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/slow_index.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub gp: Box<GenPosition>,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) 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(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub gp: Box<dyn GenPosition>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/slow_index.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub gp: Box<GenPosition>,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) 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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub gp: Box<dyn GenPosition>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/slow_index.rs:106:43
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn set_gen_position(self, gp: Box<GenPosition>) -> Self {
[INFO] [stdout]     |                                           ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) 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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn set_gen_position(self, gp: Box<dyn GenPosition>) -> Self {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/box_line.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 |             .into_iter()
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]    = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 13 -             .into_iter()
[INFO] [stdout] 13 +             .iter()
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 12 -         [Grouping::RowType, Grouping::ColumnType]
[INFO] [stdout] 13 -             .into_iter()
[INFO] [stdout] 12 +         IntoIterator::into_iter([Grouping::RowType, Grouping::ColumnType])
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/box_line.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 |                         .into_iter()
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 24 -                         .into_iter()
[INFO] [stdout] 24 +                         .iter()
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 23 -                     let removed: usize = val_pos
[INFO] [stdout] 24 -                         .into_iter()
[INFO] [stdout] 23 +                     let removed: usize = IntoIterator::into_iter(val_pos)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/bin/pre_compute_index.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | type IterFn = Fn(usize) -> RelatedIndexIterator;
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) 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(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 3 | type IterFn = dyn Fn(usize) -> RelatedIndexIterator;
[INFO] [stdout]   |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.97s
[INFO] running `Command { std: "docker" "inspect" "fea68ebcc78d0667fc3b6645acb2d25caad4650b9148011059f8ee75cad02965", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fea68ebcc78d0667fc3b6645acb2d25caad4650b9148011059f8ee75cad02965", kill_on_drop: false }`
[INFO] [stdout] fea68ebcc78d0667fc3b6645acb2d25caad4650b9148011059f8ee75cad02965
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] fabfd712401687e10e9ba210fec4f43814cb8063ed5ef3ee7aee71e6d703467b
[INFO] running `Command { std: "docker" "start" "-a" "fabfd712401687e10e9ba210fec4f43814cb8063ed5ef3ee7aee71e6d703467b", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stderr]    Compiling proc-macro2 v1.0.106
[INFO] [stderr]    Compiling semver v1.0.28
[INFO] [stderr]    Compiling quote v1.0.45
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling rand_core v0.4.2
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling csv-core v0.1.13
[INFO] [stderr]    Compiling textwrap v0.11.0
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> src/candidate_set.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         (self.0 & !SOLVED)
[INFO] [stdout]    |         ^                ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 60 -         (self.0 & !SOLVED)
[INFO] [stdout] 60 +         self.0 & !SOLVED 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/slow_index.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub gp: Box<GenPosition>,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) 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(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub gp: Box<dyn GenPosition>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/slow_index.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub gp: Box<GenPosition>,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) 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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub gp: Box<dyn GenPosition>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/slow_index.rs:106:43
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn set_gen_position(self, gp: Box<GenPosition>) -> Self {
[INFO] [stdout]     |                                           ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) 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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn set_gen_position(self, gp: Box<dyn GenPosition>) -> Self {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/box_line.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 |             .into_iter()
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]    = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 13 -             .into_iter()
[INFO] [stdout] 13 +             .iter()
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 12 -         [Grouping::RowType, Grouping::ColumnType]
[INFO] [stdout] 13 -             .into_iter()
[INFO] [stdout] 12 +         IntoIterator::into_iter([Grouping::RowType, Grouping::ColumnType])
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/box_line.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 |                         .into_iter()
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 24 -                         .into_iter()
[INFO] [stdout] 24 +                         .iter()
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 23 -                     let removed: usize = val_pos
[INFO] [stdout] 24 -                         .into_iter()
[INFO] [stdout] 23 +                     let removed: usize = IntoIterator::into_iter(val_pos)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling clap v2.34.0
[INFO] [stderr]    Compiling itertools v0.8.2
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling rand_core v0.3.1
[INFO] [stderr]    Compiling rand_os v0.1.3
[INFO] [stderr]    Compiling rand_xoshiro v0.1.0
[INFO] [stderr]    Compiling rustc_version v0.4.1
[INFO] [stderr]    Compiling cast v0.2.7
[INFO] [stderr]    Compiling criterion-plot v0.3.1
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling csv v1.4.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling tinytemplate v1.2.1
[INFO] [stderr]    Compiling criterion v0.2.11
[INFO] [stderr]    Compiling rs_sudoku v0.1.2 (/opt/rustwide/workdir)
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]  --> src/bin/pre_compute_index.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | type IterFn = Fn(usize) -> RelatedIndexIterator;
[INFO] [stdout]   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = warning: this is accepted in the current edition (Rust 2018) 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(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]   |
[INFO] [stdout] 3 | type IterFn = dyn Fn(usize) -> RelatedIndexIterator;
[INFO] [stdout]   |               +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary parentheses around block return value
[INFO] [stdout]   --> src/candidate_set.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |         (self.0 & !SOLVED)
[INFO] [stdout]    |         ^                ^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: remove these parentheses
[INFO] [stdout]    |
[INFO] [stdout] 60 -         (self.0 & !SOLVED)
[INFO] [stdout] 60 +         self.0 & !SOLVED 
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/slow_index.rs:71:17
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub gp: Box<GenPosition>,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) 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(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 71 |     pub gp: Box<dyn GenPosition>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]   --> src/slow_index.rs:89:17
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub gp: Box<GenPosition>,
[INFO] [stdout]    |                 ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this is accepted in the current edition (Rust 2018) 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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]    |
[INFO] [stdout] 89 |     pub gp: Box<dyn GenPosition>,
[INFO] [stdout]    |                 +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stdout]    --> src/slow_index.rs:106:43
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn set_gen_position(self, gp: Box<GenPosition>) -> Self {
[INFO] [stdout]     |                                           ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = warning: this is accepted in the current edition (Rust 2018) 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] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn set_gen_position(self, gp: Box<dyn GenPosition>) -> Self {
[INFO] [stdout]     |                                           +++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/box_line.rs:13:14
[INFO] [stdout]    |
[INFO] [stdout] 13 |             .into_iter()
[INFO] [stdout]    |              ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout]    = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 13 -             .into_iter()
[INFO] [stdout] 13 +             .iter()
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 12 -         [Grouping::RowType, Grouping::ColumnType]
[INFO] [stdout] 13 -             .into_iter()
[INFO] [stdout] 12 +         IntoIterator::into_iter([Grouping::RowType, Grouping::ColumnType])
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stdout]   --> src/box_line.rs:24:26
[INFO] [stdout]    |
[INFO] [stdout] 24 |                         .into_iter()
[INFO] [stdout]    |                          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = warning: this changes meaning in Rust 2021
[INFO] [stdout]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stdout] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stdout]    |
[INFO] [stdout] 24 -                         .into_iter()
[INFO] [stdout] 24 +                         .iter()
[INFO] [stdout]    |
[INFO] [stdout] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stdout]    |
[INFO] [stdout] 23 -                     let removed: usize = val_pos
[INFO] [stdout] 24 -                         .into_iter()
[INFO] [stdout] 23 +                     let removed: usize = IntoIterator::into_iter(val_pos)
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 19.28s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: criterion v0.2.11
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] running `Command { std: "docker" "inspect" "fabfd712401687e10e9ba210fec4f43814cb8063ed5ef3ee7aee71e6d703467b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "fabfd712401687e10e9ba210fec4f43814cb8063ed5ef3ee7aee71e6d703467b", kill_on_drop: false }`
[INFO] [stdout] fabfd712401687e10e9ba210fec4f43814cb8063ed5ef3ee7aee71e6d703467b
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-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=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-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" "+beta-2026-04-21" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 3350cc97157a0064522f3c38a94b7d547a873646b3e191bc216aa2248974c46a
[INFO] running `Command { std: "docker" "start" "-a" "3350cc97157a0064522f3c38a94b7d547a873646b3e191bc216aa2248974c46a", kill_on_drop: false }`
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]   --> src/candidate_set.rs:60:9
[INFO] [stderr]    |
[INFO] [stderr] 60 |         (self.0 & !SOLVED)
[INFO] [stderr]    |         ^                ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 60 -         (self.0 & !SOLVED)
[INFO] [stderr] 60 +         self.0 & !SOLVED 
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/slow_index.rs:71:17
[INFO] [stderr]    |
[INFO] [stderr] 71 |     pub gp: Box<GenPosition>,
[INFO] [stderr]    |                 ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]    = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 71 |     pub gp: Box<dyn GenPosition>,
[INFO] [stderr]    |                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]   --> src/slow_index.rs:89:17
[INFO] [stderr]    |
[INFO] [stderr] 89 |     pub gp: Box<GenPosition>,
[INFO] [stderr]    |                 ^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]    |
[INFO] [stderr] 89 |     pub gp: Box<dyn GenPosition>,
[INFO] [stderr]    |                 +++
[INFO] [stderr] 
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]    --> src/slow_index.rs:106:43
[INFO] [stderr]     |
[INFO] [stderr] 106 |     pub fn set_gen_position(self, gp: Box<GenPosition>) -> Self {
[INFO] [stderr]     |                                           ^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]     |
[INFO] [stderr] 106 |     pub fn set_gen_position(self, gp: Box<dyn GenPosition>) -> Self {
[INFO] [stderr]     |                                           +++
[INFO] [stderr] 
[INFO] [stderr] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stderr]   --> src/box_line.rs:13:14
[INFO] [stderr]    |
[INFO] [stderr] 13 |             .into_iter()
[INFO] [stderr]    |              ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this changes meaning in Rust 2021
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stderr]    = note: `#[warn(array_into_iter)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stderr]    |
[INFO] [stderr] 13 -             .into_iter()
[INFO] [stderr] 13 +             .iter()
[INFO] [stderr]    |
[INFO] [stderr] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stderr]    |
[INFO] [stderr] 12 -         [Grouping::RowType, Grouping::ColumnType]
[INFO] [stderr] 13 -             .into_iter()
[INFO] [stderr] 12 +         IntoIterator::into_iter([Grouping::RowType, Grouping::ColumnType])
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: this method call resolves to `<&[T; N] as IntoIterator>::into_iter` (due to backwards compatibility), but will resolve to `<[T; N] as IntoIterator>::into_iter` in Rust 2021
[INFO] [stderr]   --> src/box_line.rs:24:26
[INFO] [stderr]    |
[INFO] [stderr] 24 |                         .into_iter()
[INFO] [stderr]    |                          ^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = warning: this changes meaning in Rust 2021
[INFO] [stderr]    = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/IntoIterator-for-arrays.html>
[INFO] [stderr] help: use `.iter()` instead of `.into_iter()` to avoid ambiguity
[INFO] [stderr]    |
[INFO] [stderr] 24 -                         .into_iter()
[INFO] [stderr] 24 +                         .iter()
[INFO] [stderr]    |
[INFO] [stderr] help: or use `IntoIterator::into_iter(..)` instead of `.into_iter()` to explicitly iterate by value
[INFO] [stderr]    |
[INFO] [stderr] 23 -                     let removed: usize = val_pos
[INFO] [stderr] 24 -                         .into_iter()
[INFO] [stderr] 23 +                     let removed: usize = IntoIterator::into_iter(val_pos)
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stderr] warning: `rs_sudoku` (lib) generated 6 warnings (run `cargo fix --lib -p rs_sudoku` to apply 6 suggestions)
[INFO] [stderr] warning: trait objects without an explicit `dyn` are deprecated
[INFO] [stderr]  --> src/bin/pre_compute_index.rs:3:15
[INFO] [stderr]   |
[INFO] [stderr] 3 | type IterFn = Fn(usize) -> RelatedIndexIterator;
[INFO] [stderr]   |               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = warning: this is accepted in the current edition (Rust 2018) but is a hard error in Rust 2021!
[INFO] [stderr]   = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2021/warnings-promoted-to-error.html>
[INFO] [stderr]   = note: `#[warn(bare_trait_objects)]` (part of `#[warn(rust_2021_compatibility)]`) on by default
[INFO] [stderr] help: if this is a dyn-compatible trait, use `dyn`
[INFO] [stderr]   |
[INFO] [stderr] 3 | type IterFn = dyn Fn(usize) -> RelatedIndexIterator;
[INFO] [stderr]   |               +++
[INFO] [stderr] 
[INFO] [stderr] warning: `rs_sudoku` (bin "pre_compute_index" test) generated 1 warning (run `cargo fix --bin "pre_compute_index" -p rs_sudoku --tests` to apply 1 suggestion)
[INFO] [stderr] warning: `rs_sudoku` (lib test) generated 6 warnings (6 duplicates)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.14s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: criterion v0.2.11
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 1`
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rs_sudoku-70c60756f754e300)
[INFO] [stdout] 
[INFO] [stdout] running 29 tests
[INFO] [stdout] test candidate_set::tests::test_iterator_one ... ok
[INFO] [stdout] test candidate_set::tests::test_new_numbers ... ok
[INFO] [stdout] test candidate_set::tests::test_new_none ... ok
[INFO] [stdout] test candidate_set::tests::test_new_zero ... ok
[INFO] [stdout] test fast_index::tests::test_iter ... ok
[INFO] [stdout] test parse::tests::test_good_multiline ... ok
[INFO] [stdout] test parse::tests::test_parse_good_oneline ... ok
[INFO] [stdout] test parse::tests::test_not_solved ... ok
[INFO] [stdout] test remove_candidates::tests::test_remove_candidates ... ok
[INFO] [stdout] test parse::tests::error ... ok
[INFO] [stdout] test parse::tests::test_weird ... ok
[INFO] [stdout] test slow_index::tests::test_all_col ... ok
[INFO] [stdout] test slow_index::tests::test_all_row ... ok
[INFO] [stdout] test solve::tests::test_bad_fuzz_a ... ok
[INFO] [stdout] test slow_index::tests::test_col_quad_iter ... ok
[INFO] [stdout] test slow_index::tests::test_box_quad_iter ... ok
[INFO] [stdout] test slow_index::tests::test_first_box ... ok
[INFO] [stdout] test slow_index::tests::test_first_col ... ok
[INFO] [stdout] test solve::tests::test_try_solve_easy ... ok
[INFO] [stdout] test solve::tests::test_another_line_box ... ok
[INFO] [stdout] test slow_index::tests::test_row_quad_iter ... ok
[INFO] [stdout] test solve::tests::test_find_naked ... ok
[INFO] [stdout] test solve::tests::test_box_line ... ok
[INFO] [stdout] test slow_index::tests::test_all_box ... ok
[INFO] [stdout] test slow_index::tests::test_first_row ... ok
[INFO] [stdout] test candidate_set::tests::test_multiple ... ok
[INFO] [stdout] test fast_index::tests::test_comb_iter ... ok
[INFO] [stdout] test solve::tests::test_pointing ... ok
[INFO] [stdout] test solve::tests::test_try_solve_lots ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/pre_compute_index.rs (/opt/rustwide/target/debug/deps/pre_compute_index-db3ffc2e5c03bf02)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]      Running unittests src/bin/try_solve.rs (/opt/rustwide/target/debug/deps/try_solve-94d2064985243b28)
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rs_sudoku
[INFO] [stderr] warning: unnecessary parentheses around block return value
[INFO] [stderr]   --> src/candidate_set.rs:60:9
[INFO] [stderr]    |
[INFO] [stderr] 60 |         (self.0 & !SOLVED)
[INFO] [stderr]    |         ^                ^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_parens)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] help: remove these parentheses
[INFO] [stderr]    |
[INFO] [stderr] 60 -         (self.0 & !SOLVED)
[INFO] [stderr] 60 +         self.0 & !SOLVED 
[INFO] [stderr]    |
[INFO] [stderr] 
[INFO] [stdout] 
[INFO] [stdout] running 0 tests
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
[INFO] [stdout] 
[INFO] [stderr] warning: 1 warning emitted
[INFO] [stderr] 
[INFO] running `Command { std: "docker" "inspect" "3350cc97157a0064522f3c38a94b7d547a873646b3e191bc216aa2248974c46a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "3350cc97157a0064522f3c38a94b7d547a873646b3e191bc216aa2248974c46a", kill_on_drop: false }`
[INFO] [stdout] 3350cc97157a0064522f3c38a94b7d547a873646b3e191bc216aa2248974c46a
