[INFO] cloning repository https://github.com/nschmoyer/farklesim
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/nschmoyer/farklesim" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnschmoyer%2Ffarklesim", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnschmoyer%2Ffarklesim'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 019e1539b142ed6dd2c890245f616f8bfe23317e
[INFO] testing nschmoyer/farklesim against try#db823df02fd0c2cf67b43025ac3fef3f2d743245 for pr-150681
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnschmoyer%2Ffarklesim" "/workspace/builds/worker-5-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-5-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/nschmoyer/farklesim
[INFO] finished tweaking git repo https://github.com/nschmoyer/farklesim
[INFO] tweaked toml for git repo https://github.com/nschmoyer/farklesim written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/nschmoyer/farklesim on toolchain db823df02fd0c2cf67b43025ac3fef3f2d743245
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/nschmoyer/farklesim 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" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 7fcfadad81497e46131c7fef9d9283e7a00cde5b389e1acb114d6c578242eafc
[INFO] running `Command { std: "docker" "start" "-a" "7fcfadad81497e46131c7fef9d9283e7a00cde5b389e1acb114d6c578242eafc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7fcfadad81497e46131c7fef9d9283e7a00cde5b389e1acb114d6c578242eafc", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7fcfadad81497e46131c7fef9d9283e7a00cde5b389e1acb114d6c578242eafc", kill_on_drop: false }`
[INFO] [stdout] 7fcfadad81497e46131c7fef9d9283e7a00cde5b389e1acb114d6c578242eafc
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 2f6106c0fcd7cdd672d843a3b5d9d255eed29f7c825a08f12a4606254b30c9ea
[INFO] running `Command { std: "docker" "start" "-a" "2f6106c0fcd7cdd672d843a3b5d9d255eed29f7c825a08f12a4606254b30c9ea", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.172
[INFO] [stderr]    Compiling proc-macro2 v1.0.95
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling autocfg v1.4.0
[INFO] [stderr]    Compiling version_check v0.9.5
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling zerocopy v0.8.25
[INFO] [stderr]    Compiling syn v1.0.109
[INFO] [stderr]    Compiling log v0.4.27
[INFO] [stderr]    Compiling signal-hook v0.3.17
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]    Compiling once_cell v1.21.3
[INFO] [stderr]    Compiling num-conv v0.1.0
[INFO] [stderr]    Compiling rustix v1.0.7
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling smallvec v1.15.0
[INFO] [stderr]    Compiling itoa v1.0.15
[INFO] [stderr]    Compiling rayon-core v1.12.1
[INFO] [stderr]    Compiling time-core v0.1.4
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]    Compiling portable-atomic v1.11.0
[INFO] [stderr]    Compiling time-macros v0.2.22
[INFO] [stderr]    Compiling proc-macro-error-attr v1.0.4
[INFO] [stderr]    Compiling proc-macro-error v1.0.4
[INFO] [stderr]    Compiling deranged v0.4.0
[INFO] [stderr]    Compiling lock_api v0.4.12
[INFO] [stderr]    Compiling indexmap v1.9.3
[INFO] [stderr]    Compiling hashbrown v0.12.3
[INFO] [stderr]    Compiling heck v0.4.1
[INFO] [stderr]    Compiling adler2 v2.0.0
[INFO] [stderr]    Compiling linux-raw-sys v0.9.4
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling anyhow v1.0.98
[INFO] [stderr]    Compiling os_str_bytes v6.6.1
[INFO] [stderr]    Compiling serde_json v1.0.140
[INFO] [stderr]    Compiling bitflags v2.9.0
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling bitflags v1.3.2
[INFO] [stderr]    Compiling colored v2.2.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.8
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]    Compiling clap_lex v0.2.4
[INFO] [stderr]    Compiling crc32fast v1.4.2
[INFO] [stderr]    Compiling syn v2.0.101
[INFO] [stderr]    Compiling number_prefix v0.4.0
[INFO] [stderr]    Compiling strsim v0.10.0
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling textwrap v0.16.2
[INFO] [stderr]    Compiling either v1.15.0
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling termcolor v1.4.1
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling signal-hook-registry v1.4.5
[INFO] [stderr]    Compiling parking_lot_core v0.9.10
[INFO] [stderr]    Compiling mio v0.8.11
[INFO] [stderr]    Compiling atty v0.2.14
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling console v0.15.11
[INFO] [stderr]    Compiling fastrand v2.3.0
[INFO] [stderr]    Compiling ryu v1.0.20
[INFO] [stderr]    Compiling memchr v2.7.4
[INFO] [stderr]    Compiling parking_lot v0.12.3
[INFO] [stderr]    Compiling flate2 v1.1.1
[INFO] [stderr]    Compiling time v0.3.41
[INFO] [stderr]    Compiling signal-hook-mio v0.2.4
[INFO] [stderr]    Compiling indicatif v0.17.11
[INFO] [stderr]    Compiling crossterm v0.25.0
[INFO] [stderr]    Compiling rayon v1.10.0
[INFO] [stderr]    Compiling ppv-lite86 v0.2.21
[INFO] [stderr]    Compiling simple_logger v2.3.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling tempfile v3.19.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling clap_derive v3.2.25
[INFO] [stderr]    Compiling clap v3.2.25
[INFO] [stderr]    Compiling bincode v1.3.3
[INFO] [stderr]    Compiling farkle v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{self, Write};
[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 imports: `ProgressBar` and `ProgressStyle`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use indicatif::{ProgressBar, ProgressStyle};
[INFO] [stdout]   |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_input_with_default`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::cli::menu::{get_input, get_input_with_default, get_number_input, get_bool_input, display_message};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `modify_scoring_rules`
[INFO] [stdout]   --> src/cli/simulation_mode.rs:11:63
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::rules::custom::{create_custom_rules, modify_rules, modify_scoring_rules};
[INFO] [stdout]    |                                                               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `list_results`
[INFO] [stdout]   --> src/cli/simulation_mode.rs:16:45
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::storage::results::{save_results, list_results};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]  --> src/cli/dice_input_mode.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{self, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/cli/dice_input_mode.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_input_with_default`
[INFO] [stdout]  --> src/cli/dice_input_mode.rs:7:35
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::cli::menu::{get_input, get_input_with_default, get_number_input, get_bool_input, display_message};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ScoringRules`
[INFO] [stdout]   --> src/cli/dice_input_mode.rs:11:31
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stdout]    |                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `find_optimal_move`
[INFO] [stdout]   --> src/cli/dice_input_mode.rs:14:35
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::simulation::strategy::{find_optimal_move, get_move_recommendation};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/cli/game_mode.rs:3:22
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Result, anyhow};
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]   --> src/cli/game_mode.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::io::{self, Write}; // Required for stdout().flush() if used, but not directly used in current printl!s
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `menu::run_menu`
[INFO] [stdout]   --> src/cli/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use menu::run_menu;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simulation_mode::run_simulation_mode`
[INFO] [stdout]   --> src/cli/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use simulation_mode::run_simulation_mode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dice_input_mode::run_dice_input_mode`
[INFO] [stdout]   --> src/cli/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use dice_input_mode::run_dice_input_mode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `game_mode::run_game_mode`
[INFO] [stdout]   --> src/cli/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use game_mode::run_game_mode; // Added Game Mode
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/game/dice.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Die`
[INFO] [stdout]  --> src/game/state.rs:5:25
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::game::dice::{Die, DiceSet};
[INFO] [stdout]   |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Die`
[INFO] [stdout]  --> src/game/moves.rs:5:25
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::game::dice::{Die, DiceSet};
[INFO] [stdout]   |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ScoringRules`
[INFO] [stdout]  --> src/game/scoring.rs:4:31
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stdout]   |                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DiceSet`, `Die`, and `roll_dice`
[INFO] [stdout]   --> src/game/mod.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use dice::{Die, DiceSet, roll_dice};
[INFO] [stdout]    |                ^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scoring::calculate_score`
[INFO] [stdout]   --> src/game/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use scoring::calculate_score;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `default_rules` and `default_scoring_rules`
[INFO] [stdout]  --> src/rules/custom.rs:6:29
[INFO] [stdout]   |
[INFO] [stdout] 6 | use crate::rules::default::{default_rules, default_scoring_rules};
[INFO] [stdout]   |                             ^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/rules/storage.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ScoringRules`
[INFO] [stdout]  --> src/rules/storage.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stdout]   |                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default::default_rules`
[INFO] [stdout]   --> src/rules/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use default::default_rules;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `custom::create_custom_rules`
[INFO] [stdout]   --> src/rules/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use custom::create_custom_rules;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_rules` and `save_rules`
[INFO] [stdout]   --> src/rules/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use storage::{save_rules, load_rules};
[INFO] [stdout]    |                   ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/simulation/strategy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `count_dice`
[INFO] [stdout]  --> src/simulation/strategy.rs:7:36
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::game::dice::{roll_dice, count_dice};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `find_best_scoring_combination`
[INFO] [stdout]   --> src/simulation/strategy.rs:10:45
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::game::scoring::{calculate_score, find_best_scoring_combination};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::state::GameState`
[INFO] [stdout]  --> src/simulation/statistics.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::game::state::GameState;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::run_simulation`
[INFO] [stdout]   --> src/simulation/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use engine::run_simulation;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `strategy::evaluate_strategy`
[INFO] [stdout]   --> src/simulation/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use strategy::evaluate_strategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `statistics::collect_statistics`
[INFO] [stdout]   --> src/simulation/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use statistics::collect_statistics;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_results` and `save_results`
[INFO] [stdout]   --> src/storage/mod.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use results::{save_results, load_results};
[INFO] [stdout]    |                   ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `format::StorageFormat`
[INFO] [stdout]   --> src/storage/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use format::StorageFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_dice`
[INFO] [stdout]   --> src/game/state.rs:25:16
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(num_dice: u32) -> Self {
[INFO] [stdout]    |                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_dice`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_dice`
[INFO] [stdout]   --> src/game/state.rs:36:39
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn new_turn(total_score: u32, num_dice: u32) -> Self {
[INFO] [stdout]    |                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_dice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/moves.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 let mut new_state = GameState::new_turn(
[INFO] [stdout]    |                     ----^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `state` is never read
[INFO] [stdout]    --> src/simulation/engine.rs:134:21
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut state = GameState::new(rules.num_dice);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/simulation/strategy.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/simulation/strategy.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rules`
[INFO] [stdout]    --> src/simulation/statistics.rs:202:5
[INFO] [stdout]     |
[INFO] [stdout] 202 |     rules: &GameRules,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_rules`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state_hash`
[INFO] [stdout]    --> src/simulation/statistics.rs:206:10
[INFO] [stdout]     |
[INFO] [stdout] 206 |     for (state_hash, result) in results {
[INFO] [stdout]     |          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state_hash`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_simulation_results` is never used
[INFO] [stdout]    --> src/cli/dice_input_mode.rs:225:4
[INFO] [stdout]     |
[INFO] [stdout] 225 | fn load_simulation_results() -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_quick_simulation` is never used
[INFO] [stdout]    --> src/cli/dice_input_mode.rs:278:4
[INFO] [stdout]     |
[INFO] [stdout] 278 | fn run_quick_simulation(state: &GameState, rules: &GameRules) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `max_of_a_kind` is never used
[INFO] [stdout]    --> src/game/dice.rs:106:8
[INFO] [stdout]     |
[INFO] [stdout] 106 | pub fn max_of_a_kind(dice: &[Die]) -> (usize, Die) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `has_won` is never used
[INFO] [stdout]   --> src/game/state.rs:47:12
[INFO] [stdout]    |
[INFO] [stdout] 23 | impl GameState {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 47 |     pub fn has_won(&self, rules: &GameRules) -> bool {
[INFO] [stdout]    |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `apply` is never used
[INFO] [stdout]   --> src/game/moves.rs:31:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl Move {
[INFO] [stdout]    | --------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 31 |     pub fn apply(&self, state: &GameState, rules: &GameRules) -> GameState {
[INFO] [stdout]    |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `find_best_scoring_combination` is never used
[INFO] [stdout]    --> src/game/scoring.rs:104:8
[INFO] [stdout]     |
[INFO] [stdout] 104 | pub fn find_best_scoring_combination(dice: &[Die], rules: &GameRules) -> (Vec<Die>, u32) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `has_scoring_combination` is never used
[INFO] [stdout]    --> src/game/scoring.rs:138:8
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub fn has_scoring_combination(dice: &[Die], rules: &GameRules) -> bool {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_custom_scoring_rules` is never used
[INFO] [stdout]   --> src/rules/custom.rs:59:8
[INFO] [stdout]    |
[INFO] [stdout] 59 | pub fn create_custom_scoring_rules(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `modify_scoring_rules` is never used
[INFO] [stdout]    --> src/rules/custom.rs:136:8
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub fn modify_scoring_rules(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `add_custom_combination` is never used
[INFO] [stdout]    --> src/rules/custom.rs:173:8
[INFO] [stdout]     |
[INFO] [stdout] 173 | pub fn add_custom_combination(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `remove_custom_combination` is never used
[INFO] [stdout]    --> src/rules/custom.rs:198:8
[INFO] [stdout]     |
[INFO] [stdout] 198 | pub fn remove_custom_combination(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_valid_pattern` is never used
[INFO] [stdout]    --> src/rules/custom.rs:216:4
[INFO] [stdout]     |
[INFO] [stdout] 216 | fn is_valid_pattern(pattern: &str) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_rules` is never used
[INFO] [stdout]    --> src/rules/custom.rs:242:8
[INFO] [stdout]     |
[INFO] [stdout] 242 | pub fn validate_rules(rules: &GameRules) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_scoring_rules` is never used
[INFO] [stdout]    --> src/rules/custom.rs:271:8
[INFO] [stdout]     |
[INFO] [stdout] 271 | pub fn validate_scoring_rules(scoring: &ScoringRules) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_rules` is never used
[INFO] [stdout]    --> src/rules/storage.rs:143:8
[INFO] [stdout]     |
[INFO] [stdout] 143 | pub fn delete_rules(name: &str) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `win` and `incomplete` are never used
[INFO] [stdout]   --> src/simulation/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl SimulationResult {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn win(score: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn incomplete(score: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `quick_simulate_state` is never used
[INFO] [stdout]    --> src/simulation/engine.rs:262:8
[INFO] [stdout]     |
[INFO] [stdout] 262 | pub fn quick_simulate_state(state: &GameState, rules: &GameRules, rounds: usize) -> SimulationResult {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_move` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn evaluate_move(m: &Move, state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_keep` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn evaluate_keep(dice: &[u8], state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_roll_all` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn evaluate_roll_all(state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `monte_carlo_evaluation` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn monte_carlo_evaluation(state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_state_with_depth` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:383:4
[INFO] [stdout]     |
[INFO] [stdout] 383 | fn evaluate_state_with_depth(state: &GameState, rules: &GameRules, depth: usize) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_additional` is never used
[INFO] [stdout]   --> src/simulation/statistics.rs:61:12
[INFO] [stdout]    |
[INFO] [stdout] 38 | impl SimulationStatistics {
[INFO] [stdout]    | ------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 61 |     pub fn get_additional(&self, key: &str) -> Option<f64> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_strategies` is never used
[INFO] [stdout]    --> src/simulation/statistics.rs:144:8
[INFO] [stdout]     |
[INFO] [stdout] 144 | pub fn analyze_strategies(results: &HashMap<String, SimulationResult>) -> HashMap<String, f64> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `analyze_dice_combinations` is never used
[INFO] [stdout]    --> src/simulation/statistics.rs:200:8
[INFO] [stdout]     |
[INFO] [stdout] 200 | pub fn analyze_dice_combinations(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `format_dice_combination` is never used
[INFO] [stdout]    --> src/simulation/statistics.rs:241:4
[INFO] [stdout]     |
[INFO] [stdout] 241 | fn format_dice_combination(dice: &[Die]) -> String {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_results` is never used
[INFO] [stdout]    --> src/storage/results.rs:127:8
[INFO] [stdout]     |
[INFO] [stdout] 127 | pub fn load_results(name: &str, format: StorageFormat) -> Result<SimulationResults> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_results_from_path` is never used
[INFO] [stdout]    --> src/storage/results.rs:148:4
[INFO] [stdout]     |
[INFO] [stdout] 148 | fn load_results_from_path(file_path: &Path, format: &StorageFormat) -> Result<SimulationResults> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_json` is never used
[INFO] [stdout]    --> src/storage/results.rs:172:4
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn load_json(file_path: &Path) -> Result<StorageContainer> {
[INFO] [stdout]     |    ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_binary` is never used
[INFO] [stdout]    --> src/storage/results.rs:184:4
[INFO] [stdout]     |
[INFO] [stdout] 184 | fn load_binary(file_path: &Path) -> Result<StorageContainer> {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_compressed` is never used
[INFO] [stdout]    --> src/storage/results.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn load_compressed(file_path: &Path) -> Result<StorageContainer> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `delete_results` is never used
[INFO] [stdout]    --> src/storage/results.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn delete_results(name: &str, format: StorageFormat) -> Result<()> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `list_results` is never used
[INFO] [stdout]    --> src/storage/results.rs:246:8
[INFO] [stdout]     |
[INFO] [stdout] 246 | pub fn list_results() -> Result<Vec<String>> {
[INFO] [stdout]     |        ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `content_type` is never used
[INFO] [stdout]   --> src/storage/format.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl StorageFormat {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn content_type(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `add_additional` is never used
[INFO] [stdout]   --> src/storage/format.rs:91:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | impl StorageMetadata {
[INFO] [stdout]    | -------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 91 |     pub fn add_additional(&mut self, key: &str, value: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `get_result`, `remove_result`, `clear`, `len`, and `is_empty` are never used
[INFO] [stdout]    --> src/storage/format.rs:122:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl StorageContainer {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 122 |     pub fn get_result(&self, key: &str) -> Option<&SimulationResult> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 127 |     pub fn remove_result(&mut self, key: &str) -> Option<SimulationResult> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 144 |     pub fn len(&self) -> usize {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 149 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 29.90s
[INFO] running `Command { std: "docker" "inspect" "2f6106c0fcd7cdd672d843a3b5d9d255eed29f7c825a08f12a4606254b30c9ea", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "2f6106c0fcd7cdd672d843a3b5d9d255eed29f7c825a08f12a4606254b30c9ea", kill_on_drop: false }`
[INFO] [stdout] 2f6106c0fcd7cdd672d843a3b5d9d255eed29f7c825a08f12a4606254b30c9ea
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 150770a30ae197138efec5b17b4431ec0c92a2c3d8ef74c7b88cff9b98130841
[INFO] running `Command { std: "docker" "start" "-a" "150770a30ae197138efec5b17b4431ec0c92a2c3d8ef74c7b88cff9b98130841", kill_on_drop: false }`
[INFO] [stderr]    Compiling farkle v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{self, Write};
[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 imports: `ProgressBar` and `ProgressStyle`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use indicatif::{ProgressBar, ProgressStyle};
[INFO] [stdout]   |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_input_with_default`
[INFO] [stdout]  --> src/cli/simulation_mode.rs:8:35
[INFO] [stdout]   |
[INFO] [stdout] 8 | use crate::cli::menu::{get_input, get_input_with_default, get_number_input, get_bool_input, display_message};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `modify_scoring_rules`
[INFO] [stdout]   --> src/cli/simulation_mode.rs:11:63
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::rules::custom::{create_custom_rules, modify_rules, modify_scoring_rules};
[INFO] [stdout]    |                                                               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `list_results`
[INFO] [stdout]   --> src/cli/simulation_mode.rs:16:45
[INFO] [stdout]    |
[INFO] [stdout] 16 | use crate::storage::results::{save_results, list_results};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/cli/simulation_mode.rs:281:9
[INFO] [stdout]     |
[INFO] [stdout] 281 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]  --> src/cli/dice_input_mode.rs:3:15
[INFO] [stdout]   |
[INFO] [stdout] 3 | use std::io::{self, Write};
[INFO] [stdout]   |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `log::info`
[INFO] [stdout]  --> src/cli/dice_input_mode.rs:5:5
[INFO] [stdout]   |
[INFO] [stdout] 5 | use log::info;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `get_input_with_default`
[INFO] [stdout]  --> src/cli/dice_input_mode.rs:7:35
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::cli::menu::{get_input, get_input_with_default, get_number_input, get_bool_input, display_message};
[INFO] [stdout]   |                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ScoringRules`
[INFO] [stdout]   --> src/cli/dice_input_mode.rs:11:31
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stdout]    |                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `find_optimal_move`
[INFO] [stdout]   --> src/cli/dice_input_mode.rs:14:35
[INFO] [stdout]    |
[INFO] [stdout] 14 | use crate::simulation::strategy::{find_optimal_move, get_move_recommendation};
[INFO] [stdout]    |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]    --> src/cli/dice_input_mode.rs:296:9
[INFO] [stdout]     |
[INFO] [stdout] 296 |     use super::*;
[INFO] [stdout]     |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `anyhow`
[INFO] [stdout]  --> src/cli/game_mode.rs:3:22
[INFO] [stdout]   |
[INFO] [stdout] 3 | use anyhow::{Result, anyhow};
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Write` and `self`
[INFO] [stdout]   --> src/cli/game_mode.rs:13:15
[INFO] [stdout]    |
[INFO] [stdout] 13 | use std::io::{self, Write}; // Required for stdout().flush() if used, but not directly used in current printl!s
[INFO] [stdout]    |               ^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `menu::run_menu`
[INFO] [stdout]   --> src/cli/mod.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use menu::run_menu;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `simulation_mode::run_simulation_mode`
[INFO] [stdout]   --> src/cli/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use simulation_mode::run_simulation_mode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `dice_input_mode::run_dice_input_mode`
[INFO] [stdout]   --> src/cli/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use dice_input_mode::run_dice_input_mode;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `game_mode::run_game_mode`
[INFO] [stdout]   --> src/cli/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use game_mode::run_game_mode; // Added Game Mode
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stdout]  --> src/game/dice.rs:4:13
[INFO] [stdout]   |
[INFO] [stdout] 4 | use serde::{Serialize, Deserialize};
[INFO] [stdout]   |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Die`
[INFO] [stdout]  --> src/game/state.rs:5:25
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::game::dice::{Die, DiceSet};
[INFO] [stdout]   |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Die`
[INFO] [stdout]  --> src/game/moves.rs:5:25
[INFO] [stdout]   |
[INFO] [stdout] 5 | use crate::game::dice::{Die, DiceSet};
[INFO] [stdout]   |                         ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ScoringRules`
[INFO] [stdout]  --> src/game/scoring.rs:4:31
[INFO] [stdout]   |
[INFO] [stdout] 4 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stdout]   |                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `DiceSet`, `Die`, and `roll_dice`
[INFO] [stdout]   --> src/game/mod.rs:15:16
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use dice::{Die, DiceSet, roll_dice};
[INFO] [stdout]    |                ^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `scoring::calculate_score`
[INFO] [stdout]   --> src/game/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use scoring::calculate_score;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Path`
[INFO] [stdout]  --> src/rules/storage.rs:5:17
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::path::{Path, PathBuf};
[INFO] [stdout]   |                 ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `ScoringRules`
[INFO] [stdout]  --> src/rules/storage.rs:9:31
[INFO] [stdout]   |
[INFO] [stdout] 9 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stdout]   |                               ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `default::default_rules`
[INFO] [stdout]   --> src/rules/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use default::default_rules;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `custom::create_custom_rules`
[INFO] [stdout]   --> src/rules/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use custom::create_custom_rules;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_rules` and `save_rules`
[INFO] [stdout]   --> src/rules/mod.rs:18:19
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use storage::{save_rules, load_rules};
[INFO] [stdout]    |                   ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::Rng`
[INFO] [stdout]  --> src/simulation/strategy.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use rand::Rng;
[INFO] [stdout]   |     ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `count_dice`
[INFO] [stdout]  --> src/simulation/strategy.rs:7:36
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::game::dice::{roll_dice, count_dice};
[INFO] [stdout]   |                                    ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `find_best_scoring_combination`
[INFO] [stdout]   --> src/simulation/strategy.rs:10:45
[INFO] [stdout]    |
[INFO] [stdout] 10 | use crate::game::scoring::{calculate_score, find_best_scoring_combination};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `crate::game::state::GameState`
[INFO] [stdout]  --> src/simulation/statistics.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use crate::game::state::GameState;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `engine::run_simulation`
[INFO] [stdout]   --> src/simulation/mod.rs:16:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub use engine::run_simulation;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `strategy::evaluate_strategy`
[INFO] [stdout]   --> src/simulation/mod.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 17 | pub use strategy::evaluate_strategy;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `statistics::collect_statistics`
[INFO] [stdout]   --> src/simulation/mod.rs:18:9
[INFO] [stdout]    |
[INFO] [stdout] 18 | pub use statistics::collect_statistics;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `load_results` and `save_results`
[INFO] [stdout]   --> src/storage/mod.rs:14:19
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub use results::{save_results, load_results};
[INFO] [stdout]    |                   ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `format::StorageFormat`
[INFO] [stdout]   --> src/storage/mod.rs:15:9
[INFO] [stdout]    |
[INFO] [stdout] 15 | pub use format::StorageFormat;
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_dice`
[INFO] [stdout]   --> src/game/state.rs:25:16
[INFO] [stdout]    |
[INFO] [stdout] 25 |     pub fn new(num_dice: u32) -> Self {
[INFO] [stdout]    |                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_dice`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `num_dice`
[INFO] [stdout]   --> src/game/state.rs:36:39
[INFO] [stdout]    |
[INFO] [stdout] 36 |     pub fn new_turn(total_score: u32, num_dice: u32) -> Self {
[INFO] [stdout]    |                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_dice`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/game/moves.rs:55:21
[INFO] [stdout]    |
[INFO] [stdout] 55 |                 let mut new_state = GameState::new_turn(
[INFO] [stdout]    |                     ----^^^^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `best_combination`
[INFO] [stdout]    --> src/game/scoring.rs:281:14
[INFO] [stdout]     |
[INFO] [stdout] 281 |         let (best_combination, best_score) = find_best_scoring_combination(&dice, &rules);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_combination`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `best_combination`
[INFO] [stdout]    --> src/game/scoring.rs:285:14
[INFO] [stdout]     |
[INFO] [stdout] 285 |         let (best_combination, best_score) = find_best_scoring_combination(&dice, &rules);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_combination`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `best_combination`
[INFO] [stdout]    --> src/game/scoring.rs:289:14
[INFO] [stdout]     |
[INFO] [stdout] 289 |         let (best_combination, best_score) = find_best_scoring_combination(&dice, &rules);
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_combination`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `state` is never read
[INFO] [stdout]    --> src/simulation/engine.rs:134:21
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut state = GameState::new(rules.num_dice);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = help: maybe it is overwritten before being read?
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `results`
[INFO] [stdout]    --> src/simulation/engine.rs:337:21
[INFO] [stdout]     |
[INFO] [stdout] 337 |         let (score, results) = simulate_turn(&state, &rules);
[INFO] [stdout]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/simulation/strategy.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ----^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rng`
[INFO] [stdout]    --> src/simulation/strategy.rs:237:9
[INFO] [stdout]     |
[INFO] [stdout] 237 |     let mut rng = rand::thread_rng();
[INFO] [stdout]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `rules`
[INFO] [stdout]    --> src/simulation/statistics.rs:202:5
[INFO] [stdout]     |
[INFO] [stdout] 202 |     rules: &GameRules,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_rules`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `state_hash`
[INFO] [stdout]    --> src/simulation/statistics.rs:206:10
[INFO] [stdout]     |
[INFO] [stdout] 206 |     for (state_hash, result) in results {
[INFO] [stdout]     |          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state_hash`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `load_simulation_results` is never used
[INFO] [stdout]    --> src/cli/dice_input_mode.rs:225:4
[INFO] [stdout]     |
[INFO] [stdout] 225 | fn load_simulation_results() -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `run_quick_simulation` is never used
[INFO] [stdout]    --> src/cli/dice_input_mode.rs:278:4
[INFO] [stdout]     |
[INFO] [stdout] 278 | fn run_quick_simulation(state: &GameState, rules: &GameRules) -> Result<()> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated functions `win` and `incomplete` are never used
[INFO] [stdout]   --> src/simulation/mod.rs:45:12
[INFO] [stdout]    |
[INFO] [stdout] 33 | impl SimulationResult {
[INFO] [stdout]    | --------------------- associated functions in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 45 |     pub fn win(score: u32) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] ...
[INFO] [stdout] 55 |     pub fn incomplete(score: u32) -> Self {
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_move` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:131:4
[INFO] [stdout]     |
[INFO] [stdout] 131 | fn evaluate_move(m: &Move, state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_keep` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:196:4
[INFO] [stdout]     |
[INFO] [stdout] 196 | fn evaluate_keep(dice: &[u8], state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_roll_all` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:221:4
[INFO] [stdout]     |
[INFO] [stdout] 221 | fn evaluate_roll_all(state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `monte_carlo_evaluation` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:286:4
[INFO] [stdout]     |
[INFO] [stdout] 286 | fn monte_carlo_evaluation(state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `evaluate_state_with_depth` is never used
[INFO] [stdout]    --> src/simulation/strategy.rs:383:4
[INFO] [stdout]     |
[INFO] [stdout] 383 | fn evaluate_state_with_depth(state: &GameState, rules: &GameRules, depth: usize) -> (f64, f64, f64) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `content_type` is never used
[INFO] [stdout]   --> src/storage/format.rs:35:12
[INFO] [stdout]    |
[INFO] [stdout] 24 | impl StorageFormat {
[INFO] [stdout]    | ------------------ method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 35 |     pub fn content_type(&self) -> &'static str {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `clear` is never used
[INFO] [stdout]    --> src/storage/format.rs:137:12
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl StorageContainer {
[INFO] [stdout]     | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 137 |     pub fn clear(&mut self) {
[INFO] [stdout]     |            ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/simulation/engine.rs:341:17
[INFO] [stdout]     |
[INFO] [stdout] 341 |         assert!(score >= 0);
[INFO] [stdout]     |                 ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 3.12s
[INFO] running `Command { std: "docker" "inspect" "150770a30ae197138efec5b17b4431ec0c92a2c3d8ef74c7b88cff9b98130841", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "150770a30ae197138efec5b17b4431ec0c92a2c3d8ef74c7b88cff9b98130841", kill_on_drop: false }`
[INFO] [stdout] 150770a30ae197138efec5b17b4431ec0c92a2c3d8ef74c7b88cff9b98130841
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=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:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 01447f2da2e705cc162b7bffb26179210f97a1d8208c44cbad86a687daffc43b
[INFO] running `Command { std: "docker" "start" "-a" "01447f2da2e705cc162b7bffb26179210f97a1d8208c44cbad86a687daffc43b", kill_on_drop: false }`
[INFO] [stderr] warning: unused imports: `Write` and `self`
[INFO] [stderr]  --> src/cli/simulation_mode.rs:3:15
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::io::{self, Write};
[INFO] [stderr]   |               ^^^^  ^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `ProgressBar` and `ProgressStyle`
[INFO] [stderr]  --> src/cli/simulation_mode.rs:5:17
[INFO] [stderr]   |
[INFO] [stderr] 5 | use indicatif::{ProgressBar, ProgressStyle};
[INFO] [stderr]   |                 ^^^^^^^^^^^  ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `log::info`
[INFO] [stderr]  --> src/cli/simulation_mode.rs:6:5
[INFO] [stderr]   |
[INFO] [stderr] 6 | use log::info;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `get_input_with_default`
[INFO] [stderr]  --> src/cli/simulation_mode.rs:8:35
[INFO] [stderr]   |
[INFO] [stderr] 8 | use crate::cli::menu::{get_input, get_input_with_default, get_number_input, get_bool_input, display_message};
[INFO] [stderr]   |                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `modify_scoring_rules`
[INFO] [stderr]   --> src/cli/simulation_mode.rs:11:63
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::rules::custom::{create_custom_rules, modify_rules, modify_scoring_rules};
[INFO] [stderr]    |                                                               ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `list_results`
[INFO] [stderr]   --> src/cli/simulation_mode.rs:16:45
[INFO] [stderr]    |
[INFO] [stderr] 16 | use crate::storage::results::{save_results, list_results};
[INFO] [stderr]    |                                             ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/cli/simulation_mode.rs:281:9
[INFO] [stderr]     |
[INFO] [stderr] 281 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Write` and `self`
[INFO] [stderr]  --> src/cli/dice_input_mode.rs:3:15
[INFO] [stderr]   |
[INFO] [stderr] 3 | use std::io::{self, Write};
[INFO] [stderr]   |               ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `log::info`
[INFO] [stderr]  --> src/cli/dice_input_mode.rs:5:5
[INFO] [stderr]   |
[INFO] [stderr] 5 | use log::info;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `get_input_with_default`
[INFO] [stderr]  --> src/cli/dice_input_mode.rs:7:35
[INFO] [stderr]   |
[INFO] [stderr] 7 | use crate::cli::menu::{get_input, get_input_with_default, get_number_input, get_bool_input, display_message};
[INFO] [stderr]   |                                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ScoringRules`
[INFO] [stderr]   --> src/cli/dice_input_mode.rs:11:31
[INFO] [stderr]    |
[INFO] [stderr] 11 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stderr]    |                               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `find_optimal_move`
[INFO] [stderr]   --> src/cli/dice_input_mode.rs:14:35
[INFO] [stderr]    |
[INFO] [stderr] 14 | use crate::simulation::strategy::{find_optimal_move, get_move_recommendation};
[INFO] [stderr]    |                                   ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `super::*`
[INFO] [stderr]    --> src/cli/dice_input_mode.rs:296:9
[INFO] [stderr]     |
[INFO] [stderr] 296 |     use super::*;
[INFO] [stderr]     |         ^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `anyhow`
[INFO] [stderr]  --> src/cli/game_mode.rs:3:22
[INFO] [stderr]   |
[INFO] [stderr] 3 | use anyhow::{Result, anyhow};
[INFO] [stderr]   |                      ^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Write` and `self`
[INFO] [stderr]   --> src/cli/game_mode.rs:13:15
[INFO] [stderr]    |
[INFO] [stderr] 13 | use std::io::{self, Write}; // Required for stdout().flush() if used, but not directly used in current printl!s
[INFO] [stderr]    |               ^^^^  ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `menu::run_menu`
[INFO] [stderr]   --> src/cli/mod.rs:14:9
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub use menu::run_menu;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `simulation_mode::run_simulation_mode`
[INFO] [stderr]   --> src/cli/mod.rs:15:9
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub use simulation_mode::run_simulation_mode;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `dice_input_mode::run_dice_input_mode`
[INFO] [stderr]   --> src/cli/mod.rs:16:9
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub use dice_input_mode::run_dice_input_mode;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `game_mode::run_game_mode`
[INFO] [stderr]   --> src/cli/mod.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub use game_mode::run_game_mode; // Added Game Mode
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `Deserialize` and `Serialize`
[INFO] [stderr]  --> src/game/dice.rs:4:13
[INFO] [stderr]   |
[INFO] [stderr] 4 | use serde::{Serialize, Deserialize};
[INFO] [stderr]   |             ^^^^^^^^^  ^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Die`
[INFO] [stderr]  --> src/game/state.rs:5:25
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::game::dice::{Die, DiceSet};
[INFO] [stderr]   |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Die`
[INFO] [stderr]  --> src/game/moves.rs:5:25
[INFO] [stderr]   |
[INFO] [stderr] 5 | use crate::game::dice::{Die, DiceSet};
[INFO] [stderr]   |                         ^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ScoringRules`
[INFO] [stderr]  --> src/game/scoring.rs:4:31
[INFO] [stderr]   |
[INFO] [stderr] 4 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stderr]   |                               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `DiceSet`, `Die`, and `roll_dice`
[INFO] [stderr]   --> src/game/mod.rs:15:16
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub use dice::{Die, DiceSet, roll_dice};
[INFO] [stderr]    |                ^^^  ^^^^^^^  ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `scoring::calculate_score`
[INFO] [stderr]   --> src/game/mod.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub use scoring::calculate_score;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `Path`
[INFO] [stderr]  --> src/rules/storage.rs:5:17
[INFO] [stderr]   |
[INFO] [stderr] 5 | use std::path::{Path, PathBuf};
[INFO] [stderr]   |                 ^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `ScoringRules`
[INFO] [stderr]  --> src/rules/storage.rs:9:31
[INFO] [stderr]   |
[INFO] [stderr] 9 | use crate::rules::{GameRules, ScoringRules};
[INFO] [stderr]   |                               ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `default::default_rules`
[INFO] [stderr]   --> src/rules/mod.rs:16:9
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub use default::default_rules;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `custom::create_custom_rules`
[INFO] [stderr]   --> src/rules/mod.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub use custom::create_custom_rules;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `load_rules` and `save_rules`
[INFO] [stderr]   --> src/rules/mod.rs:18:19
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub use storage::{save_rules, load_rules};
[INFO] [stderr]    |                   ^^^^^^^^^^  ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `rand::Rng`
[INFO] [stderr]  --> src/simulation/strategy.rs:4:5
[INFO] [stderr]   |
[INFO] [stderr] 4 | use rand::Rng;
[INFO] [stderr]   |     ^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `count_dice`
[INFO] [stderr]  --> src/simulation/strategy.rs:7:36
[INFO] [stderr]   |
[INFO] [stderr] 7 | use crate::game::dice::{roll_dice, count_dice};
[INFO] [stderr]   |                                    ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `find_best_scoring_combination`
[INFO] [stderr]   --> src/simulation/strategy.rs:10:45
[INFO] [stderr]    |
[INFO] [stderr] 10 | use crate::game::scoring::{calculate_score, find_best_scoring_combination};
[INFO] [stderr]    |                                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `crate::game::state::GameState`
[INFO] [stderr]  --> src/simulation/statistics.rs:7:5
[INFO] [stderr]   |
[INFO] [stderr] 7 | use crate::game::state::GameState;
[INFO] [stderr]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `engine::run_simulation`
[INFO] [stderr]   --> src/simulation/mod.rs:16:9
[INFO] [stderr]    |
[INFO] [stderr] 16 | pub use engine::run_simulation;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `strategy::evaluate_strategy`
[INFO] [stderr]   --> src/simulation/mod.rs:17:9
[INFO] [stderr]    |
[INFO] [stderr] 17 | pub use strategy::evaluate_strategy;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `statistics::collect_statistics`
[INFO] [stderr]   --> src/simulation/mod.rs:18:9
[INFO] [stderr]    |
[INFO] [stderr] 18 | pub use statistics::collect_statistics;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused imports: `load_results` and `save_results`
[INFO] [stderr]   --> src/storage/mod.rs:14:19
[INFO] [stderr]    |
[INFO] [stderr] 14 | pub use results::{save_results, load_results};
[INFO] [stderr]    |                   ^^^^^^^^^^^^  ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused import: `format::StorageFormat`
[INFO] [stderr]   --> src/storage/mod.rs:15:9
[INFO] [stderr]    |
[INFO] [stderr] 15 | pub use format::StorageFormat;
[INFO] [stderr]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num_dice`
[INFO] [stderr]   --> src/game/state.rs:25:16
[INFO] [stderr]    |
[INFO] [stderr] 25 |     pub fn new(num_dice: u32) -> Self {
[INFO] [stderr]    |                ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_dice`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `num_dice`
[INFO] [stderr]   --> src/game/state.rs:36:39
[INFO] [stderr]    |
[INFO] [stderr] 36 |     pub fn new_turn(total_score: u32, num_dice: u32) -> Self {
[INFO] [stderr]    |                                       ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_num_dice`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]   --> src/game/moves.rs:55:21
[INFO] [stderr]    |
[INFO] [stderr] 55 |                 let mut new_state = GameState::new_turn(
[INFO] [stderr]    |                     ----^^^^^^^^^
[INFO] [stderr]    |                     |
[INFO] [stderr]    |                     help: remove this `mut`
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `best_combination`
[INFO] [stderr]    --> src/game/scoring.rs:281:14
[INFO] [stderr]     |
[INFO] [stderr] 281 |         let (best_combination, best_score) = find_best_scoring_combination(&dice, &rules);
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_combination`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `best_combination`
[INFO] [stderr]    --> src/game/scoring.rs:285:14
[INFO] [stderr]     |
[INFO] [stderr] 285 |         let (best_combination, best_score) = find_best_scoring_combination(&dice, &rules);
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_combination`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `best_combination`
[INFO] [stderr]    --> src/game/scoring.rs:289:14
[INFO] [stderr]     |
[INFO] [stderr] 289 |         let (best_combination, best_score) = find_best_scoring_combination(&dice, &rules);
[INFO] [stderr]     |              ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_best_combination`
[INFO] [stderr] 
[INFO] [stderr] warning: value assigned to `state` is never read
[INFO] [stderr]    --> src/simulation/engine.rs:134:21
[INFO] [stderr]     |
[INFO] [stderr] 134 |     let mut state = GameState::new(rules.num_dice);
[INFO] [stderr]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = help: maybe it is overwritten before being read?
[INFO] [stderr]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `results`
[INFO] [stderr]    --> src/simulation/engine.rs:337:21
[INFO] [stderr]     |
[INFO] [stderr] 337 |         let (score, results) = simulate_turn(&state, &rules);
[INFO] [stderr]     |                     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_results`
[INFO] [stderr] 
[INFO] [stderr] warning: variable does not need to be mutable
[INFO] [stderr]    --> src/simulation/strategy.rs:237:9
[INFO] [stderr]     |
[INFO] [stderr] 237 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ----^^^
[INFO] [stderr]     |         |
[INFO] [stderr]     |         help: remove this `mut`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rng`
[INFO] [stderr]    --> src/simulation/strategy.rs:237:9
[INFO] [stderr]     |
[INFO] [stderr] 237 |     let mut rng = rand::thread_rng();
[INFO] [stderr]     |         ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_rng`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `rules`
[INFO] [stderr]    --> src/simulation/statistics.rs:202:5
[INFO] [stderr]     |
[INFO] [stderr] 202 |     rules: &GameRules,
[INFO] [stderr]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_rules`
[INFO] [stderr] 
[INFO] [stderr] warning: unused variable: `state_hash`
[INFO] [stderr]    --> src/simulation/statistics.rs:206:10
[INFO] [stderr]     |
[INFO] [stderr] 206 |     for (state_hash, result) in results {
[INFO] [stderr]     |          ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_state_hash`
[INFO] [stderr] 
[INFO] [stderr] warning: function `load_simulation_results` is never used
[INFO] [stderr]    --> src/cli/dice_input_mode.rs:225:4
[INFO] [stderr]     |
[INFO] [stderr] 225 | fn load_simulation_results() -> Result<()> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: function `run_quick_simulation` is never used
[INFO] [stderr]    --> src/cli/dice_input_mode.rs:278:4
[INFO] [stderr]     |
[INFO] [stderr] 278 | fn run_quick_simulation(state: &GameState, rules: &GameRules) -> Result<()> {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: associated functions `win` and `incomplete` are never used
[INFO] [stderr]   --> src/simulation/mod.rs:45:12
[INFO] [stderr]    |
[INFO] [stderr] 33 | impl SimulationResult {
[INFO] [stderr]    | --------------------- associated functions in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 45 |     pub fn win(score: u32) -> Self {
[INFO] [stderr]    |            ^^^
[INFO] [stderr] ...
[INFO] [stderr] 55 |     pub fn incomplete(score: u32) -> Self {
[INFO] [stderr]    |            ^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_move` is never used
[INFO] [stderr]    --> src/simulation/strategy.rs:131:4
[INFO] [stderr]     |
[INFO] [stderr] 131 | fn evaluate_move(m: &Move, state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_keep` is never used
[INFO] [stderr]    --> src/simulation/strategy.rs:196:4
[INFO] [stderr]     |
[INFO] [stderr] 196 | fn evaluate_keep(dice: &[u8], state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_roll_all` is never used
[INFO] [stderr]    --> src/simulation/strategy.rs:221:4
[INFO] [stderr]     |
[INFO] [stderr] 221 | fn evaluate_roll_all(state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `monte_carlo_evaluation` is never used
[INFO] [stderr]    --> src/simulation/strategy.rs:286:4
[INFO] [stderr]     |
[INFO] [stderr] 286 | fn monte_carlo_evaluation(state: &GameState, rules: &GameRules) -> (f64, f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: function `evaluate_state_with_depth` is never used
[INFO] [stderr]    --> src/simulation/strategy.rs:383:4
[INFO] [stderr]     |
[INFO] [stderr] 383 | fn evaluate_state_with_depth(state: &GameState, rules: &GameRules, depth: usize) -> (f64, f64, f64) {
[INFO] [stderr]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `content_type` is never used
[INFO] [stderr]   --> src/storage/format.rs:35:12
[INFO] [stderr]    |
[INFO] [stderr] 24 | impl StorageFormat {
[INFO] [stderr]    | ------------------ method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 35 |     pub fn content_type(&self) -> &'static str {
[INFO] [stderr]    |            ^^^^^^^^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: method `clear` is never used
[INFO] [stderr]    --> src/storage/format.rs:137:12
[INFO] [stderr]     |
[INFO] [stderr] 105 | impl StorageContainer {
[INFO] [stderr]     | --------------------- method in this implementation
[INFO] [stderr] ...
[INFO] [stderr] 137 |     pub fn clear(&mut self) {
[INFO] [stderr]     |            ^^^^^
[INFO] [stderr] 
[INFO] [stderr] warning: comparison is useless due to type limits
[INFO] [stderr]    --> src/simulation/engine.rs:341:17
[INFO] [stderr]     |
[INFO] [stderr] 341 |         assert!(score >= 0);
[INFO] [stderr]     |                 ^^^^^^^^^^
[INFO] [stderr]     |
[INFO] [stderr]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `farkle` (bin "farkle" test) generated 62 warnings (run `cargo fix --bin "farkle" -p farkle --tests` to apply 50 suggestions)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.29s
[INFO] [stderr]      Running unittests src/main.rs (/opt/rustwide/target/debug/deps/farkle-731f1f5fe7798acd)
[INFO] [stdout] 
[INFO] [stdout] running 69 tests
[INFO] [stdout] test cli::menu::tests::test_menu_option ... ok
[INFO] [stdout] test game::dice::tests::test_is_straight ... ok
[INFO] [stdout] test game::dice::tests::test_max_of_a_kind ... ok
[INFO] [stdout] test game::dice::tests::test_is_two_triplets ... ok
[INFO] [stdout] test game::dice::tests::test_roll_dice ... ok
[INFO] [stdout] test game::moves::tests::test_generate_moves ... ok
[INFO] [stdout] test game::moves::tests::test_bank_move ... ok
[INFO] [stdout] test game::moves::tests::test_roll_all_move ... ok
[INFO] [stdout] test game::moves::tests::test_keep_move ... ok
[INFO] [stdout] test game::scoring::tests::test_calculate_score_five_of_a_kind ... ok
[INFO] [stdout] test game::scoring::tests::test_calculate_score_mixed ... ok
[INFO] [stdout] test game::scoring::tests::test_calculate_score_singles ... ok
[INFO] [stdout] test game::scoring::tests::test_calculate_score_six_of_a_kind ... ok
[INFO] [stdout] test game::state::tests::test_new_game_state ... ok
[INFO] [stdout] test game::scoring::tests::test_calculate_score_special_combinations ... ok
[INFO] [stdout] test game::state::tests::test_can_roll_again ... ok
[INFO] [stdout] test game::state::tests::test_can_bank ... ok
[INFO] [stdout] test game::dice::tests::test_is_three_pairs ... ok
[INFO] [stdout] test game::dice::tests::test_count_dice ... ok
[INFO] [stdout] test game::scoring::tests::test_has_scoring_combination ... ok
[INFO] [stdout] test game::scoring::tests::test_matches_pattern ... ok
[INFO] [stdout] test game::state::tests::test_all_dice_used ... ok
[INFO] [stdout] test game::scoring::tests::test_calculate_score_three_of_a_kind ... ok
[INFO] [stdout] test game::state::tests::test_new_turn ... ok
[INFO] [stdout] test game::state::tests::test_hash ... ok
[INFO] [stdout] test rules::custom::tests::test_create_custom_scoring_rules ... ok
[INFO] [stdout] test rules::custom::tests::test_add_custom_combination ... ok
[INFO] [stdout] test game::state::tests::test_has_won ... ok
[INFO] [stdout] test rules::custom::tests::test_is_valid_pattern ... ok
[INFO] [stdout] test rules::custom::tests::test_remove_custom_combination ... ok
[INFO] [stdout] test rules::custom::tests::test_validate_rules ... ok
[INFO] [stdout] test rules::custom::tests::test_modify_rules ... ok
[INFO] [stdout] test game::scoring::tests::test_find_best_scoring_combination ... ok
[INFO] [stdout] test rules::custom::tests::test_validate_scoring_rules ... ok
[INFO] [stdout] test rules::custom::tests::test_modify_scoring_rules ... ok
[INFO] [stdout] test rules::custom::tests::test_create_custom_rules ... ok
[INFO] [stdout] test game::scoring::tests::test_calculate_score_four_of_a_kind ... ok
[INFO] [stdout] test rules::default::tests::test_challenging_rules ... ok
[INFO] [stdout] test rules::default::tests::test_default_rules ... ok
[INFO] [stdout] test rules::default::tests::test_get_rule_presets ... ok
[INFO] [stdout] test rules::default::tests::test_simplified_rules ... ok
[INFO] [stdout] test rules::default::tests::test_variant_rules ... ok
[INFO] [stdout] test simulation::statistics::tests::test_analyze_dice_combinations ... ok
[INFO] [stdout] test simulation::statistics::tests::test_analyze_strategies ... ok
[INFO] [stdout] test simulation::statistics::tests::test_generate_statistics_report ... ok
[INFO] [stdout] test simulation::statistics::tests::test_simulation_statistics ... ok
[INFO] [stdout] test simulation::statistics::tests::test_collect_statistics ... ok
[INFO] [stdout] test simulation::statistics::tests::test_format_dice_combination ... ok
[INFO] [stdout] test simulation::strategy::tests::test_evaluate_bank ... ok
[INFO] [stdout] test storage::format::tests::test_storage_metadata ... ok
[INFO] [stdout] test storage::format::tests::test_storage_container ... ok
[INFO] [stdout] test storage::format::tests::test_storage_format ... ok
[INFO] [stdout] test game::state::tests::test_is_on_board ... ok
[INFO] [stdout] test simulation::strategy::tests::test_evaluate_strategy ... ok
[INFO] [stdout] test simulation::strategy::tests::test_get_move_recommendation ... ok
[INFO] [stdout] test simulation::strategy::tests::test_find_optimal_move ... ok
[INFO] [stdout] test rules::storage::tests::test_delete_rules ... FAILED
[INFO] [stdout] test storage::results::tests::test_delete_results ... FAILED
[INFO] [stdout] test storage::results::tests::test_save_and_load_results_compressed ... FAILED
[INFO] [stdout] test storage::results::tests::test_save_and_load_results_binary ... FAILED
[INFO] [stdout] test rules::storage::tests::test_init_rule_storage ... FAILED
[INFO] [stdout] test storage::results::tests::test_list_results ... FAILED
[INFO] [stdout] test rules::storage::tests::test_save_and_load_rules ... FAILED
[INFO] [stdout] test rules::storage::tests::test_save_and_load_preset ... FAILED
[INFO] [stdout] test rules::storage::tests::test_list_rules ... FAILED
[INFO] [stdout] test storage::results::tests::test_save_and_load_results_json ... FAILED
[INFO] [stdout] test simulation::engine::tests::test_simulate_turn ... ok
[INFO] [stdout] test simulation::engine::tests::test_quick_simulate_state ... ok
[INFO] [stdout] test simulation::engine::tests::test_run_simulation ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- rules::storage::tests::test_delete_rules stdout ----
[INFO] [stdout] Error: Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error as core::convert::From<std::io::error::Error>>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<(), anyhow::Error> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible, std::io::error::Error>>>::from_residual
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:2189:27
[INFO] [stdout]    2: farkle::storage::ensure_dir_exists::<&std::path::PathBuf>
[INFO] [stdout]              at ./src/storage/mod.rs:42:9
[INFO] [stdout]    3: farkle::rules::storage::save_rules
[INFO] [stdout]              at ./src/rules/storage.rs:48:5
[INFO] [stdout]    4: farkle::rules::storage::tests::test_delete_rules
[INFO] [stdout]              at ./src/rules/storage.rs:301:9
[INFO] [stdout]    5: farkle::rules::storage::tests::test_delete_rules::{closure#0}
[INFO] [stdout]              at ./src/rules/storage.rs:295:31
[INFO] [stdout]    6: <farkle::rules::storage::tests::test_delete_rules::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- storage::results::tests::test_delete_results stdout ----
[INFO] [stdout] Error: Failed to create file: /opt/rustwide/workdir/data/results/default/test_delete.json
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <std::io::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<std::fs::File, std::io::error::Error> as anyhow::Context<std::fs::File, std::io::error::Error>>::with_context::<alloc::string::String, farkle::storage::results::save_json::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/context.rs:65:37
[INFO] [stdout]    2: farkle::storage::results::save_json
[INFO] [stdout]              at ./src/storage/results.rs:84:10
[INFO] [stdout]    3: farkle::storage::results::save_results
[INFO] [stdout]              at ./src/storage/results.rs:73:32
[INFO] [stdout]    4: farkle::storage::results::tests::test_delete_results
[INFO] [stdout]              at ./src/storage/results.rs:408:9
[INFO] [stdout]    5: farkle::storage::results::tests::test_delete_results::{closure#0}
[INFO] [stdout]              at ./src/storage/results.rs:402:33
[INFO] [stdout]    6: <farkle::storage::results::tests::test_delete_results::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- storage::results::tests::test_save_and_load_results_compressed stdout ----
[INFO] [stdout] Error: Failed to create file: /opt/rustwide/workdir/data/results/default/test_compressed.gz
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <std::io::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<std::fs::File, std::io::error::Error> as anyhow::Context<std::fs::File, std::io::error::Error>>::with_context::<alloc::string::String, farkle::storage::results::save_compressed::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/context.rs:65:37
[INFO] [stdout]    2: farkle::storage::results::save_compressed
[INFO] [stdout]              at ./src/storage/results.rs:108:10
[INFO] [stdout]    3: farkle::storage::results::save_results
[INFO] [stdout]              at ./src/storage/results.rs:75:38
[INFO] [stdout]    4: farkle::storage::results::tests::test_save_and_load_results_compressed
[INFO] [stdout]              at ./src/storage/results.rs:388:9
[INFO] [stdout]    5: farkle::storage::results::tests::test_save_and_load_results_compressed::{closure#0}
[INFO] [stdout]              at ./src/storage/results.rs:382:51
[INFO] [stdout]    6: <farkle::storage::results::tests::test_save_and_load_results_compressed::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- storage::results::tests::test_save_and_load_results_binary stdout ----
[INFO] [stdout] Error: Failed to create file: /opt/rustwide/workdir/data/results/default/test_binary.bin
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <std::io::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<std::fs::File, std::io::error::Error> as anyhow::Context<std::fs::File, std::io::error::Error>>::with_context::<alloc::string::String, farkle::storage::results::save_binary::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/context.rs:65:37
[INFO] [stdout]    2: farkle::storage::results::save_binary
[INFO] [stdout]              at ./src/storage/results.rs:96:10
[INFO] [stdout]    3: farkle::storage::results::save_results
[INFO] [stdout]              at ./src/storage/results.rs:74:34
[INFO] [stdout]    4: farkle::storage::results::tests::test_save_and_load_results_binary
[INFO] [stdout]              at ./src/storage/results.rs:368:9
[INFO] [stdout]    5: farkle::storage::results::tests::test_save_and_load_results_binary::{closure#0}
[INFO] [stdout]              at ./src/storage/results.rs:362:47
[INFO] [stdout]    6: <farkle::storage::results::tests::test_save_and_load_results_binary::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- rules::storage::tests::test_init_rule_storage stdout ----
[INFO] [stdout] Error: Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error as core::convert::From<std::io::error::Error>>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<(), anyhow::Error> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible, std::io::error::Error>>>::from_residual
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:2189:27
[INFO] [stdout]    2: farkle::storage::ensure_dir_exists::<std::path::PathBuf>
[INFO] [stdout]              at ./src/storage/mod.rs:42:9
[INFO] [stdout]    3: farkle::rules::storage::init_rule_storage
[INFO] [stdout]              at ./src/rules/storage.rs:240:5
[INFO] [stdout]    4: farkle::rules::storage::tests::test_init_rule_storage
[INFO] [stdout]              at ./src/rules/storage.rs:361:9
[INFO] [stdout]    5: farkle::rules::storage::tests::test_init_rule_storage::{closure#0}
[INFO] [stdout]              at ./src/rules/storage.rs:357:36
[INFO] [stdout]    6: <farkle::rules::storage::tests::test_init_rule_storage::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- storage::results::tests::test_list_results stdout ----
[INFO] [stdout] Error: Failed to create file: /opt/rustwide/workdir/data/results/default/test_list1.json
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <std::io::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<std::fs::File, std::io::error::Error> as anyhow::Context<std::fs::File, std::io::error::Error>>::with_context::<alloc::string::String, farkle::storage::results::save_json::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/context.rs:65:37
[INFO] [stdout]    2: farkle::storage::results::save_json
[INFO] [stdout]              at ./src/storage/results.rs:84:10
[INFO] [stdout]    3: farkle::storage::results::save_results
[INFO] [stdout]              at ./src/storage/results.rs:73:32
[INFO] [stdout]    4: farkle::storage::results::tests::test_list_results
[INFO] [stdout]              at ./src/storage/results.rs:427:9
[INFO] [stdout]    5: farkle::storage::results::tests::test_list_results::{closure#0}
[INFO] [stdout]              at ./src/storage/results.rs:421:31
[INFO] [stdout]    6: <farkle::storage::results::tests::test_list_results::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- rules::storage::tests::test_save_and_load_rules stdout ----
[INFO] [stdout] Error: Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error as core::convert::From<std::io::error::Error>>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<(), anyhow::Error> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible, std::io::error::Error>>>::from_residual
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:2189:27
[INFO] [stdout]    2: farkle::storage::ensure_dir_exists::<&std::path::PathBuf>
[INFO] [stdout]              at ./src/storage/mod.rs:42:9
[INFO] [stdout]    3: farkle::rules::storage::save_rules
[INFO] [stdout]              at ./src/rules/storage.rs:48:5
[INFO] [stdout]    4: farkle::rules::storage::tests::test_save_and_load_rules
[INFO] [stdout]              at ./src/rules/storage.rs:282:9
[INFO] [stdout]    5: farkle::rules::storage::tests::test_save_and_load_rules::{closure#0}
[INFO] [stdout]              at ./src/rules/storage.rs:275:38
[INFO] [stdout]    6: <farkle::rules::storage::tests::test_save_and_load_rules::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- rules::storage::tests::test_save_and_load_preset stdout ----
[INFO] [stdout] Error: Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error as core::convert::From<std::io::error::Error>>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<(), anyhow::Error> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible, std::io::error::Error>>>::from_residual
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:2189:27
[INFO] [stdout]    2: farkle::storage::ensure_dir_exists::<&std::path::PathBuf>
[INFO] [stdout]              at ./src/storage/mod.rs:42:9
[INFO] [stdout]    3: farkle::rules::storage::save_preset
[INFO] [stdout]              at ./src/rules/storage.rs:216:5
[INFO] [stdout]    4: farkle::rules::storage::tests::test_save_and_load_preset
[INFO] [stdout]              at ./src/rules/storage.rs:344:9
[INFO] [stdout]    5: farkle::rules::storage::tests::test_save_and_load_preset::{closure#0}
[INFO] [stdout]              at ./src/rules/storage.rs:337:39
[INFO] [stdout]    6: <farkle::rules::storage::tests::test_save_and_load_preset::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- rules::storage::tests::test_list_rules stdout ----
[INFO] [stdout] Error: Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <anyhow::Error as core::convert::From<std::io::error::Error>>::from
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<(), anyhow::Error> as core::ops::try_trait::FromResidual<core::result::Result<core::convert::Infallible, std::io::error::Error>>>::from_residual
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/result.rs:2189:27
[INFO] [stdout]    2: farkle::storage::ensure_dir_exists::<&std::path::PathBuf>
[INFO] [stdout]              at ./src/storage/mod.rs:42:9
[INFO] [stdout]    3: farkle::rules::storage::save_rules
[INFO] [stdout]              at ./src/rules/storage.rs:48:5
[INFO] [stdout]    4: farkle::rules::storage::tests::test_list_rules
[INFO] [stdout]              at ./src/rules/storage.rs:320:9
[INFO] [stdout]    5: farkle::rules::storage::tests::test_list_rules::{closure#0}
[INFO] [stdout]              at ./src/rules/storage.rs:314:29
[INFO] [stdout]    6: <farkle::rules::storage::tests::test_list_rules::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] ---- storage::results::tests::test_save_and_load_results_json stdout ----
[INFO] [stdout] Error: Failed to create file: /opt/rustwide/workdir/data/results/default/test_results.json
[INFO] [stdout] 
[INFO] [stdout] Caused by:
[INFO] [stdout]     Read-only file system (os error 30)
[INFO] [stdout] 
[INFO] [stdout] Stack backtrace:
[INFO] [stdout]    0: <std::io::error::Error as anyhow::context::ext::StdError>::ext_context::<alloc::string::String>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/backtrace.rs:27:14
[INFO] [stdout]    1: <core::result::Result<std::fs::File, std::io::error::Error> as anyhow::Context<std::fs::File, std::io::error::Error>>::with_context::<alloc::string::String, farkle::storage::results::save_json::{closure#0}>
[INFO] [stdout]              at /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/anyhow-1.0.98/src/context.rs:65:37
[INFO] [stdout]    2: farkle::storage::results::save_json
[INFO] [stdout]              at ./src/storage/results.rs:84:10
[INFO] [stdout]    3: farkle::storage::results::save_results
[INFO] [stdout]              at ./src/storage/results.rs:73:32
[INFO] [stdout]    4: farkle::storage::results::tests::test_save_and_load_results_json
[INFO] [stdout]              at ./src/storage/results.rs:346:9
[INFO] [stdout]    5: farkle::storage::results::tests::test_save_and_load_results_json::{closure#0}
[INFO] [stdout]              at ./src/storage/results.rs:340:45
[INFO] [stdout]    6: <farkle::storage::results::tests::test_save_and_load_results_json::{closure#0} as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    7: <fn() -> core::result::Result<(), alloc::string::String> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]    8: test::__rust_begin_short_backtrace::<core::result::Result<(), alloc::string::String>, fn() -> core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:663:18
[INFO] [stdout]    9: test::run_test_in_process::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:74
[INFO] [stdout]   10: <core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   11: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   12: std::panicking::catch_unwind::<core::result::Result<(), alloc::string::String>, core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   13: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<test::run_test_in_process::{closure#0}>, core::result::Result<(), alloc::string::String>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   14: test::run_test_in_process
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:686:27
[INFO] [stdout]   15: test::run_test::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:607:43
[INFO] [stdout]   16: test::run_test::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/test/src/lib.rs:637:41
[INFO] [stdout]   17: std::sys::backtrace::__rust_begin_short_backtrace::<test::run_test::{closure#1}, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   18: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:91:13
[INFO] [stdout]   19: <core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/panic/unwind_safe.rs:274:9
[INFO] [stdout]   20: std::panicking::catch_unwind::do_call::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:581:40
[INFO] [stdout]   21: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panicking.rs:544:19
[INFO] [stdout]   22: std::panic::catch_unwind::<core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/panic.rs:359:14
[INFO] [stdout]   23: std::thread::lifecycle::spawn_unchecked::<test::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/thread/lifecycle.rs:89:26
[INFO] [stdout]   24: <std::thread::lifecycle::spawn_unchecked<test::run_test::{closure#1}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   25: <alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output = ()> + core::marker::Send> as core::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/alloc/src/boxed.rs:2206:9
[INFO] [stdout]   26: <std::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]              at /rustc/db823df02fd0c2cf67b43025ac3fef3f2d743245/library/std/src/sys/thread/unix.rs:119:17
[INFO] [stdout]   27: <unknown>
[INFO] [stdout]   28: clone
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     rules::storage::tests::test_delete_rules
[INFO] [stdout]     rules::storage::tests::test_init_rule_storage
[INFO] [stdout]     rules::storage::tests::test_list_rules
[INFO] [stdout]     rules::storage::tests::test_save_and_load_preset
[INFO] [stdout]     rules::storage::tests::test_save_and_load_rules
[INFO] [stdout]     storage::results::tests::test_delete_results
[INFO] [stdout]     storage::results::tests::test_list_results
[INFO] [stdout]     storage::results::tests::test_save_and_load_results_binary
[INFO] [stdout]     storage::results::tests::test_save_and_load_results_compressed
[INFO] [stdout]     storage::results::tests::test_save_and_load_results_json
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 59 passed; 10 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.93s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--bin farkle`
[INFO] running `Command { std: "docker" "inspect" "01447f2da2e705cc162b7bffb26179210f97a1d8208c44cbad86a687daffc43b", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "01447f2da2e705cc162b7bffb26179210f97a1d8208c44cbad86a687daffc43b", kill_on_drop: false }`
[INFO] [stdout] 01447f2da2e705cc162b7bffb26179210f97a1d8208c44cbad86a687daffc43b
