[INFO] cloning repository https://github.com/Anskity/rubiks_trainer
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Anskity/rubiks_trainer" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAnskity%2Frubiks_trainer", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAnskity%2Frubiks_trainer'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] d621e0ed67b84b35d2ac93b9d21d233145e3e299
[INFO] building Anskity/rubiks_trainer against master#ad85bc524b1ad696e42061ad8338d382dffbdbe5 for pr-146237-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FAnskity%2Frubiks_trainer" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Anskity/rubiks_trainer
[INFO] finished tweaking git repo https://github.com/Anskity/rubiks_trainer
[INFO] tweaked toml for git repo https://github.com/Anskity/rubiks_trainer written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Anskity/rubiks_trainer on toolchain ad85bc524b1ad696e42061ad8338d382dffbdbe5
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Anskity/rubiks_trainer 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" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded indenter v0.3.3
[INFO] [stderr]   Downloaded tracing-error v0.2.1
[INFO] [stderr]   Downloaded derive_more-impl v2.0.1
[INFO] [stderr]   Downloaded env_home v0.1.0
[INFO] [stderr]   Downloaded color-spantrace v0.3.0
[INFO] [stderr]   Downloaded terminfo v0.9.0
[INFO] [stderr]   Downloaded derive_more v2.0.1
[INFO] [stderr]   Downloaded eyre v0.6.12
[INFO] [stderr]   Downloaded rand v0.9.1
[INFO] [stderr]   Downloaded owo-colors v4.2.2
[INFO] [stderr]   Downloaded which v7.0.3
[INFO] [stderr]   Downloaded convert_case v0.7.1
[INFO] [stderr]   Downloaded instability v0.3.7
[INFO] [stderr]   Downloaded clearscreen v4.0.1
[INFO] [stderr]   Downloaded crossterm v0.29.0
[INFO] [stderr]   Downloaded tui-tree-widget v0.23.1
[INFO] [stderr]   Downloaded winsafe v0.0.19
[INFO] [stderr]   Downloaded color-eyre v0.6.5
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] ebbcdbe2110a120b55419984c2a1dd3cf9830c0ab9b28a853d364b2b5233cefe
[INFO] running `Command { std: "docker" "start" "-a" "ebbcdbe2110a120b55419984c2a1dd3cf9830c0ab9b28a853d364b2b5233cefe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "ebbcdbe2110a120b55419984c2a1dd3cf9830c0ab9b28a853d364b2b5233cefe", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "ebbcdbe2110a120b55419984c2a1dd3cf9830c0ab9b28a853d364b2b5233cefe", kill_on_drop: false }`
[INFO] [stdout] ebbcdbe2110a120b55419984c2a1dd3cf9830c0ab9b28a853d364b2b5233cefe
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] df1a80d0e45d4560b0056cb654426abbe35e80d261206d731b87fda508e35ef6
[INFO] running `Command { std: "docker" "start" "-a" "df1a80d0e45d4560b0056cb654426abbe35e80d261206d731b87fda508e35ef6", kill_on_drop: false }`
[INFO] [stderr]    Compiling syn v2.0.104
[INFO] [stderr]    Compiling siphasher v1.0.1
[INFO] [stderr]    Compiling bitflags v2.9.1
[INFO] [stderr]    Compiling unicode-segmentation v1.12.0
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling memchr v2.7.5
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling parking_lot v0.12.4
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling owo-colors v4.2.2
[INFO] [stderr]    Compiling phf_codegen v0.11.3
[INFO] [stderr]    Compiling object v0.36.7
[INFO] [stderr]    Compiling linux-raw-sys v0.4.15
[INFO] [stderr]    Compiling hashbrown v0.15.4
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling terminfo v0.9.0
[INFO] [stderr]    Compiling tracing-subscriber v0.3.19
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling convert_case v0.7.1
[INFO] [stderr]    Compiling itertools v0.13.0
[INFO] [stderr]    Compiling castaway v0.2.3
[INFO] [stderr]    Compiling gimli v0.31.1
[INFO] [stderr]    Compiling indoc v2.0.6
[INFO] [stderr]    Compiling eyre v0.6.12
[INFO] [stderr]    Compiling color-spantrace v0.3.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling compact_str v0.8.1
[INFO] [stderr]    Compiling crossterm v0.28.1
[INFO] [stderr]    Compiling tracing-error v0.2.1
[INFO] [stderr]    Compiling nom v7.1.3
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling unicode-truncate v1.1.0
[INFO] [stderr]    Compiling rand_core v0.9.3
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling cassowary v0.3.0
[INFO] [stderr]    Compiling darling_core v0.20.11
[INFO] [stderr]    Compiling addr2line v0.24.2
[INFO] [stderr]    Compiling indenter v0.3.3
[INFO] [stderr]    Compiling litrs v0.4.1
[INFO] [stderr]    Compiling env_home v0.1.0
[INFO] [stderr]    Compiling which v7.0.3
[INFO] [stderr]    Compiling rand_chacha v0.9.0
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]    Compiling rand v0.9.1
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]    Compiling thiserror-impl v2.0.12
[INFO] [stderr]    Compiling derive_more-impl v2.0.1
[INFO] [stderr]    Compiling derive_more v2.0.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling darling_macro v0.20.11
[INFO] [stderr]    Compiling thiserror v2.0.12
[INFO] [stderr]    Compiling darling v0.20.11
[INFO] [stderr]    Compiling instability v0.3.7
[INFO] [stderr]    Compiling strum v0.26.3
[INFO] [stderr]    Compiling ratatui v0.29.0
[INFO] [stderr]    Compiling backtrace v0.3.75
[INFO] [stderr]    Compiling clearscreen v4.0.1
[INFO] [stderr]    Compiling color-eyre v0.6.5
[INFO] [stderr]    Compiling tui-tree-widget v0.23.1
[INFO] [stderr]    Compiling rubiks_trainer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `io`
[INFO] [stdout]  --> src/app.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, io};
[INFO] [stdout]   |                                 ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color_eyre::owo_colors::OwoColorize`
[INFO] [stdout]  --> src/app.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use color_eyre::owo_colors::OwoColorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Style`, `Stylize`, `Text`, and `buffer::Buffer`
[INFO] [stdout]   --> src/app.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     buffer::Buffer, crossterm::event::{self, Event, KeyCode, KeyEvent}, layout::{Constraint, Flex, Layout, Rect}, style::{Style, Stylize}, text::{Text, T...
[INFO] [stdout]    |     ^^^^^^^^^^^^^^                                                                                                        ^^^^^  ^^^^^^^          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/app.rs:219:37
[INFO] [stdout]     |
[INFO] [stdout] 219 | ...                   let info = AlgInfo {
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RubiksError` is more private than the item `AlgSet::parse_scramble`
[INFO] [stdout]    --> src/db.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub fn parse_scramble(text: &str) -> Result<Vec<Movement>, RubiksError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `AlgSet::parse_scramble` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RubiksError` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | enum RubiksError {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RubiksError` is more private than the item `AlgSet::load_from`
[INFO] [stdout]    --> src/db.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub fn load_from<P: Into<PathBuf>>(path: P) -> Result<AlgSet, RubiksError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `AlgSet::load_from` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RubiksError` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | enum RubiksError {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AppPage<'a>` is more private than the item `App::page`
[INFO] [stdout]    --> src/app.rs:18:5
[INFO] [stdout]     |
[INFO] [stdout]  18 |     pub page: AppPage<'a>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ field `App::page` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AppPage<'a>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/app.rs:100:1
[INFO] [stdout]     |
[INFO] [stdout] 100 | enum AppPage<'a> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/db.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |     IOError(std::io::Error),
[INFO] [stdout]     |     ------- ^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RubiksError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 127 -     IOError(std::io::Error),
[INFO] [stdout] 127 +     IOError(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/db.rs:128:21
[INFO] [stdout]     |
[INFO] [stdout] 128 |     InvalidMovement(String),
[INFO] [stdout]     |     --------------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RubiksError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 128 -     InvalidMovement(String),
[INFO] [stdout] 128 +     InvalidMovement(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_rubiks_error` is never used
[INFO] [stdout]    --> src/db.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn handle_rubiks_error(err: RubiksError) -> ! {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `center` is never used
[INFO] [stdout]   --> src/app.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn center(area: Rect, horizontal: Constraint, vertical: Constraint) -> Rect {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 09s
[INFO] running `Command { std: "docker" "inspect" "df1a80d0e45d4560b0056cb654426abbe35e80d261206d731b87fda508e35ef6", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "df1a80d0e45d4560b0056cb654426abbe35e80d261206d731b87fda508e35ef6", kill_on_drop: false }`
[INFO] [stdout] df1a80d0e45d4560b0056cb654426abbe35e80d261206d731b87fda508e35ef6
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-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:e90291280db7d1fac5b66fc6dad9f9662629e7365a55743daf9bdf73ebc4ea79" "/opt/rustwide/cargo-home/bin/cargo" "+ad85bc524b1ad696e42061ad8338d382dffbdbe5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 95233d40479afa54ed96d8c65a5b7be696162b8178b720ff5177e7ffe2f7dc51
[INFO] running `Command { std: "docker" "start" "-a" "95233d40479afa54ed96d8c65a5b7be696162b8178b720ff5177e7ffe2f7dc51", kill_on_drop: false }`
[INFO] [stderr]    Compiling rubiks_trainer v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `io`
[INFO] [stdout]  --> src/app.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, io};
[INFO] [stdout]   |                                 ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color_eyre::owo_colors::OwoColorize`
[INFO] [stdout]  --> src/app.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use color_eyre::owo_colors::OwoColorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Style`, `Stylize`, `Text`, and `buffer::Buffer`
[INFO] [stdout]   --> src/app.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     buffer::Buffer, crossterm::event::{self, Event, KeyCode, KeyEvent}, layout::{Constraint, Flex, Layout, Rect}, style::{Style, Stylize}, text::{Text, T...
[INFO] [stdout]    |     ^^^^^^^^^^^^^^                                                                                                        ^^^^^  ^^^^^^^          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/app.rs:219:37
[INFO] [stdout]     |
[INFO] [stdout] 219 | ...                   let info = AlgInfo {
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RubiksError` is more private than the item `AlgSet::parse_scramble`
[INFO] [stdout]    --> src/db.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub fn parse_scramble(text: &str) -> Result<Vec<Movement>, RubiksError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `AlgSet::parse_scramble` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RubiksError` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | enum RubiksError {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RubiksError` is more private than the item `AlgSet::load_from`
[INFO] [stdout]    --> src/db.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub fn load_from<P: Into<PathBuf>>(path: P) -> Result<AlgSet, RubiksError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `AlgSet::load_from` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RubiksError` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | enum RubiksError {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AppPage<'a>` is more private than the item `App::page`
[INFO] [stdout]    --> src/app.rs:18:5
[INFO] [stdout]     |
[INFO] [stdout]  18 |     pub page: AppPage<'a>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ field `App::page` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AppPage<'a>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/app.rs:100:1
[INFO] [stdout]     |
[INFO] [stdout] 100 | enum AppPage<'a> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/db.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |     IOError(std::io::Error),
[INFO] [stdout]     |     ------- ^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RubiksError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 127 -     IOError(std::io::Error),
[INFO] [stdout] 127 +     IOError(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/db.rs:128:21
[INFO] [stdout]     |
[INFO] [stdout] 128 |     InvalidMovement(String),
[INFO] [stdout]     |     --------------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RubiksError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 128 -     InvalidMovement(String),
[INFO] [stdout] 128 +     InvalidMovement(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_rubiks_error` is never used
[INFO] [stdout]    --> src/db.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn handle_rubiks_error(err: RubiksError) -> ! {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `center` is never used
[INFO] [stdout]   --> src/app.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn center(area: Rect, horizontal: Constraint, vertical: Constraint) -> Rect {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `io`
[INFO] [stdout]  --> src/app.rs:1:33
[INFO] [stdout]   |
[INFO] [stdout] 1 | use std::{collections::HashMap, io};
[INFO] [stdout]   |                                 ^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `color_eyre::owo_colors::OwoColorize`
[INFO] [stdout]  --> src/app.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use color_eyre::owo_colors::OwoColorize;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Style`, `Stylize`, `Text`, and `buffer::Buffer`
[INFO] [stdout]   --> src/app.rs:10:5
[INFO] [stdout]    |
[INFO] [stdout] 10 |     buffer::Buffer, crossterm::event::{self, Event, KeyCode, KeyEvent}, layout::{Constraint, Flex, Layout, Rect}, style::{Style, Stylize}, text::{Text, T...
[INFO] [stdout]    |     ^^^^^^^^^^^^^^                                                                                                        ^^^^^  ^^^^^^^          ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `info`
[INFO] [stdout]    --> src/app.rs:219:37
[INFO] [stdout]     |
[INFO] [stdout] 219 | ...                   let info = AlgInfo {
[INFO] [stdout]     |                           ^^^^ help: if this is intentional, prefix it with an underscore: `_info`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RubiksError` is more private than the item `AlgSet::parse_scramble`
[INFO] [stdout]    --> src/db.rs:139:5
[INFO] [stdout]     |
[INFO] [stdout] 139 |     pub fn parse_scramble(text: &str) -> Result<Vec<Movement>, RubiksError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `AlgSet::parse_scramble` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RubiksError` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | enum RubiksError {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#[warn(private_interfaces)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `RubiksError` is more private than the item `AlgSet::load_from`
[INFO] [stdout]    --> src/db.rs:159:5
[INFO] [stdout]     |
[INFO] [stdout] 159 |     pub fn load_from<P: Into<PathBuf>>(path: P) -> Result<AlgSet, RubiksError> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ associated function `AlgSet::load_from` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `RubiksError` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/db.rs:126:1
[INFO] [stdout]     |
[INFO] [stdout] 126 | enum RubiksError {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: type `AppPage<'a>` is more private than the item `App::page`
[INFO] [stdout]    --> src/app.rs:18:5
[INFO] [stdout]     |
[INFO] [stdout]  18 |     pub page: AppPage<'a>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^ field `App::page` is reachable at visibility `pub`
[INFO] [stdout]     |
[INFO] [stdout] note: but type `AppPage<'a>` is only usable at visibility `pub(self)`
[INFO] [stdout]    --> src/app.rs:100:1
[INFO] [stdout]     |
[INFO] [stdout] 100 | enum AppPage<'a> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/db.rs:127:13
[INFO] [stdout]     |
[INFO] [stdout] 127 |     IOError(std::io::Error),
[INFO] [stdout]     |     ------- ^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RubiksError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 127 -     IOError(std::io::Error),
[INFO] [stdout] 127 +     IOError(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `0` is never read
[INFO] [stdout]    --> src/db.rs:128:21
[INFO] [stdout]     |
[INFO] [stdout] 128 |     InvalidMovement(String),
[INFO] [stdout]     |     --------------- ^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     field in this variant
[INFO] [stdout]     |
[INFO] [stdout]     = note: `RubiksError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field
[INFO] [stdout]     |
[INFO] [stdout] 128 -     InvalidMovement(String),
[INFO] [stdout] 128 +     InvalidMovement(()),
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `handle_rubiks_error` is never used
[INFO] [stdout]    --> src/db.rs:189:4
[INFO] [stdout]     |
[INFO] [stdout] 189 | fn handle_rubiks_error(err: RubiksError) -> ! {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `center` is never used
[INFO] [stdout]   --> src/app.rs:85:4
[INFO] [stdout]    |
[INFO] [stdout] 85 | fn center(area: Rect, horizontal: Constraint, vertical: Constraint) -> Rect {
[INFO] [stdout]    |    ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.78s
[INFO] running `Command { std: "docker" "inspect" "95233d40479afa54ed96d8c65a5b7be696162b8178b720ff5177e7ffe2f7dc51", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "95233d40479afa54ed96d8c65a5b7be696162b8178b720ff5177e7ffe2f7dc51", kill_on_drop: false }`
[INFO] [stdout] 95233d40479afa54ed96d8c65a5b7be696162b8178b720ff5177e7ffe2f7dc51
