[INFO] cloning repository https://github.com/lolepop/mcts.rs
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/lolepop/mcts.rs" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flolepop%2Fmcts.rs", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flolepop%2Fmcts.rs'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 7c68667147ef1745dca2cb19d4d7241efc4d0ac0
[INFO] checking lolepop/mcts.rs against master#9bfa31f632912180dc742809bcc51a97f2d7079d for pr-140151
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Flolepop%2Fmcts.rs" "/workspace/builds/worker-4-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc1/source'...
[INFO] [stderr] done.
[INFO] validating manifest of git repo https://github.com/lolepop/mcts.rs on toolchain 9bfa31f632912180dc742809bcc51a97f2d7079d
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+9bfa31f632912180dc742809bcc51a97f2d7079d" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] started tweaking git repo https://github.com/lolepop/mcts.rs
[INFO] finished tweaking git repo https://github.com/lolepop/mcts.rs
[INFO] tweaked toml for git repo https://github.com/lolepop/mcts.rs written to /workspace/builds/worker-4-tc1/source/Cargo.toml
[INFO] crate git repo https://github.com/lolepop/mcts.rs 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" "+9bfa31f632912180dc742809bcc51a97f2d7079d" "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:b0b074c097205a61b89e8ad263052f976b2b332c4dc5f02aef1fe52501660d6e" "/opt/rustwide/cargo-home/bin/cargo" "+9bfa31f632912180dc742809bcc51a97f2d7079d" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 81f8119301737f8fa24d60d9111c94dfe1011cab4a78cac61a0a829a454a016a
[INFO] running `Command { std: "docker" "start" "-a" "81f8119301737f8fa24d60d9111c94dfe1011cab4a78cac61a0a829a454a016a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "81f8119301737f8fa24d60d9111c94dfe1011cab4a78cac61a0a829a454a016a", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "81f8119301737f8fa24d60d9111c94dfe1011cab4a78cac61a0a829a454a016a", kill_on_drop: false }`
[INFO] [stdout] 81f8119301737f8fa24d60d9111c94dfe1011cab4a78cac61a0a829a454a016a
[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:b0b074c097205a61b89e8ad263052f976b2b332c4dc5f02aef1fe52501660d6e" "/opt/rustwide/cargo-home/bin/cargo" "+9bfa31f632912180dc742809bcc51a97f2d7079d" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 8214dac74a1e8998aa0fbf799eb9e2aba1e947f0a220657147fb48ec371c77bc
[INFO] running `Command { std: "docker" "start" "-a" "8214dac74a1e8998aa0fbf799eb9e2aba1e947f0a220657147fb48ec371c77bc", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.153
[INFO] [stderr]     Checking cfg-if v1.0.0
[INFO] [stderr]    Compiling version_check v0.9.4
[INFO] [stderr]    Compiling cc v1.0.92
[INFO] [stderr]    Compiling crossbeam-utils v0.8.19
[INFO] [stderr]    Compiling anyhow v1.0.81
[INFO] [stderr]     Checking once_cell v1.19.0
[INFO] [stderr]     Checking zerocopy v0.7.32
[INFO] [stderr]     Checking ppv-lite86 v0.2.17
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]     Checking either v1.10.0
[INFO] [stderr]     Checking allocator-api2 v0.2.16
[INFO] [stderr]    Compiling ahash v0.8.11
[INFO] [stderr]     Checking crossbeam-epoch v0.9.18
[INFO] [stderr]     Checking hashbrown v0.14.3
[INFO] [stderr]     Checking crossbeam-deque v0.8.5
[INFO] [stderr]    Compiling tikv-jemalloc-sys v0.5.4+5.3.0-patched
[INFO] [stderr]     Checking getrandom v0.2.12
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]     Checking rayon v1.10.0
[INFO] [stderr]     Checking rand_chacha v0.3.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking tikv-jemallocator v0.5.4
[INFO] [stderr]     Checking mcts v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused variable: `best_score`
[INFO] [stdout]    --> src/game.rs:299:25
[INFO] [stdout]     |
[INFO] [stdout] 299 |         let (best_move, best_score) = self.best_descendant();
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_score`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `len` is never used
[INFO] [stdout]    --> src/game.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 74  | impl<Move: Default + Debug> MctsTree<Move> {
[INFO] [stdout]     | ------------------------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn len(&self) -> usize {
[INFO] [stdout]     |        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `best_score`
[INFO] [stdout]    --> src/game.rs:299:25
[INFO] [stdout]     |
[INFO] [stdout] 299 |         let (best_move, best_score) = self.best_descendant();
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_score`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `len` is never used
[INFO] [stdout]    --> src/game.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 74  | impl<Move: Default + Debug> MctsTree<Move> {
[INFO] [stdout]     | ------------------------------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn len(&self) -> usize {
[INFO] [stdout]     |        ^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tikv_jemallocator::Jemalloc`
[INFO] [stdout]   --> src/main.rs:37:9
[INFO] [stdout]    |
[INFO] [stdout] 37 |     use tikv_jemallocator::Jemalloc;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `best_score`
[INFO] [stdout]    --> src/game.rs:299:25
[INFO] [stdout]     |
[INFO] [stdout] 299 |         let (best_move, best_score) = self.best_descendant();
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_score`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `score`
[INFO] [stdout]   --> src/tictactoe.rs:56:21
[INFO] [stdout]    |
[INFO] [stdout] 56 |         if let Some(score) = h.iter().chain(v.iter()).find(|s| s.abs() == 3) {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_score`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `best_score`
[INFO] [stdout]    --> src/game.rs:299:25
[INFO] [stdout]     |
[INFO] [stdout] 299 |         let (best_move, best_score) = self.best_descendant();
[INFO] [stdout]     |                         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_score`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `score`
[INFO] [stdout]   --> src/tictactoe.rs:56:21
[INFO] [stdout]    |
[INFO] [stdout] 56 |         if let Some(score) = h.iter().chain(v.iter()).find(|s| s.abs() == 3) {
[INFO] [stdout]    |                     ^^^^^ help: if this is intentional, prefix it with an underscore: `_score`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `NonTerminal` is never constructed
[INFO] [stdout]   --> src/game.rs:18:5
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum MoveScore {
[INFO] [stdout]    |          --------- variant in this enum
[INFO] [stdout] 17 |     Terminal(f32),
[INFO] [stdout] 18 |     NonTerminal(f32),
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MoveScore` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout]    = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `len` and `dump` are never used
[INFO] [stdout]    --> src/game.rs:102:8
[INFO] [stdout]     |
[INFO] [stdout] 74  | impl<Move: Default + Debug> MctsTree<Move> {
[INFO] [stdout]     | ------------------------------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn len(&self) -> usize {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn dump(&self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `dump_tree` is never used
[INFO] [stdout]    --> src/game.rs:304:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl<G: Game> Mcts<G> {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn dump_tree(&self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new` and `print` are never used
[INFO] [stdout]   --> src/tictactoe.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TicTacToe {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn print(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_number` is never used
[INFO] [stdout]   --> src/uno.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl PlayerMove {
[INFO] [stdout]    | --------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 53 |     fn is_number(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `uct` is never used
[INFO] [stdout]  --> src/game.rs:7:4
[INFO] [stdout]   |
[INFO] [stdout] 7 | fn uct(score: f32, visits: u32, total_visits: u32, c: f32) -> f32 {
[INFO] [stdout]   |    ^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(dead_code)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `MoveScore` is never used
[INFO] [stdout]   --> src/game.rs:16:10
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub enum MoveScore {
[INFO] [stdout]    |          ^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `MoveScore` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_terminal` and `score` are never used
[INFO] [stdout]   --> src/game.rs:23:8
[INFO] [stdout]    |
[INFO] [stdout] 22 | impl MoveScore {
[INFO] [stdout]    | -------------- methods in this implementation
[INFO] [stdout] 23 |     fn is_terminal(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 30 |     fn score(&self) -> f32 {
[INFO] [stdout]    |        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: trait `Game` is never used
[INFO] [stdout]   --> src/game.rs:38:11
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub trait Game: Clone + Debug {
[INFO] [stdout]    |           ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `NodeId` is never constructed
[INFO] [stdout]   --> src/game.rs:53:8
[INFO] [stdout]    |
[INFO] [stdout] 53 | struct NodeId(usize);
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MctsNode` is never constructed
[INFO] [stdout]   --> src/game.rs:63:8
[INFO] [stdout]    |
[INFO] [stdout] 63 | struct MctsNode<Move: Default + Debug> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `MctsTree` is never constructed
[INFO] [stdout]   --> src/game.rs:69:8
[INFO] [stdout]    |
[INFO] [stdout] 69 | struct MctsTree<Move: Default + Debug> {
[INFO] [stdout]    |        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `add_child`, `children`, `node`, `len`, and `dump` are never used
[INFO] [stdout]    --> src/game.rs:75:8
[INFO] [stdout]     |
[INFO] [stdout] 74  | impl<Move: Default + Debug> MctsTree<Move> {
[INFO] [stdout]     | ------------------------------------------ associated items in this implementation
[INFO] [stdout] 75  |     fn new() -> Self {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 82  |     fn add_child(&mut self, node: NodeId, placement_move: Move) -> Option<NodeId> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 94  |     fn children(&self, node: NodeId) -> Option<Vec<NodeId>> {
[INFO] [stdout]     |        ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 98  |     fn node(&self, node: NodeId) -> Option<&MctsNode<Move>> {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 102 |     fn len(&self) -> usize {
[INFO] [stdout]     |        ^^^
[INFO] [stdout] ...
[INFO] [stdout] 106 |     fn dump(&self) {
[INFO] [stdout]     |        ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Mcts` is never constructed
[INFO] [stdout]    --> src/game.rs:129:12
[INFO] [stdout]     |
[INFO] [stdout] 129 | pub struct Mcts<G: Game> {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/game.rs:136:12
[INFO] [stdout]     |
[INFO] [stdout] 135 | impl<G: Game> Mcts<G> {
[INFO] [stdout]     | --------------------- associated items in this implementation
[INFO] [stdout] 136 |     pub fn new(player_id: G::Player) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 140 |     fn diff_existing_children(&self, existing: &Vec<NodeId>, truth: &Vec<G::Move>) -> Either<Vec<G::Move>, Vec<NodeId>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 162 |     fn select(&mut self, game: &mut G) -> Result<Vec<(NodeId, MoveScore)>> {
[INFO] [stdout]     |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 233 |     fn rollout(&mut self, game: &mut G) -> Result<f32> {
[INFO] [stdout]     |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 246 |     fn backpropagate(&mut self, traversal: &Vec<(NodeId, MoveScore)>, rollout_score: f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 257 |     fn best_descendant(&self) -> (&MctsNode<<G as Game>::Move>, f32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 266 |     pub fn best_move(&mut self, base_game: &G, iterations: usize, retry_failed: bool) -> G::Move {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 304 |     pub fn dump_tree(&self) {
[INFO] [stdout]     |            ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Win`, `Draw`, and `Continue` are never constructed
[INFO] [stdout]   --> src/tictactoe.rs:7:5
[INFO] [stdout]    |
[INFO] [stdout] 6  | pub enum WinState {
[INFO] [stdout]    |          -------- variants in this enum
[INFO] [stdout] 7  |     Win,
[INFO] [stdout]    |     ^^^
[INFO] [stdout] 8  |     // Loss,
[INFO] [stdout] 9  |     Draw,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 10 |     Continue
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WinState` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TicTacToe` is never constructed
[INFO] [stdout]   --> src/tictactoe.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub(crate) struct TicTacToe {
[INFO] [stdout]    |                   ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `new`, `next_player`, `end_state`, and `print` are never used
[INFO] [stdout]   --> src/tictactoe.rs:21:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TicTacToe {
[INFO] [stdout]    | -------------- associated items in this implementation
[INFO] [stdout] 21 |     pub fn new() -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 29 |     fn next_player(&mut self) {
[INFO] [stdout]    |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 33 |     fn end_state(&self) -> WinState {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 68 |     pub fn print(&self) {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Win` and `Continue` are never constructed
[INFO] [stdout]  --> src/uno.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | pub(crate) enum GameState {
[INFO] [stdout]   |                 --------- variants in this enum
[INFO] [stdout] 8 |     Win,
[INFO] [stdout]   |     ^^^
[INFO] [stdout] 9 |     Continue
[INFO] [stdout]   |     ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Yellow`, `Green`, and `Blue` are never constructed
[INFO] [stdout]   --> src/uno.rs:13:31
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub(crate) enum Colour { Red, Yellow, Green, Blue }
[INFO] [stdout]    |                 ------        ^^^^^^  ^^^^^  ^^^^
[INFO] [stdout]    |                 |
[INFO] [stdout]    |                 variants in this enum
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Colour` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `Card` is never used
[INFO] [stdout]   --> src/uno.rs:16:17
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub(crate) enum Card {
[INFO] [stdout]    |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Draw`, `Reverse`, `Skip`, `Wild`, and `ActionDraw` are never constructed
[INFO] [stdout]   --> src/uno.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 25 | pub(crate) enum PlayerMove {
[INFO] [stdout]    |                 ---------- variants in this enum
[INFO] [stdout] 26 |     Number(Colour, u8),
[INFO] [stdout] 27 |     Draw(Colour, u8),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 28 |     Reverse(Colour),
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 29 |     Skip(Colour),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 30 |     Wild(Colour, u8),
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 31 |     // non placements
[INFO] [stdout] 32 |     ActionDraw
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `PlayerMove` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `as_card`, `colour`, and `is_number` are never used
[INFO] [stdout]   --> src/uno.rs:35:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | impl PlayerMove {
[INFO] [stdout]    | --------------- methods in this implementation
[INFO] [stdout] 35 |     fn as_card(self) -> Option<Card> {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 46 |     fn colour(&self) -> Option<Colour> {
[INFO] [stdout]    |        ^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 53 |     fn is_number(&self) -> bool {
[INFO] [stdout]    |        ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Uno` is never constructed
[INFO] [stdout]   --> src/uno.rs:66:19
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub(crate) struct Uno {
[INFO] [stdout]    |                   ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple associated items are never used
[INFO] [stdout]    --> src/uno.rs:77:12
[INFO] [stdout]     |
[INFO] [stdout] 76  | impl Uno {
[INFO] [stdout]     | -------- associated items in this implementation
[INFO] [stdout] 77  |     pub fn new(deck: HashMap<Card, u8>, num_players: usize, initial_player_cards: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 100 |     fn draw_card_for_player(&mut self, player: usize, cards: usize) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 114 |     fn draw_hand(&mut self, cards: usize, number_only: bool) -> Result<HashMap<Card, u8>> {
[INFO] [stdout]     |        ^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 138 |     fn random_weighted_card(&self, number_only: bool) -> Option<Card> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 159 |     fn player_card_count(&self, player: usize) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 165 |     fn shift_purgatory_into_stack(&mut self) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 173 |     pub fn standard_deck(num_players: usize) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 191 |     fn update_move(&mut self, card: Option<Card>, pmove: PlayerMove) -> Result<bool> {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     fn next_player(&mut self, scale: u8) {
[INFO] [stdout]     |        ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 32s
[INFO] running `Command { std: "docker" "inspect" "8214dac74a1e8998aa0fbf799eb9e2aba1e947f0a220657147fb48ec371c77bc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "8214dac74a1e8998aa0fbf799eb9e2aba1e947f0a220657147fb48ec371c77bc", kill_on_drop: false }`
[INFO] [stdout] 8214dac74a1e8998aa0fbf799eb9e2aba1e947f0a220657147fb48ec371c77bc
