[INFO] cloning repository https://github.com/frgmt0/chessrl
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/frgmt0/chessrl" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffrgmt0%2Fchessrl", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffrgmt0%2Fchessrl'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] de875e5ee7c06865f616ebac1a08ca0818dd565c
[INFO] checking frgmt0/chessrl against master#3350c1eb3fd8fe1bee1ed4c76944d707bd256876 for pr-140558
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Ffrgmt0%2Fchessrl" "/workspace/builds/worker-6-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-6-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/frgmt0/chessrl on toolchain 3350c1eb3fd8fe1bee1ed4c76944d707bd256876
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+3350c1eb3fd8fe1bee1ed4c76944d707bd256876" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/frgmt0/chessrl
[INFO] finished tweaking git repo https://github.com/frgmt0/chessrl
[INFO] tweaked toml for git repo https://github.com/frgmt0/chessrl written to /workspace/builds/worker-6-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/frgmt0/chessrl 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" "+3350c1eb3fd8fe1bee1ed4c76944d707bd256876" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:b0b074c097205a61b89e8ad263052f976b2b332c4dc5f02aef1fe52501660d6e" "/opt/rustwide/cargo-home/bin/cargo" "+3350c1eb3fd8fe1bee1ed4c76944d707bd256876" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 2405179ea04ee8207952c480f6a6e6e97c78155c547b20f19f881dc77cbda55a
[INFO] running `Command { std: "docker" "start" "-a" "2405179ea04ee8207952c480f6a6e6e97c78155c547b20f19f881dc77cbda55a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "2405179ea04ee8207952c480f6a6e6e97c78155c547b20f19f881dc77cbda55a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2405179ea04ee8207952c480f6a6e6e97c78155c547b20f19f881dc77cbda55a", kill_on_drop: false }`
[INFO] [stdout] 2405179ea04ee8207952c480f6a6e6e97c78155c547b20f19f881dc77cbda55a
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-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:b0b074c097205a61b89e8ad263052f976b2b332c4dc5f02aef1fe52501660d6e" "/opt/rustwide/cargo-home/bin/cargo" "+3350c1eb3fd8fe1bee1ed4c76944d707bd256876" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] aa736f59f67370e3d015ff61c4e7be7fb769e0dc59c41d06bcdaf24ccfbcd60f
[INFO] running `Command { std: "docker" "start" "-a" "aa736f59f67370e3d015ff61c4e7be7fb769e0dc59c41d06bcdaf24ccfbcd60f", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.93
[INFO] [stderr]    Compiling libc v0.2.169
[INFO] [stderr]    Compiling unicode-ident v1.0.17
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]    Compiling rustversion v1.0.19
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling signal-hook v0.3.17
[INFO] [stderr]     Checking log v0.4.25
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]     Checking smallvec v1.14.0
[INFO] [stderr]    Compiling fnv v1.0.7
[INFO] [stderr]     Checking scopeguard v1.2.0
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]     Checking foldhash v0.1.4
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]     Checking bitflags v2.8.0
[INFO] [stderr]     Checking allocator-api2 v0.2.21
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking either v1.13.0
[INFO] [stderr]    Compiling indoc v2.0.5
[INFO] [stderr]     Checking static_assertions v1.1.0
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking itoa v1.0.14
[INFO] [stderr]     Checking ryu v1.0.19
[INFO] [stderr]     Checking unicode-segmentation v1.12.0
[INFO] [stderr]     Checking cassowary v0.3.0
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking itertools v0.13.0
[INFO] [stderr]     Checking hashbrown v0.15.2
[INFO] [stderr]     Checking unicode-width v0.2.0
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking colored v2.2.0
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]     Checking castaway v0.2.3
[INFO] [stderr]     Checking compact_str v0.8.1
[INFO] [stderr]     Checking lru v0.12.5
[INFO] [stderr]    Compiling quote v1.0.38
[INFO] [stderr]     Checking signal-hook-registry v1.4.2
[INFO] [stderr]     Checking mio v0.8.11
[INFO] [stderr]     Checking mio v1.0.3
[INFO] [stderr]     Checking getrandom v0.2.15
[INFO] [stderr]    Compiling syn v2.0.98
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking signal-hook-mio v0.2.4
[INFO] [stderr]     Checking crossterm v0.28.1
[INFO] [stderr]     Checking crossterm v0.25.0
[INFO] [stderr]     Checking unicode-truncate v1.1.0
[INFO] [stderr]    Compiling darling_core v0.20.10
[INFO] [stderr]    Compiling zerocopy-derive v0.7.35
[INFO] [stderr]    Compiling strum_macros v0.26.4
[INFO] [stderr]     Checking zerocopy v0.7.35
[INFO] [stderr]     Checking strum v0.26.3
[INFO] [stderr]     Checking ppv-lite86 v0.2.20
[INFO] [stderr]    Compiling darling_macro v0.20.10
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]    Compiling darling v0.20.10
[INFO] [stderr]    Compiling instability v0.3.7
[INFO] [stderr]     Checking ratatui v0.29.0
[INFO] [stderr]     Checking chessrl v0.0.1 (/opt/rustwide/workdir)
[INFO] [stdout] warning: field `thinking_line` is never read
[INFO] [stdout]   --> src/engine/rl.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct SimulationStats {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub thinking_line: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SimulationStats` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `discount_factor`, `exploration_rate`, `move_history`, and `prune_threshold` are never read
[INFO] [stdout]   --> src/engine/rl.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct RLEngine {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 76 |     discount_factor: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     exploration_rate: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     move_history: Vec<((usize, usize), (usize, usize))>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 79 |     simulation_depth: i32,
[INFO] [stdout] 80 |     prune_threshold: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_escape_move` is never used
[INFO] [stdout]    --> src/engine/rl.rs:611:8
[INFO] [stdout]     |
[INFO] [stdout] 93  | impl RLEngine {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 611 |     fn find_escape_move(&self, board: &Board, color: Color, analysis: &BoardAnalysis) -> Option<((usize, usize), (usize, usize))> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selected_square` and `current_turn` are never read
[INFO] [stdout]  --> src/game/board.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Board {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 5 |     squares: [[Option<Piece>; 8]; 8],
[INFO] [stdout] 6 |     selected_square: Option<(usize, usize)>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     current_turn: Color,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Board` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display` is never used
[INFO] [stdout]   --> src/game/board.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Board {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn display(&self, _cursor_pos: (usize, usize), term_size: (u16, u16)) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Move` is never constructed
[INFO] [stdout]  --> src/game/movement.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Move {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/game/movement.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Move {
[INFO] [stdout]   | --------- associated function in this implementation
[INFO] [stdout] 7 |     pub fn new(from: (usize, usize), to: (usize, usize)) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_move` is never used
[INFO] [stdout]  --> src/game/validation.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn is_valid_move(_board: &Board, _mv: &Move) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `select_piece`, `scroll_history`, and `handle_key_event` are never used
[INFO] [stdout]    --> src/ui/app.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl App {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn select_piece(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |     pub fn scroll_history(&mut self, up: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 508 |     pub fn handle_key_event(&mut self, key_event: crossterm::event::KeyEvent) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]  --> src/ui/terminal.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum Direction {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Direction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserAction` is never used
[INFO] [stdout]   --> src/ui/terminal.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum UserAction {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserAction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TerminalUI` is never constructed
[INFO] [stdout]   --> src/ui/terminal.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct TerminalUI {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_terminal_size`, `init`, `cleanup`, `move_cursor`, and `get_cursor_pos` are never used
[INFO] [stdout]   --> src/ui/terminal.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TerminalUI {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn get_terminal_size(&self) -> (u16, u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn init() -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn cleanup() -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn move_cursor(&mut self, direction: Direction) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_cursor_pos(&self) -> (usize, usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MenuItem` is never used
[INFO] [stdout]   --> src/ui/welcome.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum MenuItem {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MenuItem` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WelcomeScreen` is never constructed
[INFO] [stdout]   --> src/ui/welcome.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct WelcomeScreen {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `display`, `handle_input`, and `show_about` are never used
[INFO] [stdout]   --> src/ui/welcome.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl WelcomeScreen {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn display(&self) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn handle_input(&mut self) -> Option<MenuItem> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn show_about(&self) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_coordinate` is never used
[INFO] [stdout]  --> src/utils.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn parse_coordinate(coord: &str) -> Option<(usize, usize)> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `thinking_line` is never read
[INFO] [stdout]   --> src/engine/rl.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct SimulationStats {
[INFO] [stdout]    |            --------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 54 |     pub thinking_line: String,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SimulationStats` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `discount_factor`, `exploration_rate`, `move_history`, and `prune_threshold` are never read
[INFO] [stdout]   --> src/engine/rl.rs:76:5
[INFO] [stdout]    |
[INFO] [stdout] 72 | pub struct RLEngine {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] ...
[INFO] [stdout] 76 |     discount_factor: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 77 |     exploration_rate: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^
[INFO] [stdout] 78 |     move_history: Vec<((usize, usize), (usize, usize))>,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout] 79 |     simulation_depth: i32,
[INFO] [stdout] 80 |     prune_threshold: f32,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `find_escape_move` is never used
[INFO] [stdout]    --> src/engine/rl.rs:611:8
[INFO] [stdout]     |
[INFO] [stdout] 93  | impl RLEngine {
[INFO] [stdout]     | ------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 611 |     fn find_escape_move(&self, board: &Board, color: Color, analysis: &BoardAnalysis) -> Option<((usize, usize), (usize, usize))> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `selected_square` and `current_turn` are never read
[INFO] [stdout]  --> src/game/board.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub struct Board {
[INFO] [stdout]   |            ----- fields in this struct
[INFO] [stdout] 5 |     squares: [[Option<Piece>; 8]; 8],
[INFO] [stdout] 6 |     selected_square: Option<(usize, usize)>,
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 7 |     current_turn: Color,
[INFO] [stdout]   |     ^^^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Board` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `display` is never used
[INFO] [stdout]   --> src/game/board.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 10 | impl Board {
[INFO] [stdout]    | ---------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn display(&self, _cursor_pos: (usize, usize), term_size: (u16, u16)) {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Move` is never constructed
[INFO] [stdout]  --> src/game/movement.rs:1:12
[INFO] [stdout]   |
[INFO] [stdout] 1 | pub struct Move {
[INFO] [stdout]   |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new` is never used
[INFO] [stdout]  --> src/game/movement.rs:7:12
[INFO] [stdout]   |
[INFO] [stdout] 6 | impl Move {
[INFO] [stdout]   | --------- associated function in this implementation
[INFO] [stdout] 7 |     pub fn new(from: (usize, usize), to: (usize, usize)) -> Self {
[INFO] [stdout]   |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_move` is never used
[INFO] [stdout]  --> src/game/validation.rs:4:8
[INFO] [stdout]   |
[INFO] [stdout] 4 | pub fn is_valid_move(_board: &Board, _mv: &Move) -> bool {
[INFO] [stdout]   |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `select_piece`, `scroll_history`, and `handle_key_event` are never used
[INFO] [stdout]    --> src/ui/app.rs:161:12
[INFO] [stdout]     |
[INFO] [stdout] 59  | impl App {
[INFO] [stdout]     | -------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 161 |     pub fn select_piece(&mut self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 496 |     pub fn scroll_history(&mut self, up: bool) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 508 |     pub fn handle_key_event(&mut self, key_event: crossterm::event::KeyEvent) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Direction` is never used
[INFO] [stdout]  --> src/ui/terminal.rs:9:10
[INFO] [stdout]   |
[INFO] [stdout] 9 | pub enum Direction {
[INFO] [stdout]   |          ^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `Direction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `UserAction` is never used
[INFO] [stdout]   --> src/ui/terminal.rs:17:10
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub enum UserAction {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `UserAction` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TerminalUI` is never constructed
[INFO] [stdout]   --> src/ui/terminal.rs:23:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | pub struct TerminalUI {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `get_terminal_size`, `init`, `cleanup`, `move_cursor`, and `get_cursor_pos` are never used
[INFO] [stdout]   --> src/ui/terminal.rs:29:12
[INFO] [stdout]    |
[INFO] [stdout] 28 | impl TerminalUI {
[INFO] [stdout]    | --------------- associated items in this implementation
[INFO] [stdout] 29 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 37 |     pub fn get_terminal_size(&self) -> (u16, u16) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 41 |     pub fn init() -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 48 |     pub fn cleanup() -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn move_cursor(&mut self, direction: Direction) {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 65 |     pub fn get_cursor_pos(&self) -> (usize, usize) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MenuItem` is never used
[INFO] [stdout]   --> src/ui/welcome.rs:10:10
[INFO] [stdout]    |
[INFO] [stdout] 10 | pub enum MenuItem {
[INFO] [stdout]    |          ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MenuItem` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `WelcomeScreen` is never constructed
[INFO] [stdout]   --> src/ui/welcome.rs:15:12
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub struct WelcomeScreen {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `display`, `handle_input`, and `show_about` are never used
[INFO] [stdout]   --> src/ui/welcome.rs:20:12
[INFO] [stdout]    |
[INFO] [stdout] 19 | impl WelcomeScreen {
[INFO] [stdout]    | ------------------ associated items in this implementation
[INFO] [stdout] 20 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 26 |     pub fn display(&self) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 75 |     pub fn handle_input(&mut self) -> Option<MenuItem> {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94 |     pub fn show_about(&self) -> std::io::Result<()> {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `parse_coordinate` is never used
[INFO] [stdout]  --> src/utils.rs:7:8
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub fn parse_coordinate(coord: &str) -> Option<(usize, usize)> {
[INFO] [stdout]   |        ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 14.59s
[INFO] running `Command { std: "docker" "inspect" "aa736f59f67370e3d015ff61c4e7be7fb769e0dc59c41d06bcdaf24ccfbcd60f", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa736f59f67370e3d015ff61c4e7be7fb769e0dc59c41d06bcdaf24ccfbcd60f", kill_on_drop: false }`
[INFO] [stdout] aa736f59f67370e3d015ff61c4e7be7fb769e0dc59c41d06bcdaf24ccfbcd60f
