[INFO] fetching crate rs_sudoku 0.1.2... [INFO] linting rs_sudoku-0.1.2 against nightly for clippy-nonminimal_bool-denied [INFO] extracting crate rs_sudoku 0.1.2 into /workspace/builds/worker-4-tc1/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-4-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate rs_sudoku 0.1.2 on toolchain nightly [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+nightly" "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" "+nightly" "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" "+nightly" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 26fcca50e861e064460b42adaae3e0d2e19fba02c700884b999175557fd253dd [INFO] running `Command { std: "docker" "start" "-a" "26fcca50e861e064460b42adaae3e0d2e19fba02c700884b999175557fd253dd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "26fcca50e861e064460b42adaae3e0d2e19fba02c700884b999175557fd253dd", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "26fcca50e861e064460b42adaae3e0d2e19fba02c700884b999175557fd253dd", kill_on_drop: false }` [INFO] [stdout] 26fcca50e861e064460b42adaae3e0d2e19fba02c700884b999175557fd253dd [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-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:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+nightly" "clippy" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 0ca88a9de4392f4b3b977ed0cfc1ff264af70ce5c8517960e5dcd46fef74cfe0 [INFO] running `Command { std: "docker" "start" "-a" "0ca88a9de4392f4b3b977ed0cfc1ff264af70ce5c8517960e5dcd46fef74cfe0", kill_on_drop: false }` [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling quote v1.0.45 [INFO] [stderr] Checking rand_core v0.4.2 [INFO] [stderr] Checking csv-core v0.1.13 [INFO] [stderr] Checking itertools v0.8.2 [INFO] [stderr] Compiling proc-macro2 v1.0.106 [INFO] [stderr] Compiling cast v0.2.7 [INFO] [stderr] Checking atty v0.2.14 [INFO] [stderr] Checking clap v2.34.0 [INFO] [stderr] Checking rs_sudoku v0.1.2 (/opt/rustwide/workdir) [INFO] [stderr] Checking rayon v1.11.0 [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, [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 [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, [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, [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 [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 89 | pub gp: Box, [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) -> 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 [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) -> Self { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking rand_core v0.3.1 [INFO] [stderr] Checking rand_os v0.1.3 [INFO] [stderr] Checking rand_xoshiro v0.1.0 [INFO] [stdout] warning: all variants have the same postfix: `Type` [INFO] [stdout] --> src/index.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / pub enum Grouping { [INFO] [stdout] 4 | | RowType, [INFO] [stdout] 5 | | ColumnType, [INFO] [stdout] 6 | | BoxType, [INFO] [stdout] 7 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/candidate_set.rs:79:1 [INFO] [stdout] | [INFO] [stdout] 79 | impl Into for CandidateSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 79 ~ impl From for usize { [INFO] [stdout] 80 ~ fn from(val: CandidateSet) -> Self { [INFO] [stdout] 81 ~ val.0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/box_line.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | / [Grouping::RowType, Grouping::ColumnType] [INFO] [stdout] 13 | | .into_iter() [INFO] [stdout] 14 | | .find_map(|g| { [INFO] [stdout] 15 | | (0..9).find_map(|g_idx| { [INFO] [stdout] ... | [INFO] [stdout] 46 | | }) [INFO] [stdout] 47 | | .unwrap_or_else(|| (0, 0)) [INFO] [stdout] | |______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 47 - .unwrap_or_else(|| (0, 0)) [INFO] [stdout] 47 + .unwrap_or((0, 0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `array` [INFO] [stdout] --> src/box_line.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `array` [INFO] [stdout] --> src/box_line.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/pointing_pairs.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | / (0..9) [INFO] [stdout] 14 | | .find_map(|box_i| { [INFO] [stdout] 15 | | let start_row = g.start_row(box_i); [INFO] [stdout] 16 | | let start_col = g.start_column(box_i); [INFO] [stdout] ... | [INFO] [stdout] 84 | | }) [INFO] [stdout] 85 | | .unwrap_or_else(|| (0, 0)) [INFO] [stdout] | |______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 85 - .unwrap_or_else(|| (0, 0)) [INFO] [stdout] 85 + .unwrap_or((0, 0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/subset.rs:34:22 [INFO] [stdout] | [INFO] [stdout] 34 | .filter(|i| !subset.iter().any(|s| *i == *s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `subset.contains(i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/subset.rs:97:59 [INFO] [stdout] | [INFO] [stdout] 97 | remove_candidates(sudoku, mask, i.filter(|p| !v.iter().any(|s| *s == *p))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `v.contains(p)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/subset.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | / (2..5) [INFO] [stdout] 110 | | .find_map(|sub_size| { [INFO] [stdout] 111 | | // Go throught all the groupings [INFO] [stdout] 112 | | ALL_GROUPINGS.iter().find_map(|g| { [INFO] [stdout] ... | [INFO] [stdout] 125 | | .unwrap_or_else(|| (0, 0)) [INFO] [stdout] | |______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 125 - .unwrap_or_else(|| (0, 0)) [INFO] [stdout] 125 + .unwrap_or((0, 0)) [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 [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 [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 [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] Compiling syn v2.0.117 [INFO] [stderr] Checking criterion-plot v0.3.1 [INFO] [stderr] Checking serde_json v1.0.149 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking csv v1.4.0 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Checking tinytemplate v1.2.1 [INFO] [stderr] Checking criterion v0.2.11 [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 [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: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_comb_compare.rs:15:26 [INFO] [stdout] | [INFO] [stdout] 15 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_comb_compare.rs:14:48 [INFO] [stdout] | [INFO] [stdout] 14 | .map(|v| v.into_iter().fold(0, |a, b| a + b)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_comb_compare.rs:24:22 [INFO] [stdout] | [INFO] [stdout] 24 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_comb_compare.rs:23:44 [INFO] [stdout] | [INFO] [stdout] 23 | .map(|v| v.into_iter().fold(0, |a, b| a + b)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_compare.rs:13:18 [INFO] [stdout] | [INFO] [stdout] 13 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] = note: `#[warn(clippy::unnecessary_fold)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> benches/iter_compare.rs:10:27 [INFO] [stdout] | [INFO] [stdout] 10 | incr: 0 as usize, [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_compare.rs:20:18 [INFO] [stdout] | [INFO] [stdout] 20 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/iter_compare.rs:19:27 [INFO] [stdout] | [INFO] [stdout] 19 | .flat_map(|idx| fast_index::box_iter(idx)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `fast_index::box_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] = note: `#[warn(clippy::redundant_closure)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_compare.rs:31:18 [INFO] [stdout] | [INFO] [stdout] 31 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> benches/iter_compare.rs:28:27 [INFO] [stdout] | [INFO] [stdout] 28 | incr: 0 as usize, [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_compare.rs:38:18 [INFO] [stdout] | [INFO] [stdout] 38 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/iter_compare.rs:37:27 [INFO] [stdout] | [INFO] [stdout] 37 | .flat_map(|idx| fast_index::column_iter(idx)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `fast_index::column_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_compare.rs:48:18 [INFO] [stdout] | [INFO] [stdout] 48 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> benches/iter_compare.rs:45:27 [INFO] [stdout] | [INFO] [stdout] 45 | incr: 0 as usize, [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.fold` can be written more succinctly using another method [INFO] [stdout] --> benches/iter_compare.rs:55:18 [INFO] [stdout] | [INFO] [stdout] 55 | .fold(0, |a, b| a + b) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ help: try: `sum::()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_fold [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: redundant closure [INFO] [stdout] --> benches/iter_compare.rs:54:27 [INFO] [stdout] | [INFO] [stdout] 54 | .flat_map(|idx| fast_index::row_iter(idx)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace the closure with the function itself: `fast_index::row_iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_closure [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, [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 [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, [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, [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 [INFO] [stdout] help: if this is a dyn-compatible trait, use `dyn` [INFO] [stdout] | [INFO] [stdout] 89 | pub gp: Box, [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) -> 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 [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) -> Self { [INFO] [stdout] | +++ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/slow_index.rs:194:19 [INFO] [stdout] | [INFO] [stdout] 194 | incr: 0 as usize, [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] = note: `#[warn(clippy::unnecessary_cast)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: casting integer literal to `usize` is unnecessary [INFO] [stdout] --> src/slow_index.rs:206:19 [INFO] [stdout] | [INFO] [stdout] 206 | incr: 0 as usize, [INFO] [stdout] | ^^^^^^^^^^ help: try: `0_usize` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_cast [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: all variants have the same postfix: `Type` [INFO] [stdout] --> src/index.rs:3:1 [INFO] [stdout] | [INFO] [stdout] 3 | / pub enum Grouping { [INFO] [stdout] 4 | | RowType, [INFO] [stdout] 5 | | ColumnType, [INFO] [stdout] 6 | | BoxType, [INFO] [stdout] 7 | | } [INFO] [stdout] | |_^ [INFO] [stdout] | [INFO] [stdout] = help: remove the postfixes and use full paths to the variants instead of glob imports [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#enum_variant_names [INFO] [stdout] = note: `#[warn(clippy::enum_variant_names)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: an implementation of `From` is preferred since it gives you `Into<_>` for free where the reverse isn't true [INFO] [stdout] --> src/candidate_set.rs:79:1 [INFO] [stdout] | [INFO] [stdout] 79 | impl Into for CandidateSet { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: `impl From for Foreign` is allowed by the orphan rules, for more information see [INFO] [stdout] https://doc.rust-lang.org/reference/items/implementations.html#trait-implementation-coherence [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#from_over_into [INFO] [stdout] = note: `#[warn(clippy::from_over_into)]` on by default [INFO] [stdout] help: replace the `Into` implementation with `From` [INFO] [stdout] | [INFO] [stdout] 79 ~ impl From for usize { [INFO] [stdout] 80 ~ fn from(val: CandidateSet) -> Self { [INFO] [stdout] 81 ~ val.0 [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/candidate_set.rs:152:13 [INFO] [stdout] | [INFO] [stdout] 152 | assert_eq!(true, p.is_solved()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] = note: `#[warn(clippy::bool_assert_comparison)]` on by default [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 152 - assert_eq!(true, p.is_solved()); [INFO] [stdout] 152 + assert!(p.is_solved()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this assertion is always `false` [INFO] [stdout] --> src/candidate_set.rs:161:17 [INFO] [stdout] | [INFO] [stdout] 161 | assert!(false); [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: replace this with `panic!()` or `unreachable!()` [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_constants [INFO] [stdout] = note: `#[warn(clippy::assertions_on_constants)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parse.rs:47:17 [INFO] [stdout] | [INFO] [stdout] 47 | assert!(!r.is_ok()) [INFO] [stdout] | ^^^^^^^^^^ help: try: `r.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] = note: `#[warn(clippy::nonminimal_bool)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/parse.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 65 | assert_eq!(false, p.is_solved()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 65 - assert_eq!(false, p.is_solved()); [INFO] [stdout] 65 + assert!(!p.is_solved()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this boolean expression can be simplified [INFO] [stdout] --> src/parse.rs:72:26 [INFO] [stdout] | [INFO] [stdout] 72 | assert_eq!(true, !p.is_ok()); [INFO] [stdout] | ^^^^^^^^^^ help: try: `p.is_err()` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/parse.rs:72:9 [INFO] [stdout] | [INFO] [stdout] 72 | assert_eq!(true, !p.is_ok()); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 72 - assert_eq!(true, !p.is_ok()); [INFO] [stdout] 72 + assert!(!p.is_ok()); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/box_line.rs:12:9 [INFO] [stdout] | [INFO] [stdout] 12 | / [Grouping::RowType, Grouping::ColumnType] [INFO] [stdout] 13 | | .into_iter() [INFO] [stdout] 14 | | .find_map(|g| { [INFO] [stdout] 15 | | (0..9).find_map(|g_idx| { [INFO] [stdout] ... | [INFO] [stdout] 46 | | }) [INFO] [stdout] 47 | | .unwrap_or_else(|| (0, 0)) [INFO] [stdout] | |______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] = note: `#[warn(clippy::unnecessary_lazy_evaluations)]` on by default [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 47 - .unwrap_or_else(|| (0, 0)) [INFO] [stdout] 47 + .unwrap_or((0, 0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `array` [INFO] [stdout] --> src/box_line.rs:13:14 [INFO] [stdout] | [INFO] [stdout] 13 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] = note: `#[warn(clippy::into_iter_on_ref)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: this `.into_iter()` call is equivalent to `.iter()` and will not consume the `array` [INFO] [stdout] --> src/box_line.rs:24:26 [INFO] [stdout] | [INFO] [stdout] 24 | .into_iter() [INFO] [stdout] | ^^^^^^^^^ help: call directly: `iter` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#into_iter_on_ref [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/pointing_pairs.rs:13:9 [INFO] [stdout] | [INFO] [stdout] 13 | / (0..9) [INFO] [stdout] 14 | | .find_map(|box_i| { [INFO] [stdout] 15 | | let start_row = g.start_row(box_i); [INFO] [stdout] 16 | | let start_col = g.start_column(box_i); [INFO] [stdout] ... | [INFO] [stdout] 84 | | }) [INFO] [stdout] 85 | | .unwrap_or_else(|| (0, 0)) [INFO] [stdout] | |______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 85 - .unwrap_or_else(|| (0, 0)) [INFO] [stdout] 85 + .unwrap_or((0, 0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/subset.rs:34:22 [INFO] [stdout] | [INFO] [stdout] 34 | .filter(|i| !subset.iter().any(|s| *i == *s)) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `subset.contains(i)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] = note: `#[warn(clippy::manual_contains)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: using `contains()` instead of `iter().any()` is more efficient [INFO] [stdout] --> src/subset.rs:97:59 [INFO] [stdout] | [INFO] [stdout] 97 | remove_candidates(sudoku, mask, i.filter(|p| !v.iter().any(|s| *s == *p))) [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: try: `v.contains(p)` [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#manual_contains [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unnecessary closure used to substitute value for `Option::None` [INFO] [stdout] --> src/subset.rs:109:9 [INFO] [stdout] | [INFO] [stdout] 109 | / (2..5) [INFO] [stdout] 110 | | .find_map(|sub_size| { [INFO] [stdout] 111 | | // Go throught all the groupings [INFO] [stdout] 112 | | ALL_GROUPINGS.iter().find_map(|g| { [INFO] [stdout] ... | [INFO] [stdout] 125 | | .unwrap_or_else(|| (0, 0)) [INFO] [stdout] | |______________________________________^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_lazy_evaluations [INFO] [stdout] help: use `unwrap_or` instead [INFO] [stdout] | [INFO] [stdout] 125 - .unwrap_or_else(|| (0, 0)) [INFO] [stdout] 125 + .unwrap_or((0, 0)) [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/solve.rs:116:9 [INFO] [stdout] | [INFO] [stdout] 116 | assert_eq!(true, sr.is_solved); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 116 - assert_eq!(true, sr.is_solved); [INFO] [stdout] 116 + assert!(sr.is_solved); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/solve.rs:117:9 [INFO] [stdout] | [INFO] [stdout] 117 | assert_eq!(true, sr.is_valid); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 117 - assert_eq!(true, sr.is_valid); [INFO] [stdout] 117 + assert!(sr.is_valid); [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: used `assert_eq!` with a literal bool [INFO] [stdout] --> src/solve.rs:151:13 [INFO] [stdout] | [INFO] [stdout] 151 | assert_eq!(true, sr.is_solved); [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#bool_assert_comparison [INFO] [stdout] help: replace it with `assert!(..)` [INFO] [stdout] | [INFO] [stdout] 151 - assert_eq!(true, sr.is_solved); [INFO] [stdout] 151 + assert!(sr.is_solved); [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 [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 [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 `dev` profile [unoptimized + debuginfo] target(s) in 4.12s [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" "0ca88a9de4392f4b3b977ed0cfc1ff264af70ce5c8517960e5dcd46fef74cfe0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "0ca88a9de4392f4b3b977ed0cfc1ff264af70ce5c8517960e5dcd46fef74cfe0", kill_on_drop: false }` [INFO] [stdout] 0ca88a9de4392f4b3b977ed0cfc1ff264af70ce5c8517960e5dcd46fef74cfe0